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