From c062fa590168316206a1acf898f14ee6d8d60a5f Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson Date: Thu, 17 Oct 2024 17:19:25 -0700 Subject: [PATCH] Ensure updates to openFileVersion data is not delayed --- Extension/src/LanguageServer/extension.ts | 6 ++++++ Extension/src/LanguageServer/protocolFilter.ts | 6 +----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/Extension/src/LanguageServer/extension.ts b/Extension/src/LanguageServer/extension.ts index bca68b9ef7..c70abfb26b 100644 --- a/Extension/src/LanguageServer/extension.ts +++ b/Extension/src/LanguageServer/extension.ts @@ -170,6 +170,7 @@ export async function activate(): Promise { }); disposables.push(vscode.workspace.onDidChangeConfiguration(onDidChangeSettings)); + disposables.push(vscode.workspace.onDidChangeTextDocument(onDidChangeTextDocument)); disposables.push(vscode.window.onDidChangeTextEditorVisibleRanges((e) => clients.ActiveClient.enqueue(async () => onDidChangeTextEditorVisibleRanges(e)))); disposables.push(vscode.window.onDidChangeActiveTextEditor((e) => clients.ActiveClient.enqueue(async () => onDidChangeActiveTextEditor(e)))); ui.didChangeActiveEditor(); // Handle already active documents (for non-cpp files that we don't register didOpen). @@ -288,6 +289,11 @@ async function onDidChangeSettings(event: vscode.ConfigurationChangeEvent): Prom } } +async function onDidChangeTextDocument(event: vscode.TextDocumentChangeEvent): Promise { + const me: Client = clients.getClientFor(event.document.uri); + me.onDidChangeTextDocument(event); +} + let noActiveEditorTimeout: NodeJS.Timeout | undefined; async function onDidChangeTextEditorVisibleRanges(event: vscode.TextEditorVisibleRangesChangeEvent): Promise { diff --git a/Extension/src/LanguageServer/protocolFilter.ts b/Extension/src/LanguageServer/protocolFilter.ts index 742727241b..4dddbbcc22 100644 --- a/Extension/src/LanguageServer/protocolFilter.ts +++ b/Extension/src/LanguageServer/protocolFilter.ts @@ -59,11 +59,7 @@ export function createProtocolFilter(): Middleware { } } }), - didChange: async (textDocumentChangeEvent, sendMessage) => clients.ActiveClient.enqueue(async () => { - const me: Client = clients.getClientFor(textDocumentChangeEvent.document.uri); - me.onDidChangeTextDocument(textDocumentChangeEvent); - await sendMessage(textDocumentChangeEvent); - }), + didChange: invoke1, willSave: invoke1, willSaveWaitUntil: async (event, sendMessage) => { // await clients.ActiveClient.ready;