diff options
author | 2021-08-26 13:14:47 -0400 | |
---|---|---|
committer | 2021-08-26 13:14:47 -0400 | |
commit | c4cfc0d5fb26e39be7c10ba1ecdc32656870b10d (patch) | |
tree | e8dde32fb8ef88f6b9bd6276e5ca9194fb487ba9 /tools/language-server/src/index.ts | |
parent | c83d4817336f73348dbcedf493f2e5d2402e9e49 (diff) | |
download | astro-c4cfc0d5fb26e39be7c10ba1ecdc32656870b10d.tar.gz astro-c4cfc0d5fb26e39be7c10ba1ecdc32656870b10d.tar.zst astro-c4cfc0d5fb26e39be7c10ba1ecdc32656870b10d.zip |
Remove VSCode and Langauge Server from this monorepo (#1230)
* Remove VSCode and Langauge Server from this monorepo
* Adds back in the syntax files
Diffstat (limited to 'tools/language-server/src/index.ts')
-rw-r--r-- | tools/language-server/src/index.ts | 122 |
1 files changed, 0 insertions, 122 deletions
diff --git a/tools/language-server/src/index.ts b/tools/language-server/src/index.ts deleted file mode 100644 index e029684cb..000000000 --- a/tools/language-server/src/index.ts +++ /dev/null @@ -1,122 +0,0 @@ -import { RequestType, TextDocumentPositionParams, createConnection, ProposedFeatures, TextDocumentSyncKind, TextDocumentIdentifier } from 'vscode-languageserver'; -import { Document, DocumentManager } from './core/documents'; -import { ConfigManager } from './core/config'; -import { PluginHost, CSSPlugin, HTMLPlugin, TypeScriptPlugin, AppCompletionItem, AstroPlugin } from './plugins'; -import { urlToPath } from './utils'; - -const TagCloseRequest: RequestType<TextDocumentPositionParams, string | null, any> = new RequestType('html/tag'); - -/** - * Starts `astro-languageservice` - */ -export function startServer() { - let connection = createConnection(ProposedFeatures.all); - - const docManager = new DocumentManager(({ uri, text }: { uri: string; text: string }) => new Document(uri, text)); - const configManager = new ConfigManager(); - const pluginHost = new PluginHost(docManager); - - connection.onInitialize((evt) => { - const workspaceUris = evt.workspaceFolders?.map((folder) => folder.uri.toString()) ?? [evt.rootUri ?? '']; - - pluginHost.initialize({ - filterIncompleteCompletions: !evt.initializationOptions?.dontFilterIncompleteCompletions, - definitionLinkSupport: !!evt.capabilities.textDocument?.definition?.linkSupport, - }); - pluginHost.register(new HTMLPlugin(docManager, configManager)); - pluginHost.register(new CSSPlugin(docManager, configManager)); - pluginHost.register(new TypeScriptPlugin(docManager, configManager, workspaceUris)); - pluginHost.register(new AstroPlugin(docManager, configManager, workspaceUris)); - configManager.updateEmmetConfig(evt.initializationOptions?.configuration?.emmet || evt.initializationOptions?.emmetConfig || {}); - - return { - capabilities: { - textDocumentSync: TextDocumentSyncKind.Incremental, - foldingRangeProvider: true, - definitionProvider: true, - completionProvider: { - resolveProvider: true, - triggerCharacters: [ - '.', - '"', - "'", - '`', - '/', - '@', - '<', - - // Emmet - '>', - '*', - '#', - '$', - '+', - '^', - '(', - '[', - '@', - '-', - // No whitespace because - // it makes for weird/too many completions - // of other completion providers - - // Astro - ':', - ], - }, - hoverProvider: true, - signatureHelpProvider: { - triggerCharacters: ['(', ',', '<'], - retriggerCharacters: [')'], - }, - }, - }; - }); - - // Documents - connection.onDidOpenTextDocument((evt) => { - docManager.openDocument(evt.textDocument); - docManager.markAsOpenedInClient(evt.textDocument.uri); - }); - - connection.onDidCloseTextDocument((evt) => docManager.closeDocument(evt.textDocument.uri)); - - connection.onDidChangeTextDocument((evt) => { - docManager.updateDocument(evt.textDocument.uri, evt.contentChanges); - }); - - connection.onDidChangeWatchedFiles((evt) => { - const params = evt.changes - .map((change) => ({ - fileName: urlToPath(change.uri), - changeType: change.type, - })) - .filter((change) => !!change.fileName); - - pluginHost.onWatchFileChanges(params); - }); - - // Config - connection.onDidChangeConfiguration(({ settings }) => { - configManager.updateEmmetConfig(settings.emmet); - }); - - // Features - connection.onCompletion((evt) => pluginHost.getCompletions(evt.textDocument, evt.position, evt.context)); - connection.onCompletionResolve((completionItem) => { - const data = (completionItem as AppCompletionItem).data as TextDocumentIdentifier; - - if (!data) { - return completionItem; - } - - return pluginHost.resolveCompletion(data, completionItem); - }); - connection.onHover((evt) => pluginHost.doHover(evt.textDocument, evt.position)); - connection.onDefinition((evt) => pluginHost.getDefinitions(evt.textDocument, evt.position)); - connection.onFoldingRanges((evt) => pluginHost.getFoldingRanges(evt.textDocument)); - connection.onRequest(TagCloseRequest, (evt: any) => pluginHost.doTagComplete(evt.textDocument, evt.position)); - connection.onSignatureHelp((evt, cancellationToken) => pluginHost.getSignatureHelp(evt.textDocument, evt.position, evt.context, cancellationToken)); - - connection.listen(); -} |