rust-analyzer/editors/code/src/extension.ts

46 lines
1.6 KiB
TypeScript
Raw Normal View History

2018-08-10 12:07:43 +00:00
import * as vscode from 'vscode';
2018-10-07 20:44:25 +00:00
import * as commands from './commands'
import * as events from './events'
import { Server } from './server';
import { TextDocumentContentProvider } from './commands/syntaxTree';
2018-08-10 12:07:43 +00:00
export function activate(context: vscode.ExtensionContext) {
2018-10-07 20:44:25 +00:00
function disposeOnDeactivation(disposable: vscode.Disposable) {
2018-08-10 12:07:43 +00:00
context.subscriptions.push(disposable);
}
2018-08-22 07:18:58 +00:00
2018-10-07 20:44:25 +00:00
function registerCommand(name: string, f: any) {
disposeOnDeactivation(vscode.commands.registerCommand(name, f))
}
2018-08-27 17:58:38 +00:00
2018-10-07 20:44:25 +00:00
registerCommand('ra-lsp.syntaxTree', commands.syntaxTree.handle)
registerCommand('ra-lsp.extendSelection', commands.extendSelection.handle);
registerCommand('ra-lsp.matchingBrace', commands.matchingBrace.handle);
registerCommand('ra-lsp.joinLines', commands.joinLines.handle);
registerCommand('ra-lsp.parentModule', commands.parentModule.handle);
registerCommand('ra-lsp.run', commands.runnables.handle);
registerCommand('ra-lsp.applySourceChange', commands.applySourceChange.handle);
2018-08-10 18:13:39 +00:00
2018-10-07 20:44:25 +00:00
let textDocumentContentProvider = new TextDocumentContentProvider()
disposeOnDeactivation(vscode.workspace.registerTextDocumentContentProvider(
2018-09-16 09:54:24 +00:00
'ra-lsp',
2018-08-10 18:13:39 +00:00
textDocumentContentProvider
2018-08-10 12:07:43 +00:00
))
2018-10-07 20:44:25 +00:00
Server.start()
vscode.workspace.onDidChangeTextDocument(
events.changeTextDocument.createHandler(textDocumentContentProvider),
null,
context.subscriptions)
vscode.window.onDidChangeActiveTextEditor(events.changeActiveTextEditor.handle)
2018-08-17 16:54:08 +00:00
}
2018-08-10 12:07:43 +00:00
export function deactivate(): Thenable<void> {
2018-10-07 20:44:25 +00:00
if (!Server.client) {
2018-08-27 19:52:43 +00:00
return Promise.resolve();
2018-08-10 12:07:43 +00:00
}
2018-10-07 20:44:25 +00:00
return Server.client.stop();
2018-08-29 15:03:14 +00:00
}