diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index 44255921e..8be7dc006 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -1366,12 +1366,6 @@ export class DefaultClient implements Client { this.registerNotifications(); initializeIntervalTimer(); - - // If a file is already open when we activate, sometimes we don't get any notifications about visible - // or active text editors, visible ranges, or text selection. As a workaround, we trigger - // onDidChangeVisibleTextEditors here. - const cppEditors: vscode.TextEditor[] = vscode.window.visibleTextEditors.filter(e => util.isCpp(e.document)); - await this.onDidChangeVisibleTextEditors(cppEditors); } // update all client configurations diff --git a/Extension/src/LanguageServer/clientCollection.ts b/Extension/src/LanguageServer/clientCollection.ts index 9432ab38e..6788eb65d 100644 --- a/Extension/src/LanguageServer/clientCollection.ts +++ b/Extension/src/LanguageServer/clientCollection.ts @@ -144,8 +144,6 @@ export class ClientCollection { this.activeClient.activate(); await this.activeClient.didChangeActiveEditor(vscode.window.activeTextEditor); } - const cppEditors: vscode.TextEditor[] = vscode.window.visibleTextEditors.filter(e => util.isCpp(e.document)); - await this.defaultClient.onDidChangeVisibleTextEditors(cppEditors); } private async onDidChangeWorkspaceFolders(e?: vscode.WorkspaceFoldersChangeEvent): Promise { diff --git a/Extension/src/LanguageServer/protocolFilter.ts b/Extension/src/LanguageServer/protocolFilter.ts index 372d62e3a..2cdc38d53 100644 --- a/Extension/src/LanguageServer/protocolFilter.ts +++ b/Extension/src/LanguageServer/protocolFilter.ts @@ -8,6 +8,7 @@ import * as path from 'path'; import * as vscode from 'vscode'; import { Middleware } from 'vscode-languageclient'; import * as util from '../common'; +import { logAndReturn } from '../Utility/Async/returns'; import { Client } from './client'; import { clients } from './extension'; import { shouldChangeFromCToCpp } from './utils'; @@ -40,6 +41,10 @@ export function createProtocolFilter(): Middleware { // client.takeOwnership() will call client.TrackedDocuments.add() again, but that's ok. It's a Set. client.takeOwnership(document); void sendMessage(document); + const editor: vscode.TextEditor | undefined = vscode.window.visibleTextEditors.find(editor => editor.document === document); + if (editor) { + client.onDidChangeVisibleTextEditors([editor]).catch(logAndReturn.undefined); + } } } },