Skip to content

Commit ccb0430

Browse files
committed
fix: fix autocomplete prefix
1 parent bb2db5f commit ccb0430

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

lib/adapters/autocomplete-adapter.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ export default class AutocompleteAdapter {
103103

104104
// We must update the replacement prefix as characters are added and removed
105105
const cache = this._suggestionCache.get(server)!;
106-
const replacementPrefix = request.editor.getTextInBufferRange([cache.originalBufferPoint, request.bufferPosition]);
106+
const replacementPrefix = request.editor.getTextInBufferRange([[cache.triggerPoint.row, cache.triggerPoint.column + cache.triggerChar.length], request.bufferPosition]);
107107
for (const suggestion of suggestions) {
108108
if (suggestion.customReplacmentPrefix) { // having this property means a custom range was provided
109109
const len = replacementPrefix.length;

test/adapters/autocomplete-adapter.test.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -504,6 +504,27 @@ describe('AutoCompleteAdapter', () => {
504504
result = (await autoCompleteAdapter.getSuggestions(server, customRequest))[0];
505505
expect(result.replacementPrefix).equals('ba');
506506
});
507+
508+
it('includesnon trigger character prefix in replacementPrefix', async () => {
509+
const customRequest = createRequest({ prefix: 'foo', position: new Point(0, 3) });
510+
customRequest.editor.setText('foo');
511+
sinon.stub(server.connection, 'completion').resolves([
512+
createCompletionItem('foobar'),
513+
]);
514+
let result = (await autoCompleteAdapter.getSuggestions(server, customRequest))[0];
515+
516+
expect(result.replacementPrefix).equals('foo');
517+
customRequest.editor.setTextInBufferRange([[0, 3], [0, 3]], 'b');
518+
customRequest.prefix = 'foob';
519+
customRequest.bufferPosition = new Point(0, 4);
520+
result = (await autoCompleteAdapter.getSuggestions(server, customRequest))[0];
521+
expect(result.replacementPrefix).equals('foob');
522+
customRequest.editor.setTextInBufferRange([[0, 4], [0, 4]], 'a');
523+
customRequest.prefix = 'fooba';
524+
customRequest.bufferPosition = new Point(0, 5);
525+
result = (await autoCompleteAdapter.getSuggestions(server, customRequest))[0];
526+
expect(result.replacementPrefix).equals('fooba');
527+
});
507528
});
508529

509530
describe('completionKindToSuggestionType', () => {

0 commit comments

Comments
 (0)