mirror of
https://github.com/ckaczor/vscode-gitlens.git
synced 2026-01-22 01:35:38 -05:00
Adds alt+left and alt+right keyboarding for quickpicks
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
'use strict';
|
||||
import { Iterables } from '../system';
|
||||
import { QuickPickItem, QuickPickOptions, Uri, window } from 'vscode';
|
||||
import { Commands } from '../commands';
|
||||
import { Commands, Keyboard } from '../commands';
|
||||
import GitProvider, { GitCommit, GitLogCommit, GitUri } from '../gitProvider';
|
||||
import { CommitWithFileStatusQuickPickItem } from './gitQuickPicks';
|
||||
import { CommandQuickPickItem, getQuickPickIgnoreFocusOut, OpenFileCommandQuickPickItem, OpenFilesCommandQuickPickItem } from './quickPicks';
|
||||
@@ -55,19 +55,21 @@ export class CommitDetailsQuickPick {
|
||||
items.splice(0, 0, goBackCommand);
|
||||
}
|
||||
|
||||
const result = await window.showQuickPick(items, {
|
||||
await Keyboard.instance.enterScope(['left', goBackCommand]);
|
||||
|
||||
const pick = await window.showQuickPick(items, {
|
||||
matchOnDescription: true,
|
||||
matchOnDetail: true,
|
||||
placeHolder: `${commit.sha} \u2022 ${commit.author}, ${moment(commit.date).fromNow()} \u2022 ${commit.message}`,
|
||||
ignoreFocusOut: getQuickPickIgnoreFocusOut()
|
||||
// onDidSelectItem: (item: QuickPickItem) => {
|
||||
// if (item instanceof FileQuickPickItem) {
|
||||
// item.preview();
|
||||
// }
|
||||
// }
|
||||
ignoreFocusOut: getQuickPickIgnoreFocusOut(),
|
||||
onDidSelectItem: (item: QuickPickItem) => {
|
||||
Keyboard.instance.setKeyCommand('right', item);
|
||||
}
|
||||
} as QuickPickOptions);
|
||||
|
||||
return result;
|
||||
await Keyboard.instance.exitScope();
|
||||
|
||||
return pick;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -137,10 +139,19 @@ export class CommitFileDetailsQuickPick {
|
||||
items.splice(0, 0, goBackCommand);
|
||||
}
|
||||
|
||||
return await window.showQuickPick(items, {
|
||||
await Keyboard.instance.enterScope(['left', goBackCommand]);
|
||||
|
||||
const pick = await window.showQuickPick(items, {
|
||||
matchOnDescription: true,
|
||||
placeHolder: `${commit.getFormattedPath()} \u2022 ${isUncommitted ? 'Uncommitted \u21E8 ' : '' }${commit.sha} \u2022 ${commit.author}, ${moment(commit.date).fromNow()} \u2022 ${commit.message}`,
|
||||
ignoreFocusOut: getQuickPickIgnoreFocusOut()
|
||||
ignoreFocusOut: getQuickPickIgnoreFocusOut(),
|
||||
onDidSelectItem: (item: QuickPickItem) => {
|
||||
Keyboard.instance.setKeyCommand('right', item);
|
||||
}
|
||||
} as QuickPickOptions);
|
||||
|
||||
await Keyboard.instance.exitScope();
|
||||
|
||||
return pick;
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
'use strict';
|
||||
import { Iterables } from '../system';
|
||||
import { QuickPickOptions, Uri, window } from 'vscode';
|
||||
import { Commands } from '../commands';
|
||||
import { QuickPickItem, QuickPickOptions, Uri, window } from 'vscode';
|
||||
import { Commands, Keyboard } from '../commands';
|
||||
import { IGitLog } from '../gitProvider';
|
||||
import { CommitQuickPickItem } from './gitQuickPicks';
|
||||
import { CommandQuickPickItem, getQuickPickIgnoreFocusOut } from './quickPicks';
|
||||
@@ -37,13 +37,22 @@ export class FileHistoryQuickPick {
|
||||
items.splice(0, 0, goBackCommand);
|
||||
}
|
||||
|
||||
await Keyboard.instance.enterScope(['left', goBackCommand]);
|
||||
|
||||
const commit = Iterables.first(log.commits.values());
|
||||
|
||||
return await window.showQuickPick(items, {
|
||||
const pick = await window.showQuickPick(items, {
|
||||
matchOnDescription: true,
|
||||
matchOnDetail: true,
|
||||
placeHolder: commit.getFormattedPath(),
|
||||
ignoreFocusOut: getQuickPickIgnoreFocusOut()
|
||||
ignoreFocusOut: getQuickPickIgnoreFocusOut(),
|
||||
onDidSelectItem: (item: QuickPickItem) => {
|
||||
Keyboard.instance.setKeyCommand('right', item);
|
||||
}
|
||||
} as QuickPickOptions);
|
||||
|
||||
await Keyboard.instance.exitScope();
|
||||
|
||||
return pick;
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
'use strict';
|
||||
import { QuickPickItem, Uri } from 'vscode';
|
||||
import { getGitStatusIcon, GitCommit, GitFileStatus, GitUri } from '../gitProvider';
|
||||
import { openEditor } from './quickPicks';
|
||||
import { OpenFileCommandQuickPickItem } from './quickPicks';
|
||||
import * as moment from 'moment';
|
||||
import * as path from 'path';
|
||||
|
||||
@@ -18,31 +18,27 @@ export class CommitQuickPickItem implements QuickPickItem {
|
||||
}
|
||||
}
|
||||
|
||||
export class CommitWithFileStatusQuickPickItem implements QuickPickItem {
|
||||
|
||||
label: string;
|
||||
description: string;
|
||||
detail: string;
|
||||
export class CommitWithFileStatusQuickPickItem extends OpenFileCommandQuickPickItem {
|
||||
|
||||
fileName: string;
|
||||
sha: string;
|
||||
uri: GitUri;
|
||||
status: GitFileStatus;
|
||||
|
||||
constructor(commit: GitCommit, public fileName: string, public status: GitFileStatus) {
|
||||
constructor(commit: GitCommit, fileName: string, status: GitFileStatus) {
|
||||
const icon = getGitStatusIcon(status);
|
||||
this.label = `\u00a0\u00a0\u00a0\u00a0${icon}\u00a0\u00a0 ${path.basename(fileName)}`;
|
||||
|
||||
let directory = path.dirname(fileName);
|
||||
if (!directory || directory === '.') {
|
||||
directory = undefined;
|
||||
}
|
||||
|
||||
this.description = directory;
|
||||
super(GitUri.fromUri(Uri.file(path.resolve(commit.repoPath, fileName))), {
|
||||
label: `\u00a0\u00a0\u00a0\u00a0${icon}\u00a0\u00a0 ${path.basename(fileName)}`,
|
||||
description: directory
|
||||
});
|
||||
|
||||
this.fileName = fileName;
|
||||
this.sha = commit.sha;
|
||||
this.uri = GitUri.fromUri(Uri.file(path.resolve(commit.repoPath, fileName)));
|
||||
}
|
||||
|
||||
async preview(): Promise<{}> {
|
||||
return openEditor(this.uri, true);
|
||||
this.status = status;
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
'use strict';
|
||||
import { Iterables } from '../system';
|
||||
import { QuickPickOptions, Uri, window } from 'vscode';
|
||||
import { Commands } from '../commands';
|
||||
import { QuickPickItem, QuickPickOptions, Uri, window } from 'vscode';
|
||||
import { Commands, Keyboard } from '../commands';
|
||||
import { IGitLog } from '../gitProvider';
|
||||
import { CommitQuickPickItem } from './gitQuickPicks';
|
||||
import { CommandQuickPickItem, getQuickPickIgnoreFocusOut } from './quickPicks';
|
||||
@@ -25,11 +25,20 @@ export class RepoHistoryQuickPick {
|
||||
items.splice(0, 0, goBackCommand);
|
||||
}
|
||||
|
||||
return await window.showQuickPick(items, {
|
||||
await Keyboard.instance.enterScope(['left', goBackCommand]);
|
||||
|
||||
const pick = await window.showQuickPick(items, {
|
||||
matchOnDescription: true,
|
||||
matchOnDetail: true,
|
||||
placeHolder: 'Search by commit message, filename, or sha',
|
||||
ignoreFocusOut: getQuickPickIgnoreFocusOut()
|
||||
ignoreFocusOut: getQuickPickIgnoreFocusOut(),
|
||||
onDidSelectItem: (item: QuickPickItem) => {
|
||||
Keyboard.instance.setKeyCommand('right', item);
|
||||
}
|
||||
} as QuickPickOptions);
|
||||
|
||||
await Keyboard.instance.exitScope();
|
||||
|
||||
return pick;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
'use strict';
|
||||
import { Iterables } from '../system';
|
||||
import { QuickPickItem, QuickPickOptions, Uri, window } from 'vscode';
|
||||
import { Keyboard } from '../commands';
|
||||
import { getGitStatusIcon, GitFileStatusItem } from '../gitProvider';
|
||||
import { CommandQuickPickItem, getQuickPickIgnoreFocusOut, OpenFileCommandQuickPickItem, OpenFilesCommandQuickPickItem } from './quickPicks';
|
||||
import * as path from 'path';
|
||||
@@ -72,10 +73,19 @@ export class RepoStatusQuickPick {
|
||||
items.splice(0, 0, goBackCommand);
|
||||
}
|
||||
|
||||
return await window.showQuickPick(items, {
|
||||
await Keyboard.instance.enterScope(['left', goBackCommand]);
|
||||
|
||||
const pick = await window.showQuickPick(items, {
|
||||
matchOnDescription: true,
|
||||
placeHolder: statuses.length ? 'Repository has changes' : 'Repository has no changes',
|
||||
ignoreFocusOut: getQuickPickIgnoreFocusOut()
|
||||
ignoreFocusOut: getQuickPickIgnoreFocusOut(),
|
||||
onDidSelectItem: (item: QuickPickItem) => {
|
||||
Keyboard.instance.setKeyCommand('right', item);
|
||||
}
|
||||
} as QuickPickOptions);
|
||||
|
||||
await Keyboard.instance.exitScope();
|
||||
|
||||
return pick;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user