Skip to content
This repository was archived by the owner on Dec 15, 2022. It is now read-only.

Commit 3f8a3ae

Browse files
authored
Merge pull request #214 from atom-haskell/clean-up-atom-typings
Clean up atom typings
2 parents 7b36abf + 8b11d05 commit 3f8a3ae

11 files changed

+78
-159
lines changed

lib/adapters/autocomplete-adapter.ts

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,16 @@ import {
1616
TextEdit,
1717
} from '../languageclient';
1818
import {
19-
AutocompleteSuggestion,
20-
AutocompleteRequest,
2119
Point,
2220
TextEditor,
2321
} from 'atom';
22+
import * as ac from 'atom/autocomplete-plus';
2423

2524
interface SuggestionCacheEntry {
2625
isIncomplete: boolean;
2726
triggerPoint: Point;
2827
triggerChar: string;
29-
suggestionMap: Map<AutocompleteSuggestion, [CompletionItem, boolean]>;
28+
suggestionMap: Map<ac.AnySuggestion, [CompletionItem, boolean]>;
3029
}
3130

3231
// Public: Adapts the language server protocol "textDocument/completion" to the Atom
@@ -56,11 +55,11 @@ export default class AutocompleteAdapter {
5655
// AutoComplete+ suggestions to display.
5756
public async getSuggestions(
5857
server: ActiveServer,
59-
request: AutocompleteRequest,
60-
onDidConvertCompletionItem?: (item: CompletionItem, suggestion: AutocompleteSuggestion,
61-
request: AutocompleteRequest) => void,
58+
request: ac.SuggestionsRequestedEvent,
59+
onDidConvertCompletionItem?: (item: CompletionItem, suggestion: ac.AnySuggestion,
60+
request: ac.SuggestionsRequestedEvent) => void,
6261
minimumWordLength?: number,
63-
): Promise<AutocompleteSuggestion[]> {
62+
): Promise<ac.AnySuggestion[]> {
6463
const triggerChars =
6564
server.capabilities.completionProvider != null ?
6665
server.capabilities.completionProvider.triggerCharacters || [] : [];
@@ -119,11 +118,11 @@ export default class AutocompleteAdapter {
119118
// Returns a {Promise} of an {atom$AutocompleteSuggestion} with the resolved AutoComplete+ suggestion.
120119
public async completeSuggestion(
121120
server: ActiveServer,
122-
suggestion: AutocompleteSuggestion,
123-
request: AutocompleteRequest,
124-
onDidConvertCompletionItem?: (item: CompletionItem, suggestion: AutocompleteSuggestion,
125-
request: AutocompleteRequest) => void,
126-
): Promise<AutocompleteSuggestion> {
121+
suggestion: ac.AnySuggestion,
122+
request: ac.SuggestionsRequestedEvent,
123+
onDidConvertCompletionItem?: (item: CompletionItem, suggestion: ac.AnySuggestion,
124+
request: ac.SuggestionsRequestedEvent) => void,
125+
): Promise<ac.AnySuggestion> {
127126
const cache = this._suggestionCache.get(server);
128127
if (cache) {
129128
const originalCompletionItem = cache.suggestionMap.get(suggestion);
@@ -144,7 +143,7 @@ export default class AutocompleteAdapter {
144143
//
145144
// * `suggestions` An {Array} of {atom$AutocompleteSuggestion}s to set the replacementPrefix on.
146145
// * `prefix` The {string} containing the prefix that should be set as replacementPrefix on all suggestions.
147-
public static setReplacementPrefixOnSuggestions(suggestions: AutocompleteSuggestion[], prefix: string): void {
146+
public static setReplacementPrefixOnSuggestions(suggestions: ac.AnySuggestion[], prefix: string): void {
148147
for (const suggestion of suggestions) {
149148
suggestion.replacementPrefix = prefix;
150149
}
@@ -158,7 +157,7 @@ export default class AutocompleteAdapter {
158157
// * `triggerChars` The {Array} of {string}s that can be trigger characters.
159158
//
160159
// Returns a {string} containing the matching trigger character or an empty string if one was not matched.
161-
public static getTriggerCharacter(request: AutocompleteRequest, triggerChars: string[]): string {
160+
public static getTriggerCharacter(request: ac.SuggestionsRequestedEvent, triggerChars: string[]): string {
162161
// AutoComplete-Plus considers text after a symbol to be a new trigger. So we should look backward
163162
// from the current cursor position to see if one is there and thus simulate it.
164163
const buffer = request.editor.getBuffer();
@@ -188,7 +187,7 @@ export default class AutocompleteAdapter {
188187
// * `triggerPoint` The {atom$Point} where the trigger started.
189188
//
190189
// Returns a {string} containing the prefix including the trigger character.
191-
public static getPrefixWithTrigger(request: AutocompleteRequest, triggerPoint: Point): string {
190+
public static getPrefixWithTrigger(request: ac.SuggestionsRequestedEvent, triggerPoint: Point): string {
192191
return request.editor
193192
.getBuffer()
194193
.getTextInRange([[triggerPoint.row, triggerPoint.column], request.bufferPosition]);
@@ -205,7 +204,7 @@ export default class AutocompleteAdapter {
205204
// * `position` the position within the text document to display completion request for.
206205
// * `context` containing the trigger character and kind.
207206
public static createCompletionParams(
208-
request: AutocompleteRequest, triggerCharacter: string): CompletionParams {
207+
request: ac.SuggestionsRequestedEvent, triggerCharacter: string): CompletionParams {
209208
return {
210209
textDocument: Convert.editorToTextDocumentIdentifier(request.editor),
211210
position: Convert.pointToPosition(request.bufferPosition),
@@ -238,15 +237,16 @@ export default class AutocompleteAdapter {
238237
// Returns a {Map} of AutoComplete+ suggestions ordered by the CompletionItems sortText.
239238
public completionItemsToSuggestions(
240239
completionItems: CompletionItem[] | CompletionList,
241-
request: AutocompleteRequest,
242-
onDidConvertCompletionItem?: (item: CompletionItem, suggestion: AutocompleteSuggestion,
243-
request: AutocompleteRequest) => void,
244-
): Map<AutocompleteSuggestion, [CompletionItem, boolean]> {
240+
request: ac.SuggestionsRequestedEvent,
241+
onDidConvertCompletionItem?: (item: CompletionItem, suggestion: ac.AnySuggestion,
242+
request: ac.SuggestionsRequestedEvent) => void,
243+
): Map<ac.AnySuggestion, [CompletionItem, boolean]> {
245244
return new Map((Array.isArray(completionItems) ? completionItems : completionItems.items || [])
246245
.sort((a, b) => (a.sortText || a.label).localeCompare(b.sortText || b.label))
247-
.map<[AutocompleteSuggestion, [CompletionItem, boolean]]>(
246+
.map<[ac.AnySuggestion, [CompletionItem, boolean]]>(
248247
(s) => [
249-
AutocompleteAdapter.completionItemToSuggestion(s, { }, request, onDidConvertCompletionItem),
248+
AutocompleteAdapter.completionItemToSuggestion(
249+
s, {} as ac.AnySuggestion, request, onDidConvertCompletionItem),
250250
[s, false]]));
251251
}
252252

@@ -261,14 +261,14 @@ export default class AutocompleteAdapter {
261261
// Returns the {atom$AutocompleteSuggestion} passed in as suggestion with the conversion applied.
262262
public static completionItemToSuggestion(
263263
item: CompletionItem,
264-
suggestion: AutocompleteSuggestion,
265-
request: AutocompleteRequest,
266-
onDidConvertCompletionItem?: (item: CompletionItem, suggestion: AutocompleteSuggestion,
267-
request: AutocompleteRequest) => void,
268-
): AutocompleteSuggestion {
269-
AutocompleteAdapter.applyCompletionItemToSuggestion(item, suggestion);
270-
AutocompleteAdapter.applyTextEditToSuggestion(item.textEdit, request.editor, suggestion);
271-
AutocompleteAdapter.applySnippetToSuggestion(item, suggestion);
264+
suggestion: ac.AnySuggestion,
265+
request: ac.SuggestionsRequestedEvent,
266+
onDidConvertCompletionItem?: (item: CompletionItem, suggestion: ac.AnySuggestion,
267+
request: ac.SuggestionsRequestedEvent) => void,
268+
): ac.AnySuggestion {
269+
AutocompleteAdapter.applyCompletionItemToSuggestion(item, suggestion as ac.TextSuggestion);
270+
AutocompleteAdapter.applyTextEditToSuggestion(item.textEdit, request.editor, suggestion as ac.TextSuggestion);
271+
AutocompleteAdapter.applySnippetToSuggestion(item, suggestion as ac.SnippetSuggestion);
272272
if (onDidConvertCompletionItem != null) {
273273
onDidConvertCompletionItem(item, suggestion, request);
274274
}
@@ -282,7 +282,7 @@ export default class AutocompleteAdapter {
282282
// * `suggestion` The {atom$AutocompleteSuggestion} to merge the conversion into.
283283
//
284284
// Returns an {atom$AutocompleteSuggestion} created from the {CompletionItem}.
285-
public static applyCompletionItemToSuggestion(item: CompletionItem, suggestion: AutocompleteSuggestion) {
285+
public static applyCompletionItemToSuggestion(item: CompletionItem, suggestion: ac.TextSuggestion) {
286286
suggestion.text = item.insertText || item.label;
287287
suggestion.displayText = item.label;
288288
suggestion.type = AutocompleteAdapter.completionKindToSuggestionType(item.kind);
@@ -313,7 +313,7 @@ export default class AutocompleteAdapter {
313313
public static applyTextEditToSuggestion(
314314
textEdit: TextEdit | undefined,
315315
editor: TextEditor,
316-
suggestion: AutocompleteSuggestion,
316+
suggestion: ac.TextSuggestion,
317317
): void {
318318
if (textEdit) {
319319
suggestion.replacementPrefix = editor.getTextInBufferRange(Convert.lsRangeToAtomRange(textEdit.range));
@@ -327,9 +327,9 @@ export default class AutocompleteAdapter {
327327
// * `item` An {CompletionItem} containing the completion items to be merged into.
328328
// * `suggestion` The {atom$AutocompleteSuggestion} to merge the conversion into.
329329
//
330-
public static applySnippetToSuggestion(item: CompletionItem, suggestion: AutocompleteSuggestion): void {
330+
public static applySnippetToSuggestion(item: CompletionItem, suggestion: ac.SnippetSuggestion): void {
331331
if (item.insertTextFormat === InsertTextFormat.Snippet) {
332-
suggestion.snippet = item.textEdit != null ? item.textEdit.newText : item.insertText;
332+
suggestion.snippet = item.textEdit != null ? item.textEdit.newText : (item.insertText || '');
333333
}
334334
}
335335

lib/adapters/document-sync-adapter.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ import ApplyEditAdapter from './apply-edit-adapter';
1414
import {
1515
CompositeDisposable,
1616
Disposable,
17-
DidStopChangingEvent,
18-
TextEditEvent,
1917
TextEditor,
18+
BufferStoppedChangingEvent,
19+
TextChange,
2020
} from 'atom';
2121
import * as Utils from '../utils';
2222

@@ -241,7 +241,7 @@ export class TextEditorSyncAdapter {
241241
// text editor.
242242
// Note: The order of changes in the event is guaranteed top to bottom. Language server
243243
// expects this in reverse.
244-
public sendIncrementalChanges(event: DidStopChangingEvent): void {
244+
public sendIncrementalChanges(event: BufferStoppedChangingEvent): void {
245245
if (event.changes.length > 0) {
246246
if (!this._isPrimaryAdapter()) { return; } // Multiple editors, we are not first
247247

@@ -259,7 +259,7 @@ export class TextEditorSyncAdapter {
259259
// * `change` The Atom {TextEditEvent} to convert.
260260
//
261261
// Returns a {TextDocumentContentChangeEvent} that represents the converted {TextEditEvent}.
262-
public static textEditToContentChange(change: TextEditEvent): TextDocumentContentChangeEvent {
262+
public static textEditToContentChange(change: TextChange): TextDocumentContentChangeEvent {
263263
return {
264264
range: Convert.atomRangeToLSRange(change.oldRange),
265265
rangeLength: change.oldText.length,

lib/adapters/notifications-adapter.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import {
77
} from '../languageclient';
88
import {
99
Notification,
10-
NotificationButton,
1110
NotificationOptions,
1211
NotificationExt,
1312
} from 'atom';
@@ -93,7 +92,7 @@ export default class NotificationsAdapter {
9392
// Returns a {NotificationButton} equivalent to the {MessageActionItem} given.
9493
public static actionItemToNotificationButton(
9594
actionItem: MessageActionItem,
96-
): NotificationButton {
95+
) {
9796
return {
9897
text: actionItem.title,
9998
};

lib/auto-languageclient.ts

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -33,16 +33,13 @@ import {
3333
ActiveServer,
3434
} from './server-manager.js';
3535
import {
36-
AutocompleteDidInsert,
37-
AutocompleteProvider,
38-
AutocompleteRequest,
39-
AutocompleteSuggestion,
40-
CompositeDisposable,
4136
Disposable,
37+
CompositeDisposable,
4238
Point,
4339
Range,
4440
TextEditor,
4541
} from 'atom';
42+
import * as ac from 'atom/autocomplete-plus';
4643

4744
export { ActiveServer, LanguageClientConnection, LanguageServerProcess };
4845
export type ConnectionType = 'stdio' | 'socket' | 'ipc';
@@ -63,7 +60,7 @@ export default class AutoLanguageClient {
6360
private _consoleDelegate?: atomIde.ConsoleService;
6461
private _linterDelegate?: linter.IndieDelegate;
6562
private _signatureHelpRegistry?: atomIde.SignatureHelpRegistry;
66-
private _lastAutocompleteRequest?: AutocompleteRequest;
63+
private _lastAutocompleteRequest?: ac.SuggestionsRequestedEvent;
6764
private _isDeactivating: boolean = false;
6865
private _serverAdapters = new WeakMap<ActiveServer, ServerAdapters>();
6966

@@ -439,11 +436,11 @@ export default class AutoLanguageClient {
439436
}
440437

441438
protected isFileInProject(editor: TextEditor, projectPath: string): boolean {
442-
return (editor.getURI() || '').startsWith(projectPath);
439+
return (editor.getPath() || '').startsWith(projectPath);
443440
}
444441

445442
// Autocomplete+ via LS completion---------------------------------------
446-
public provideAutocomplete(): AutocompleteProvider {
443+
public provideAutocomplete(): ac.AutocompleteProvider {
447444
return {
448445
selector: this.getGrammarScopes()
449446
.map((g) => g.includes('.') ? '.' + g : g)
@@ -458,8 +455,8 @@ export default class AutoLanguageClient {
458455
}
459456

460457
protected async getSuggestions(
461-
request: AutocompleteRequest,
462-
): Promise<AutocompleteSuggestion[]> {
458+
request: ac.SuggestionsRequestedEvent,
459+
): Promise<ac.AnySuggestion[]> {
463460
const server = await this._serverManager.getServer(request.editor);
464461
if (server == null || !AutocompleteAdapter.canAdapt(server.capabilities)) {
465462
return [];
@@ -472,7 +469,8 @@ export default class AutoLanguageClient {
472469
}
473470

474471
protected async getSuggestionDetailsOnSelect(
475-
suggestion: AutocompleteSuggestion): Promise<AutocompleteSuggestion | null> {
472+
suggestion: ac.AnySuggestion,
473+
): Promise<ac.AnySuggestion | null> {
476474
const request = this._lastAutocompleteRequest;
477475
if (request == null) { return null; }
478476
const server = await this._serverManager.getServer(request.editor);
@@ -485,12 +483,12 @@ export default class AutoLanguageClient {
485483

486484
protected onDidConvertAutocomplete(
487485
completionItem: ls.CompletionItem,
488-
suggestion: AutocompleteSuggestion,
489-
request: AutocompleteRequest,
486+
suggestion: ac.AnySuggestion,
487+
request: ac.SuggestionsRequestedEvent,
490488
): void {
491489
}
492490

493-
protected onDidInsertSuggestion(arg: AutocompleteDidInsert): void {}
491+
protected onDidInsertSuggestion(arg: ac.SuggestionInsertedEvent): void {}
494492

495493
// Definitions via LS documentHighlight and gotoDefinition------------
496494
public provideDefinitions(): atomIde.DefinitionProvider {

lib/convert.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import * as ls from './languageclient';
33
import * as URL from 'url';
44
import {
55
Point,
6-
ProjectFileEvent,
6+
FilesystemChange,
77
Range,
88
TextEditor,
99
} from 'atom';
@@ -159,7 +159,7 @@ export default class Convert {
159159
// * 'fileEvent' An {atom$ProjectFileEvent} to be converted.
160160
//
161161
// Returns an array of LSP {ls.FileEvent} objects that equivalent conversions to the fileEvent parameter.
162-
public static atomFileEventToLSFileEvents(fileEvent: ProjectFileEvent): ls.FileEvent[] {
162+
public static atomFileEventToLSFileEvents(fileEvent: FilesystemChange): ls.FileEvent[] {
163163
switch (fileEvent.action) {
164164
case 'created':
165165
return [{uri: Convert.pathToUri(fileEvent.path), type: ls.FileChangeType.Created}];

lib/server-manager.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { EventEmitter } from 'events';
66
import { Logger } from './logger';
77
import {
88
CompositeDisposable,
9-
ProjectFileEvent,
9+
FilesystemChangeEvent,
1010
TextEditor,
1111
} from 'atom';
1212
import { ReportBusyWhile } from './utils';
@@ -277,7 +277,7 @@ export class ServerManager {
277277
this.updateNormalizedProjectPaths();
278278
}
279279

280-
public projectFilesChanged(fileEvents: ProjectFileEvent[]): void {
280+
public projectFilesChanged(fileEvents: FilesystemChangeEvent): void {
281281
if (this._activeServers.length === 0) {
282282
return;
283283
}
@@ -289,7 +289,7 @@ export class ServerManager {
289289
changes.push(Convert.atomFileEventToLSFileEvents(fileEvent)[0]);
290290
}
291291
if (
292-
fileEvent.oldPath &&
292+
fileEvent.action === 'renamed' &&
293293
fileEvent.oldPath.startsWith(activeServer.projectPath) &&
294294
this._changeWatchedFileFilter(fileEvent.oldPath)
295295
) {

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"test": "npm run compile && npm run lint && atom --test build/test"
1616
},
1717
"dependencies": {
18-
"@types/atom": "~1.25.0",
18+
"@types/atom": "~1.25.1",
1919
"@types/node": "^8.0.41",
2020
"fuzzaldrin-plus": "^0.6.0",
2121
"vscode-jsonrpc": "^3.5.0",

0 commit comments

Comments
 (0)