mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-26 04:53:34 +00:00
Format vscode extension and add npm run fix
This commit is contained in:
parent
31c8ebb743
commit
f2d719b24a
4 changed files with 29 additions and 14 deletions
|
@ -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"
|
||||||
|
|
|
@ -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
|
||||||
};
|
};
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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(
|
||||||
|
|
Loading…
Reference in a new issue