Files
rust/editors/code/src/extension.ts

46 lines
1.7 KiB
TypeScript
Raw Normal View History

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