Skip to content

Commit 96f673b

Browse files
authored
nes: refactor: remove ghNearbyNesProvider.ts (#1664)
* nes: refactor: move out `editWouldUndo` * nes: refactor: rename file to better reflect what it is
1 parent 1f7f899 commit 96f673b

File tree

4 files changed

+30
-32
lines changed

4 files changed

+30
-32
lines changed

src/extension/inlineEdits/common/ghNearbyNesProvider.tsx renamed to src/extension/inlineEdits/common/informationDelta.tsx

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,39 +3,11 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6-
import { StatelessNextEditDocument } from '../../../platform/inlineEdits/common/statelessNextEditProvider';
7-
import { LineEdit } from '../../../util/vs/editor/common/core/edits/lineEdit';
86
import { StringEdit } from '../../../util/vs/editor/common/core/edits/stringEdit';
97
import { OffsetRange } from '../../../util/vs/editor/common/core/ranges/offsetRange';
108

119
const N_GRAM_UNDO_RATIO_TO_FILTER_OUT = 0.7;
1210

13-
export function editWouldDeleteWhatWasJustInserted(activeDocument: StatelessNextEditDocument, lineEdit: LineEdit) {
14-
let edit = lineEdit.toEdit(activeDocument.documentAfterEdits);
15-
// ! important: reduce it to the minimal set of changes
16-
edit = edit.normalizeOnSource(activeDocument.documentAfterEdits.value);
17-
if (!editIsDeletion(edit)) {
18-
return false;
19-
}
20-
// We are deleting something. Is it what was just inserted?
21-
for (let i = activeDocument.recentEdits.edits.length - 1; i >= 0; i--) {
22-
const recentEdit = activeDocument.recentEdits.edits[i];
23-
const rebaseResult = edit.tryRebase(recentEdit);
24-
if (!rebaseResult) {
25-
// the edit we want to do cannot be rebased, which indicates that it would interfere with a recent edit
26-
return true;
27-
}
28-
edit = rebaseResult;
29-
}
30-
return false;
31-
}
32-
33-
function editIsDeletion(edit: StringEdit): boolean {
34-
const deletedChars = edit.replacements.reduce((acc, singleEdit) => acc + singleEdit.replaceRange.length, 0);
35-
const insertedChars = edit.replacements.reduce((acc, singleEdit) => acc + singleEdit.newText.length, 0);
36-
return insertedChars === 0 && deletedChars > 0;
37-
}
38-
3911
/**
4012
* Represents information loss/gain (4-grams) via an edit.
4113
*/

src/extension/inlineEdits/vscode-node/features/diagnosticsCompletionProcessor.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import { StringEdit } from '../../../../util/vs/editor/common/core/edits/stringE
3131
import { Position } from '../../../../util/vs/editor/common/core/position';
3232
import { OffsetRange } from '../../../../util/vs/editor/common/core/ranges/offsetRange';
3333
import { StringText } from '../../../../util/vs/editor/common/core/text/abstractText';
34-
import { getInformationDelta, InformationDelta } from '../../common/ghNearbyNesProvider';
34+
import { getInformationDelta, InformationDelta } from '../../common/informationDelta';
3535
import { RejectionCollector } from '../../common/rejectionCollector';
3636
import { IVSCodeObservableDocument, VSCodeWorkspace } from '../parts/vscodeWorkspace';
3737
import { AnyDiagnosticCompletionItem, AnyDiagnosticCompletionProvider } from './diagnosticsBasedCompletions/anyDiagnosticsCompletionProvider';

src/extension/xtab/node/xtabProvider.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import { LanguageContextLanguages, LanguageContextOptions } from '../../../platf
2323
import { InlineEditRequestLogContext } from '../../../platform/inlineEdits/common/inlineEditLogContext';
2424
import { ResponseProcessor } from '../../../platform/inlineEdits/common/responseProcessor';
2525
import { IStatelessNextEditProvider, NoNextEditReason, PushEdit, ShowNextEditPreference, StatelessNextEditDocument, StatelessNextEditRequest, StatelessNextEditResult, StatelessNextEditTelemetryBuilder } from '../../../platform/inlineEdits/common/statelessNextEditProvider';
26-
import { IgnoreEmptyLineAndLeadingTrailingWhitespaceChanges, IgnoreWhitespaceOnlyChanges } from '../../../platform/inlineEdits/common/statelessNextEditProviders';
26+
import { editWouldDeleteWhatWasJustInserted, IgnoreEmptyLineAndLeadingTrailingWhitespaceChanges, IgnoreWhitespaceOnlyChanges } from '../../../platform/inlineEdits/common/statelessNextEditProviders';
2727
import { ILanguageContextProviderService } from '../../../platform/languageContextProvider/common/languageContextProviderService';
2828
import { ILanguageDiagnosticsService } from '../../../platform/languages/common/languageDiagnosticsService';
2929
import { ContextKind, SnippetContext } from '../../../platform/languageServer/common/languageContextService';
@@ -52,7 +52,6 @@ import { OffsetRange } from '../../../util/vs/editor/common/core/ranges/offsetRa
5252
import { IInstantiationService } from '../../../util/vs/platform/instantiation/common/instantiation';
5353
import { Position as VscodePosition } from '../../../vscodeTypes';
5454
import { Delayer, DelaySession } from '../../inlineEdits/common/delayer';
55-
import { editWouldDeleteWhatWasJustInserted } from '../../inlineEdits/common/ghNearbyNesProvider';
5655
import { getOrDeduceSelectionFromLastEdit } from '../../inlineEdits/common/nearbyCursorInlineEditProvider';
5756
import { IgnoreImportChangesAspect } from '../../inlineEdits/node/importFiltering';
5857
import { createTaggedCurrentFileContentUsingPagedClipping, getUserPrompt, N_LINES_ABOVE, N_LINES_AS_CONTEXT, N_LINES_BELOW, PromptPieces } from '../common/promptCrafting';

src/platform/inlineEdits/common/statelessNextEditProviders.ts

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6-
import { LineReplacement } from '../../../util/vs/editor/common/core/edits/lineEdit';
6+
import { LineEdit, LineReplacement } from '../../../util/vs/editor/common/core/edits/lineEdit';
7+
import { StringEdit } from '../../../util/vs/editor/common/core/edits/stringEdit';
78
import { StatelessNextEditDocument } from './statelessNextEditProvider';
89

910
export class IgnoreEmptyLineAndLeadingTrailingWhitespaceChanges {
@@ -57,3 +58,29 @@ export class IgnoreWhitespaceOnlyChanges {
5758
return originalLines === newLines;
5859
}
5960
}
61+
62+
export function editWouldDeleteWhatWasJustInserted(activeDocument: StatelessNextEditDocument, lineEdit: LineEdit) {
63+
let edit = lineEdit.toEdit(activeDocument.documentAfterEdits);
64+
// ! important: reduce it to the minimal set of changes
65+
edit = edit.normalizeOnSource(activeDocument.documentAfterEdits.value);
66+
if (!editIsDeletion(edit)) {
67+
return false;
68+
}
69+
// We are deleting something. Is it what was just inserted?
70+
for (let i = activeDocument.recentEdits.edits.length - 1; i >= 0; i--) {
71+
const recentEdit = activeDocument.recentEdits.edits[i];
72+
const rebaseResult = edit.tryRebase(recentEdit);
73+
if (!rebaseResult) {
74+
// the edit we want to do cannot be rebased, which indicates that it would interfere with a recent edit
75+
return true;
76+
}
77+
edit = rebaseResult;
78+
}
79+
return false;
80+
}
81+
export function editIsDeletion(edit: StringEdit): boolean {
82+
const deletedChars = edit.replacements.reduce((acc, singleEdit) => acc + singleEdit.replaceRange.length, 0);
83+
const insertedChars = edit.replacements.reduce((acc, singleEdit) => acc + singleEdit.newText.length, 0);
84+
return insertedChars === 0 && deletedChars > 0;
85+
}
86+

0 commit comments

Comments
 (0)