提交 88d72dbe 编写于 作者: J Joao Moreno

git: fix range staging timing issues

上级 8423993f
......@@ -254,10 +254,9 @@ export class CommandCenter {
const originalDocument = await workspace.openTextDocument(originalUri);
const diffs = await computeDiff(originalDocument, modifiedDocument);
const selections = textEditor.selections;
const selectedDiffs = diffs.filter(diff => {
const modifiedRange = diff.modifiedEndLineNumber === 0
? new Range(diff.modifiedStartLineNumber - 1, 0, diff.modifiedStartLineNumber - 1, 0)
? new Range(modifiedDocument.lineAt(diff.modifiedStartLineNumber - 1).range.end, modifiedDocument.lineAt(diff.modifiedStartLineNumber).range.start)
: new Range(modifiedDocument.lineAt(diff.modifiedStartLineNumber - 1).range.start, modifiedDocument.lineAt(diff.modifiedEndLineNumber - 1).range.end);
return selections.some(selection => !!selection.intersection(modifiedRange));
......
......@@ -6,6 +6,7 @@
'use strict';
import { workspace, Uri, Disposable, Event, EventEmitter } from 'vscode';
import { debounce } from './decorators';
import { Model } from './model';
export class GitContentProvider {
......@@ -15,7 +16,7 @@ export class GitContentProvider {
private onDidChangeEmitter = new EventEmitter<Uri>();
get onDidChange(): Event<Uri> { return this.onDidChangeEmitter.event; }
private uris = new Set<Uri>();
private uris: { [uri: string]: Uri } = Object.create(null) as { [uri: string]: Uri };
constructor(private model: Model) {
this.disposables.push(
......@@ -24,10 +25,11 @@ export class GitContentProvider {
);
}
private fireChangeEvents(arg): void {
for (let uri of this.uris) {
this.onDidChangeEmitter.fire(uri);
}
@debounce(300)
private fireChangeEvents(): void {
Object.keys(this.uris).forEach(key => {
this.onDidChangeEmitter.fire(this.uris[key]);
});
}
async provideTextDocumentContent(uri: Uri): Promise<string> {
......@@ -42,10 +44,10 @@ export class GitContentProvider {
try {
const result = await this.model.show(ref, uri);
this.uris.add(uri);
this.uris[uri.toString()] = uri;
return result;
} catch (err) {
this.uris.delete(uri);
delete this.uris[uri.toString()];
return '';
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册