mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-26 04:53:34 +00:00
Fix remaining tslint suggestions
This commit is contained in:
parent
4d62cfccbb
commit
62b1b05a0d
15 changed files with 82 additions and 78 deletions
|
@ -1,17 +0,0 @@
|
|||
import * as applySourceChange from './commands/apply_source_change';
|
||||
import * as extendSelection from './commands/extend_selection';
|
||||
import * as joinLines from './commands/join_lines';
|
||||
import * as matchingBrace from './commands/matching_brace';
|
||||
import * as parentModule from './commands/parent_module';
|
||||
import * as runnables from './commands/runnables';
|
||||
import * as syntaxTree from './commands/syntaxTree';
|
||||
|
||||
export {
|
||||
applySourceChange,
|
||||
extendSelection,
|
||||
joinLines,
|
||||
matchingBrace,
|
||||
parentModule,
|
||||
runnables,
|
||||
syntaxTree,
|
||||
};
|
|
@ -18,7 +18,6 @@ export interface SourceChange {
|
|||
}
|
||||
|
||||
export async function handle(change: SourceChange) {
|
||||
console.log(`applySOurceChange ${JSON.stringify(change)}`);
|
||||
const wsEdit = new vscode.WorkspaceEdit();
|
||||
for (const sourceEdit of change.sourceFileEdits) {
|
||||
const uri = Server.client.protocol2CodeConverter.asUri(sourceEdit.textDocument.uri);
|
||||
|
@ -28,17 +27,18 @@ export async function handle(change: SourceChange) {
|
|||
let created;
|
||||
let moved;
|
||||
for (const fsEdit of change.fileSystemEdits) {
|
||||
if (fsEdit.type == 'createFile') {
|
||||
const uri = vscode.Uri.parse(fsEdit.uri!);
|
||||
wsEdit.createFile(uri);
|
||||
created = uri;
|
||||
} else if (fsEdit.type == 'moveFile') {
|
||||
const src = vscode.Uri.parse(fsEdit.src!);
|
||||
const dst = vscode.Uri.parse(fsEdit.dst!);
|
||||
wsEdit.renameFile(src, dst);
|
||||
moved = dst;
|
||||
} else {
|
||||
console.error(`unknown op: ${JSON.stringify(fsEdit)}`);
|
||||
switch (fsEdit.type) {
|
||||
case 'createFile':
|
||||
const uri = vscode.Uri.parse(fsEdit.uri!);
|
||||
wsEdit.createFile(uri);
|
||||
created = uri;
|
||||
break;
|
||||
case 'moveFile':
|
||||
const src = vscode.Uri.parse(fsEdit.src!);
|
||||
const dst = vscode.Uri.parse(fsEdit.dst!);
|
||||
wsEdit.renameFile(src, dst);
|
||||
moved = dst;
|
||||
break;
|
||||
}
|
||||
}
|
||||
const toOpen = created || moved;
|
||||
|
@ -51,7 +51,7 @@ export async function handle(change: SourceChange) {
|
|||
const uri = Server.client.protocol2CodeConverter.asUri(toReveal.textDocument.uri);
|
||||
const position = Server.client.protocol2CodeConverter.asPosition(toReveal.position);
|
||||
const editor = vscode.window.activeTextEditor;
|
||||
if (!editor || editor.document.uri.toString() != uri.toString()) { return; }
|
||||
if (!editor || editor.document.uri.toString() !== uri.toString()) { return; }
|
||||
if (!editor.selection.isEmpty) { return; }
|
||||
editor!.selection = new vscode.Selection(position, position);
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ interface ExtendSelectionResult {
|
|||
|
||||
export async function handle() {
|
||||
const editor = vscode.window.activeTextEditor;
|
||||
if (editor == null || editor.document.languageId != 'rust') { return; }
|
||||
if (editor == null || editor.document.languageId !== 'rust') { return; }
|
||||
const request: ExtendSelectionParams = {
|
||||
selections: editor.selections.map((s) => {
|
||||
return Server.client.code2ProtocolConverter.asRange(s);
|
||||
|
|
17
editors/code/src/commands/index.ts
Normal file
17
editors/code/src/commands/index.ts
Normal file
|
@ -0,0 +1,17 @@
|
|||
import * as applySourceChange from './apply_source_change';
|
||||
import * as extendSelection from './extend_selection';
|
||||
import * as joinLines from './join_lines';
|
||||
import * as matchingBrace from './matching_brace';
|
||||
import * as parentModule from './parent_module';
|
||||
import * as runnables from './runnables';
|
||||
import * as syntaxTree from './syntaxTree';
|
||||
|
||||
export {
|
||||
applySourceChange,
|
||||
extendSelection,
|
||||
joinLines,
|
||||
matchingBrace,
|
||||
parentModule,
|
||||
runnables,
|
||||
syntaxTree,
|
||||
};
|
|
@ -11,7 +11,7 @@ interface JoinLinesParams {
|
|||
|
||||
export async function handle() {
|
||||
const editor = vscode.window.activeTextEditor;
|
||||
if (editor == null || editor.document.languageId != 'rust') { return; }
|
||||
if (editor == null || editor.document.languageId !== 'rust') { return; }
|
||||
const request: JoinLinesParams = {
|
||||
range: Server.client.code2ProtocolConverter.asRange(editor.selection),
|
||||
textDocument: { uri: editor.document.uri.toString() },
|
||||
|
|
|
@ -10,7 +10,7 @@ interface FindMatchingBraceParams {
|
|||
|
||||
export async function handle() {
|
||||
const editor = vscode.window.activeTextEditor;
|
||||
if (editor == null || editor.document.languageId != 'rust') { return; }
|
||||
if (editor == null || editor.document.languageId !== 'rust') { return; }
|
||||
const request: FindMatchingBraceParams = {
|
||||
textDocument: { uri: editor.document.uri.toString() },
|
||||
offsets: editor.selections.map((s) => {
|
||||
|
|
|
@ -5,7 +5,7 @@ import { Server } from '../server';
|
|||
|
||||
export async function handle() {
|
||||
const editor = vscode.window.activeTextEditor;
|
||||
if (editor == null || editor.document.languageId != 'rust') { return; }
|
||||
if (editor == null || editor.document.languageId !== 'rust') { return; }
|
||||
const request: TextDocumentIdentifier = {
|
||||
uri: editor.document.uri.toString(),
|
||||
};
|
||||
|
|
|
@ -59,7 +59,7 @@ function createTask(spec: Runnable): vscode.Task {
|
|||
let prevRunnable: RunnableQuickPick | undefined;
|
||||
export async function handle() {
|
||||
const editor = vscode.window.activeTextEditor;
|
||||
if (editor == null || editor.document.languageId != 'rust') { return; }
|
||||
if (editor == null || editor.document.languageId !== 'rust') { return; }
|
||||
const textDocument: lc.TextDocumentIdentifier = {
|
||||
uri: editor.document.uri.toString(),
|
||||
};
|
||||
|
@ -73,7 +73,7 @@ export async function handle() {
|
|||
items.push(prevRunnable);
|
||||
}
|
||||
for (const r of runnables) {
|
||||
if (prevRunnable && JSON.stringify(prevRunnable.runnable) == JSON.stringify(r)) {
|
||||
if (prevRunnable && JSON.stringify(prevRunnable.runnable) === JSON.stringify(r)) {
|
||||
continue;
|
||||
}
|
||||
items.push(new RunnableQuickPick(r));
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
import * as changeActiveTextEditor from './events/change_active_text_editor';
|
||||
import * as changeTextDocument from './events/change_text_document';
|
||||
|
||||
export {
|
||||
changeActiveTextEditor,
|
||||
changeTextDocument,
|
||||
};
|
|
@ -5,7 +5,7 @@ import { Decoration } from '../highlighting';
|
|||
import { Server } from '../server';
|
||||
|
||||
export async function handle(editor: TextEditor | undefined) {
|
||||
if (!Server.config.highlightingOn || !editor || editor.document.languageId != 'rust') { return; }
|
||||
if (!Server.config.highlightingOn || !editor || editor.document.languageId !== 'rust') { return; }
|
||||
const params: TextDocumentIdentifier = {
|
||||
uri: editor.document.uri.toString(),
|
||||
};
|
||||
|
|
|
@ -5,7 +5,7 @@ import { syntaxTreeUri, TextDocumentContentProvider } from '../commands/syntaxTr
|
|||
export function createHandler(textDocumentContentProvider: TextDocumentContentProvider) {
|
||||
return (event: vscode.TextDocumentChangeEvent) => {
|
||||
const doc = event.document;
|
||||
if (doc.languageId != 'rust') { return; }
|
||||
if (doc.languageId !== 'rust') { return; }
|
||||
afterLs(() => {
|
||||
textDocumentContentProvider.eventEmitter.fire(syntaxTreeUri);
|
||||
});
|
||||
|
|
7
editors/code/src/events/index.ts
Normal file
7
editors/code/src/events/index.ts
Normal file
|
@ -0,0 +1,7 @@
|
|||
import * as changeActiveTextEditor from './change_active_text_editor';
|
||||
import * as changeTextDocument from './change_text_document';
|
||||
|
||||
export {
|
||||
changeActiveTextEditor,
|
||||
changeTextDocument,
|
||||
};
|
|
@ -9,17 +9,42 @@ export interface Decoration {
|
|||
}
|
||||
|
||||
export class Highlighter {
|
||||
private decorations: { [index: string]: vscode.TextEditorDecorationType };
|
||||
constructor() {
|
||||
this.decorations = {};
|
||||
private static initDecorations(): Map<string, vscode.TextEditorDecorationType> {
|
||||
const decor = (color: string) => vscode.window.createTextEditorDecorationType({ color });
|
||||
|
||||
const decorations: Iterable<[string, vscode.TextEditorDecorationType]> = [
|
||||
['background', decor('#3F3F3F')],
|
||||
['error', vscode.window.createTextEditorDecorationType({
|
||||
borderColor: 'red',
|
||||
borderStyle: 'none none dashed none',
|
||||
})],
|
||||
['comment', decor('#7F9F7F')],
|
||||
['string', decor('#CC9393')],
|
||||
['keyword', decor('#F0DFAF')],
|
||||
['function', decor('#93E0E3')],
|
||||
['parameter', decor('#94BFF3')],
|
||||
['builtin', decor('#DD6718')],
|
||||
['text', decor('#DCDCCC')],
|
||||
['attribute', decor('#BFEBBF')],
|
||||
['literal', decor('#DFAF8F')],
|
||||
];
|
||||
|
||||
return new Map<string, vscode.TextEditorDecorationType>(decorations);
|
||||
}
|
||||
|
||||
private decorations: (Map<string, vscode.TextEditorDecorationType> | null) = null;
|
||||
|
||||
public removeHighlights() {
|
||||
for (const tag in this.decorations) {
|
||||
this.decorations[tag].dispose();
|
||||
if (this.decorations == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.decorations = {};
|
||||
// Decorations are removed when the object is disposed
|
||||
for (const decoration of this.decorations.values()) {
|
||||
decoration.dispose();
|
||||
}
|
||||
|
||||
this.decorations = null;
|
||||
}
|
||||
|
||||
public setHighlights(
|
||||
|
@ -30,18 +55,17 @@ export class Highlighter {
|
|||
//
|
||||
// Note: decoration objects need to be kept around so we can dispose them
|
||||
// if the user disables syntax highlighting
|
||||
if (Object.keys(this.decorations).length === 0) {
|
||||
this.initDecorations();
|
||||
if (this.decorations == null) {
|
||||
this.decorations = Highlighter.initDecorations();
|
||||
}
|
||||
|
||||
const byTag: Map<string, vscode.Range[]> = new Map();
|
||||
for (const tag in this.decorations) {
|
||||
for (const tag of this.decorations.keys()) {
|
||||
byTag.set(tag, []);
|
||||
}
|
||||
|
||||
for (const d of highlights) {
|
||||
if (!byTag.get(d.tag)) {
|
||||
console.log(`unknown tag ${d.tag}`);
|
||||
continue;
|
||||
}
|
||||
byTag.get(d.tag)!.push(
|
||||
|
@ -50,29 +74,9 @@ export class Highlighter {
|
|||
}
|
||||
|
||||
for (const tag of byTag.keys()) {
|
||||
const dec: vscode.TextEditorDecorationType = this.decorations[tag];
|
||||
const dec = this.decorations.get(tag) as vscode.TextEditorDecorationType;
|
||||
const ranges = byTag.get(tag)!;
|
||||
editor.setDecorations(dec, ranges);
|
||||
}
|
||||
}
|
||||
|
||||
private initDecorations() {
|
||||
const decor = (obj: any) => vscode.window.createTextEditorDecorationType({ color: obj });
|
||||
this.decorations = {
|
||||
background: decor('#3F3F3F'),
|
||||
error: vscode.window.createTextEditorDecorationType({
|
||||
borderColor: 'red',
|
||||
borderStyle: 'none none dashed none',
|
||||
}),
|
||||
comment: decor('#7F9F7F'),
|
||||
string: decor('#CC9393'),
|
||||
keyword: decor('#F0DFAF'),
|
||||
function: decor('#93E0E3'),
|
||||
parameter: decor('#94BFF3'),
|
||||
builtin: decor('#DD6718'),
|
||||
text: decor('#DCDCCC'),
|
||||
attribute: decor('#BFEBBF'),
|
||||
literal: decor('#DFAF8F'),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,7 +34,7 @@ export class Server {
|
|||
'm/publishDecorations',
|
||||
(params: PublishDecorationsParams) => {
|
||||
const targetEditor = vscode.window.visibleTextEditors.find(
|
||||
(editor) => editor.document.uri.toString() == params.uri,
|
||||
(editor) => editor.document.uri.toString() === params.uri,
|
||||
);
|
||||
if (!Server.config.highlightingOn || !targetEditor) { return; }
|
||||
Server.highlighter.setHighlights(
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"defaultSeverity": "warning",
|
||||
"defaultSeverity": "error",
|
||||
"extends": [
|
||||
"tslint:recommended"
|
||||
],
|
||||
|
|
Loading…
Reference in a new issue