Format vscode extension and add npm run fix

This commit is contained in:
Adolfo Ochagavía 2018-10-09 22:56:15 +02:00
parent 31c8ebb743
commit f2d719b24a
4 changed files with 29 additions and 14 deletions

View file

@ -18,6 +18,7 @@
"compile": "tsc -p ./", "compile": "tsc -p ./",
"watch": "tsc -watch -p ./", "watch": "tsc -watch -p ./",
"postinstall": "node ./node_modules/vscode/bin/install", "postinstall": "node ./node_modules/vscode/bin/install",
"fix": "prettier **/*.{json,ts} --write && tslint --project . --fix",
"lint": "tslint --project .", "lint": "tslint --project .",
"prettier": "prettier **/*.{json,ts}", "prettier": "prettier **/*.{json,ts}",
"travis": "npm run compile && npm run lint && npm run prettier --list-different" "travis": "npm run compile && npm run lint && npm run prettier --list-different"

View file

@ -2,7 +2,7 @@ import * as applySourceChange from './apply_source_change';
import * as extendSelection from './extend_selection'; import * as extendSelection from './extend_selection';
import * as joinLines from './join_lines'; import * as joinLines from './join_lines';
import * as matchingBrace from './matching_brace'; import * as matchingBrace from './matching_brace';
import * as on_enter from './on_enter'; import * as onEnter from './on_enter';
import * as parentModule from './parent_module'; import * as parentModule from './parent_module';
import * as runnables from './runnables'; import * as runnables from './runnables';
import * as syntaxTree from './syntaxTree'; import * as syntaxTree from './syntaxTree';
@ -15,5 +15,5 @@ export {
parentModule, parentModule,
runnables, runnables,
syntaxTree, syntaxTree,
on_enter, onEnter
}; };

View file

@ -1,7 +1,10 @@
import * as vscode from 'vscode'; import * as vscode from 'vscode';
import * as lc from 'vscode-languageclient'; import * as lc from 'vscode-languageclient';
import { Server } from '../server'; import { Server } from '../server';
import { handle as applySourceChange, SourceChange } from './apply_source_change'; import {
handle as applySourceChange,
SourceChange
} from './apply_source_change';
interface OnEnterParams { interface OnEnterParams {
textDocument: lc.TextDocumentIdentifier; textDocument: lc.TextDocumentIdentifier;
@ -10,12 +13,18 @@ interface OnEnterParams {
export async function handle(event: { text: string }): Promise<boolean> { export async function handle(event: { text: string }): Promise<boolean> {
const editor = vscode.window.activeTextEditor; const editor = vscode.window.activeTextEditor;
if (editor == null || editor.document.languageId !== 'rust' || event.text !== '\n') { if (
editor == null ||
editor.document.languageId !== 'rust' ||
event.text !== '\n'
) {
return false; return false;
} }
const request: OnEnterParams = { const request: OnEnterParams = {
textDocument: { uri: editor.document.uri.toString() }, textDocument: { uri: editor.document.uri.toString() },
position: Server.client.code2ProtocolConverter.asPosition(editor.selection.active), position: Server.client.code2ProtocolConverter.asPosition(
editor.selection.active
)
}; };
const change = await Server.client.sendRequest<undefined | SourceChange>( const change = await Server.client.sendRequest<undefined | SourceChange>(
'm/onEnter', 'm/onEnter',
@ -25,5 +34,5 @@ export async function handle(event: { text: string }): Promise<boolean> {
return false; return false;
} }
await applySourceChange(change); await applySourceChange(change);
return true return true;
} }

View file

@ -16,21 +16,26 @@ export function activate(context: vscode.ExtensionContext) {
disposeOnDeactivation(vscode.commands.registerCommand(name, f)); disposeOnDeactivation(vscode.commands.registerCommand(name, f));
} }
function overrideCommand( function overrideCommand(
name: string, name: string,
f: (...args: any[]) => Promise<boolean>, f: (...args: any[]) => Promise<boolean>
) { ) {
const defaultCmd = `default:${name}`; const defaultCmd = `default:${name}`;
const original = async (...args: any[]) => await vscode.commands.executeCommand(defaultCmd, ...args); const original = async (...args: any[]) =>
await vscode.commands.executeCommand(defaultCmd, ...args);
registerCommand(name, async (...args: any[]) => { registerCommand(name, async (...args: any[]) => {
const editor = vscode.window.activeTextEditor; const editor = vscode.window.activeTextEditor;
if (!editor || !editor.document || editor.document.languageId !== 'rust') { if (
!editor ||
!editor.document ||
editor.document.languageId !== 'rust'
) {
return await original(...args); return await original(...args);
} }
if (!await f(...args)) { if (!(await f(...args))) {
return await original(...args); return await original(...args);
} }
}) });
} }
// Commands are requests from vscode to the language server // Commands are requests from vscode to the language server
@ -44,12 +49,12 @@ export function activate(context: vscode.ExtensionContext) {
'ra-lsp.applySourceChange', 'ra-lsp.applySourceChange',
commands.applySourceChange.handle commands.applySourceChange.handle
); );
overrideCommand('type', commands.on_enter.handle) overrideCommand('type', commands.onEnter.handle);
// Notifications are events triggered by the language server // Notifications are events triggered by the language server
const allNotifications: Iterable< const allNotifications: Iterable<
[string, lc.GenericNotificationHandler] [string, lc.GenericNotificationHandler]
> = [['m/publishDecorations', notifications.publishDecorations.handle]]; > = [['m/publishDecorations', notifications.publishDecorations.handle]];
// The events below are plain old javascript events, triggered and handled by vscode // The events below are plain old javascript events, triggered and handled by vscode
vscode.window.onDidChangeActiveTextEditor( vscode.window.onDidChangeActiveTextEditor(