mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-28 02:29:44 +00:00
Refactor vscode extension
This commit is contained in:
parent
e4fdfd1501
commit
69de7e2fd7
14 changed files with 518 additions and 415 deletions
14
editors/code/src/events/change_active_text_editor.ts
Normal file
14
editors/code/src/events/change_active_text_editor.ts
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
import { TextEditor } from "vscode";
|
||||
import { TextDocumentIdentifier } from "vscode-languageclient";
|
||||
|
||||
import { Server } from "../server";
|
||||
import { Decoration } from "../highlighting";
|
||||
|
||||
export async function handle(editor: TextEditor | undefined) {
|
||||
if (!Server.config.highlightingOn || !editor || editor.document.languageId != 'rust') return
|
||||
let params: TextDocumentIdentifier = {
|
||||
uri: editor.document.uri.toString()
|
||||
}
|
||||
let decorations = await Server.client.sendRequest<Decoration[]>("m/decorationsRequest", params)
|
||||
Server.highlighter.setHighlights(editor, decorations)
|
||||
}
|
||||
19
editors/code/src/events/change_text_document.ts
Normal file
19
editors/code/src/events/change_text_document.ts
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
import * as vscode from 'vscode';
|
||||
|
||||
import { syntaxTreeUri, TextDocumentContentProvider } from '../commands/syntaxTree';
|
||||
|
||||
export function createHandler(textDocumentContentProvider: TextDocumentContentProvider) {
|
||||
return (event: vscode.TextDocumentChangeEvent) => {
|
||||
let doc = event.document
|
||||
if (doc.languageId != "rust") return
|
||||
afterLs(() => {
|
||||
textDocumentContentProvider.eventEmitter.fire(syntaxTreeUri);
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// We need to order this after LS updates, but there's no API for that.
|
||||
// Hence, good old setTimeout.
|
||||
function afterLs(f: () => any) {
|
||||
setTimeout(f, 10)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue