Skip to content

Commit 9a73b2d

Browse files
committed
Revert "chore: import autocomplte-plus types from atom/autocomplete-plus"
This reverts commit 3c8e619.
1 parent 08a507d commit 9a73b2d

File tree

3 files changed

+61
-32
lines changed

3 files changed

+61
-32
lines changed

lib/adapters/autocomplete-adapter.ts

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import {
2020
TextEditor,
2121
} from 'atom';
2222
import * as ac from 'atom/autocomplete-plus';
23+
import { Suggestion, TextSuggestion, SnippetSuggestion } from 'atom-ide';
2324

2425
/**
2526
* Holds a list of suggestions generated from the CompletionItem[]
@@ -35,7 +36,7 @@ interface SuggestionCacheEntry {
3536
originalBufferPoint: Point;
3637
/** The trigger string that caused the autocomplete (if any) */
3738
triggerChar: string;
38-
suggestionMap: Map<ac.Suggestion, PossiblyResolvedCompletionItem>;
39+
suggestionMap: Map<Suggestion, PossiblyResolvedCompletionItem>;
3940
}
4041

4142
type CompletionItemAdjuster =
@@ -137,7 +138,7 @@ export default class AutocompleteAdapter {
137138
triggerChar: string,
138139
triggerOnly: boolean,
139140
onDidConvertCompletionItem?: CompletionItemAdjuster,
140-
): Promise<ac.Suggestion[]> {
141+
): Promise<Suggestion[]> {
141142
const cache = this._suggestionCache.get(server);
142143

143144
const triggerColumn = (triggerChar !== '' && triggerOnly)
@@ -336,16 +337,16 @@ export default class AutocompleteAdapter {
336337
request: ac.SuggestionsRequestedEvent,
337338
triggerColumns: [number, number],
338339
onDidConvertCompletionItem?: CompletionItemAdjuster,
339-
): Map<ac.Suggestion, PossiblyResolvedCompletionItem> {
340+
): Map<Suggestion, PossiblyResolvedCompletionItem> {
340341
const completionsArray = Array.isArray(completionItems)
341342
? completionItems
342343
: (completionItems && completionItems.items) || [];
343344
return new Map(completionsArray
344345
.sort((a, b) => (a.sortText || a.label).localeCompare(b.sortText || b.label))
345-
.map<[ac.Suggestion, PossiblyResolvedCompletionItem]>(
346+
.map<[Suggestion, PossiblyResolvedCompletionItem]>(
346347
(s) => [
347348
AutocompleteAdapter.completionItemToSuggestion(
348-
s, {} as ac.Suggestion, request, triggerColumns, onDidConvertCompletionItem),
349+
s, {} as Suggestion, request, triggerColumns, onDidConvertCompletionItem),
349350
new PossiblyResolvedCompletionItem(s, false),
350351
],
351352
),
@@ -364,16 +365,16 @@ export default class AutocompleteAdapter {
364365
*/
365366
public static completionItemToSuggestion(
366367
item: CompletionItem,
367-
suggestion: ac.Suggestion,
368+
suggestion: Suggestion,
368369
request: ac.SuggestionsRequestedEvent,
369370
triggerColumns: [number, number],
370371
onDidConvertCompletionItem?: CompletionItemAdjuster,
371-
): ac.Suggestion {
372-
AutocompleteAdapter.applyCompletionItemToSuggestion(item, suggestion as ac.TextSuggestion);
372+
): Suggestion {
373+
AutocompleteAdapter.applyCompletionItemToSuggestion(item, suggestion as TextSuggestion);
373374
AutocompleteAdapter.applyTextEditToSuggestion(
374-
item.textEdit, request.editor, triggerColumns, request.bufferPosition, suggestion as ac.TextSuggestion,
375+
item.textEdit, request.editor, triggerColumns, request.bufferPosition, suggestion as TextSuggestion,
375376
);
376-
AutocompleteAdapter.applySnippetToSuggestion(item, suggestion as ac.SnippetSuggestion);
377+
AutocompleteAdapter.applySnippetToSuggestion(item, suggestion as SnippetSuggestion);
377378
if (onDidConvertCompletionItem != null) {
378379
onDidConvertCompletionItem(item, suggestion as ac.AnySuggestion, request);
379380
}
@@ -385,12 +386,12 @@ export default class AutocompleteAdapter {
385386
* Public: Convert the primary parts of a language server protocol CompletionItem to an AutoComplete+ suggestion.
386387
*
387388
* @param item An {CompletionItem} containing the completion items to be merged into.
388-
* @param suggestion The {ac.Suggestion} to merge the conversion into.
389-
* @returns The {ac.Suggestion} with details added from the {CompletionItem}.
389+
* @param suggestion The {Suggestion} to merge the conversion into.
390+
* @returns The {Suggestion} with details added from the {CompletionItem}.
390391
*/
391392
public static applyCompletionItemToSuggestion(
392393
item: CompletionItem,
393-
suggestion: ac.TextSuggestion,
394+
suggestion: TextSuggestion,
394395
): void {
395396
suggestion.text = item.insertText || item.label;
396397
suggestion.filterText = item.filterText || item.label;
@@ -401,7 +402,7 @@ export default class AutocompleteAdapter {
401402

402403
public static applyDetailsToSuggestion(
403404
item: CompletionItem,
404-
suggestion: ac.Suggestion,
405+
suggestion: Suggestion,
405406
): void {
406407
suggestion.rightLabel = item.detail;
407408

@@ -434,7 +435,7 @@ export default class AutocompleteAdapter {
434435
editor: TextEditor,
435436
triggerColumns: [number, number],
436437
originalBufferPosition: Point,
437-
suggestion: ac.TextSuggestion,
438+
suggestion: TextSuggestion,
438439
): void {
439440
if (!textEdit) { return; }
440441
if (textEdit.range.start.character !== triggerColumns[0]) {
@@ -451,7 +452,7 @@ export default class AutocompleteAdapter {
451452
* @param item An {CompletionItem} containing the completion items to be merged into.
452453
* @param suggestion The {atom$AutocompleteSuggestion} to merge the conversion into.
453454
*/
454-
public static applySnippetToSuggestion(item: CompletionItem, suggestion: ac.SnippetSuggestion): void {
455+
public static applySnippetToSuggestion(item: CompletionItem, suggestion: SnippetSuggestion): void {
455456
if (item.insertTextFormat === InsertTextFormat.Snippet) {
456457
suggestion.snippet = item.textEdit != null ? item.textEdit.newText : (item.insertText || '');
457458
}

test/adapters/autocomplete-adapter.test.ts

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
import * as ac from 'atom/autocomplete-plus';
1010
import { expect } from 'chai';
1111
import { createSpyConnection, createFakeEditor } from '../helpers.js';
12+
import { TextSuggestion, SnippetSuggestion } from 'atom-ide';
1213
import { CompletionItem, MarkupContent, InsertTextFormat, TextEdit, Command } from '../../lib/languageclient';
1314

1415
function createRequest({
@@ -244,21 +245,21 @@ describe('AutoCompleteAdapter', () => {
244245

245246
expect(results.length).equals(items.length);
246247
expect(results[0].displayText).equals('align');
247-
expect((results[0] as ac.TextSuggestion).text).equals('hello world');
248+
expect((results[0] as TextSuggestion).text).equals('hello world');
248249
expect(results[0].replacementPrefix).equals('#align');
249250
expect(results[0].type).equals('snippet');
250251

251252
expect(results[1].displayText).equals('list');
252-
expect((results[1] as ac.TextSuggestion).text).equals('shifted');
253+
expect((results[1] as TextSuggestion).text).equals('shifted');
253254
expect(results[1].replacementPrefix).equals('gn'); // TODO: support post replacement too
254255
expect(results[1].type).equals('constant');
255256

256257
expect(results[2].displayText).equals('minimal');
257-
expect((results[2] as ac.TextSuggestion).text).equals('minimal');
258+
expect((results[2] as TextSuggestion).text).equals('minimal');
258259
expect(results[2].replacementPrefix).equals(''); // we sent an empty prefix
259260

260261
expect(results[3].displayText).equals('old');
261-
expect((results[3] as ac.SnippetSuggestion).snippet).equals('inserted');
262+
expect((results[3] as SnippetSuggestion).snippet).equals('inserted');
262263
expect(results[3].description).equals('doc string');
263264
expect(results[3].descriptionMarkdown).equals('doc string');
264265

@@ -297,7 +298,7 @@ describe('AutoCompleteAdapter', () => {
297298
}),
298299
]);
299300
const result = (await autoCompleteAdapter.getSuggestions(server, createRequest({})))[0];
300-
expect((result as ac.TextSuggestion).text).equals('insert');
301+
expect((result as TextSuggestion).text).equals('insert');
301302
expect(result.displayText).equals('label');
302303
expect(result.type).equals('keyword');
303304
expect(result.rightLabel).equals('keyword');
@@ -333,7 +334,7 @@ describe('AutoCompleteAdapter', () => {
333334
expect(result.description).equals('a truly useful variable');
334335
expect(result.descriptionMarkdown).equals('a truly useful variable');
335336
expect(result.replacementPrefix).equals('#label');
336-
expect((result as ac.TextSuggestion).text).equals('newText');
337+
expect((result as TextSuggestion).text).equals('newText');
337338
});
338339

339340
it('converts LSP CompletionItem with insertText and filterText to AutoComplete Suggestion', async () => {
@@ -354,7 +355,7 @@ describe('AutoCompleteAdapter', () => {
354355
expect(results.length).equals(1);
355356

356357
const result = results[0];
357-
expect((result as ac.TextSuggestion).text).equals('insert');
358+
expect((result as TextSuggestion).text).equals('insert');
358359
expect(result.displayText).equals('label');
359360
expect(result.type).equals('keyword');
360361
expect(result.rightLabel).equals('detail');
@@ -413,7 +414,7 @@ describe('AutoCompleteAdapter', () => {
413414
]);
414415

415416
const result = (await autoCompleteAdapter.getSuggestions(server, createRequest({})))[0];
416-
expect((result as ac.TextSuggestion).text).equals('label');
417+
expect((result as TextSuggestion).text).equals('label');
417418
expect(result.displayText).equals('label');
418419
expect(result.type).equals('keyword');
419420
expect(result.rightLabel).equals('detail');
@@ -427,7 +428,7 @@ describe('AutoCompleteAdapter', () => {
427428
]);
428429

429430
const result = (await autoCompleteAdapter.getSuggestions(server, createRequest({prefix: 'rep'})))[0];
430-
expect((result as ac.TextSuggestion).text).equals('');
431+
expect((result as TextSuggestion).text).equals('');
431432
expect(result.displayText).equals('');
432433
expect(result.replacementPrefix).equals('');
433434
});
@@ -447,7 +448,7 @@ describe('AutoCompleteAdapter', () => {
447448
const results = await autoCompleteAdapter.getSuggestions(server, customRequest);
448449

449450
expect(results[0].displayText).equals('align');
450-
expect((results[0] as ac.TextSuggestion).text).equals('hello world');
451+
expect((results[0] as TextSuggestion).text).equals('hello world');
451452
expect(results[0].replacementPrefix).equals('#align');
452453
});
453454

typings/atom-ide/index.d.ts

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,36 @@
11
declare module 'atom-ide' {
2-
// atom-ide-base types for backward compatibility
3-
export * from "atom-ide-base/types-packages/main"
42

5-
// NotificationButton for backward compatibility (moved to "../../lib/adapters/notifications-adapter")
6-
export interface NotificationButton {
7-
text: string
8-
}
3+
// atom-ide-base types for backward compatibility
4+
export * from "atom-ide-base/types-packages/main"
5+
6+
// NotificationButton for backward compatibility (moved to "../../lib/adapters/notifications-adapter")
7+
export interface NotificationButton {
8+
text: string
9+
}
10+
11+
// Autocomplete extention (the properties added by atom-languageclient)
12+
// See this PR: https://github.com/DefinitelyTyped/DefinitelyTyped/pull/51284
13+
14+
import * as ac from 'atom/autocomplete-plus';
15+
16+
/** Adds LSP specific properties to the Atom SuggestionBase type */
17+
interface SuggestionBase extends ac.SuggestionBase {
18+
/**
19+
* A string that is used when filtering and sorting a set of
20+
* completion items with a prefix present. When `falsy` the
21+
* [displayText](#ac.SuggestionBase.displayText) is used. When
22+
* no prefix, the `sortText` property is used.
23+
*/
24+
filterText?: string;
25+
26+
/**
27+
* String representing the replacement prefix from the suggestion's
28+
* custom start point to the original buffer position the suggestion
29+
* was gathered from.
30+
*/
31+
customReplacmentPrefix?: string;
32+
}
33+
export type TextSuggestion = SuggestionBase & ac.TextSuggestion;
34+
export type SnippetSuggestion = SuggestionBase & ac.SnippetSuggestion;
35+
export type Suggestion = TextSuggestion | SnippetSuggestion;
936
}

0 commit comments

Comments
 (0)