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
|
|
|
}
|