mirror of
https://github.com/ckaczor/vscode-gitlens.git
synced 2026-01-23 01:35:37 -05:00
Refactors commit quick pick commands
Splits showQuickCommitDetails into showQuickCommitDetails and showQuickCommitFileDetails Adds closeUnchangedFiles command Adds openChangedFiles command Adds diffDirectory command Adds contextual description to the `go back` commands Fixes #44 by adding a warning message about Git version requirements Fixes intermittent errors when adding active line annotations Fixes intermittent errors when opening multiple files via quick picks Updates dependencies Preps v2.11.0
This commit is contained in:
70
src/commands/closeUnchangedFiles.ts
Normal file
70
src/commands/closeUnchangedFiles.ts
Normal file
@@ -0,0 +1,70 @@
|
||||
'use strict';
|
||||
import { TextEditor, Uri, window } from 'vscode';
|
||||
import { ActiveEditorTracker } from '../activeEditorTracker';
|
||||
import { ActiveEditorCommand, Commands } from './commands';
|
||||
import { TextEditorComparer, UriComparer } from '../comparers';
|
||||
import { GitProvider } from '../gitProvider';
|
||||
import { Logger } from '../logger';
|
||||
import * as path from 'path';
|
||||
|
||||
export class CloseUnchangedFilesCommand extends ActiveEditorCommand {
|
||||
|
||||
constructor(private git: GitProvider, public repoPath: string) {
|
||||
super(Commands.CloseUnchangedFiles);
|
||||
}
|
||||
|
||||
async execute(editor: TextEditor, uri?: Uri, uris?: Uri[]) {
|
||||
if (!(uri instanceof Uri)) {
|
||||
uri = editor && editor.document && editor.document.uri;
|
||||
}
|
||||
|
||||
try {
|
||||
if (!uris) {
|
||||
const repoPath = await this.git.getRepoPathFromUri(uri, this.repoPath);
|
||||
if (!repoPath) return window.showWarningMessage(`Unable to close unchanged files`);
|
||||
|
||||
const statuses = await this.git.getStatusesForRepo(repoPath);
|
||||
if (!statuses) return window.showWarningMessage(`Unable to close unchanged files`);
|
||||
|
||||
uris = statuses.map(_ => Uri.file(path.resolve(repoPath, _.fileName)));
|
||||
}
|
||||
|
||||
const editorTracker = new ActiveEditorTracker();
|
||||
|
||||
let active = window.activeTextEditor;
|
||||
let editor = active;
|
||||
do {
|
||||
if (editor) {
|
||||
if ((editor.document && editor.document.isDirty) ||
|
||||
uris.some(_ => UriComparer.equals(_, editor.document && editor.document.uri))) {
|
||||
// If we didn't start with a valid editor, set one once we find it
|
||||
if (!active) {
|
||||
active = editor;
|
||||
}
|
||||
editor = await editorTracker.awaitNext(500);
|
||||
}
|
||||
else {
|
||||
if (active === editor) {
|
||||
active = undefined;
|
||||
}
|
||||
editor = await editorTracker.awaitClose(500);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (active === editor) {
|
||||
active = undefined;
|
||||
}
|
||||
editor = await editorTracker.awaitClose(500);
|
||||
}
|
||||
} while ((!active && !editor) || !TextEditorComparer.equals(active, editor, { useId: true, usePosition: true }));
|
||||
|
||||
editorTracker.dispose();
|
||||
|
||||
return undefined;
|
||||
}
|
||||
catch (ex) {
|
||||
Logger.error('[GitLens.CloseUnchangedFilesCommand]', ex);
|
||||
return window.showErrorMessage(`Unable to close unchanged files. See output channel for more details`);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user