Skip to content

Commit e79ea65

Browse files
authored
Merge pull request #100 from UziTech/fix-prefix
2 parents 4a6e160 + a100ce4 commit e79ea65

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.triggerPoint, request.bufferPosition]);
106+
const replacementPrefix = request.editor.getTextInBufferRange([cache.originalBufferPoint, 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
@@ -483,6 +483,27 @@ describe('AutoCompleteAdapter', () => {
483483
result = (await autoCompleteAdapter.getSuggestions(server, customRequest))[0];
484484
expect(result.replacementPrefix).equals('#al');
485485
});
486+
487+
it('does not include the triggerChar in replacementPrefix', async () => {
488+
const customRequest = createRequest({ prefix: '.', position: new Point(0, 4) });
489+
customRequest.editor.setText('foo.');
490+
server.capabilities.completionProvider!.triggerCharacters = ['.'];
491+
sinon.stub(server.connection, 'completion').resolves([
492+
createCompletionItem('bar'),
493+
]);
494+
let result = (await autoCompleteAdapter.getSuggestions(server, customRequest))[0];
495+
expect(result.replacementPrefix).equals('');
496+
customRequest.editor.setTextInBufferRange([[0, 4], [0, 4]], 'b');
497+
customRequest.prefix = 'b';
498+
customRequest.bufferPosition = new Point(0, 5);
499+
result = (await autoCompleteAdapter.getSuggestions(server, customRequest))[0];
500+
expect(result.replacementPrefix).equals('b');
501+
customRequest.editor.setTextInBufferRange([[0, 5], [0, 5]], 'a');
502+
customRequest.prefix = 'ba';
503+
customRequest.bufferPosition = new Point(0, 6);
504+
result = (await autoCompleteAdapter.getSuggestions(server, customRequest))[0];
505+
expect(result.replacementPrefix).equals('ba');
506+
});
486507
});
487508

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

0 commit comments

Comments
 (0)