From 479aa683eef2b36b88eca21ede2140ba99363657 Mon Sep 17 00:00:00 2001 From: Koen Vlaswinkel Date: Wed, 17 Jan 2024 11:40:00 +0100 Subject: [PATCH] Rename IDE server to language client --- extensions/ql-vscode/src/codeql-cli/cli.ts | 2 +- .../src/common/logging/vscode/loggers.ts | 2 +- extensions/ql-vscode/src/extension.ts | 28 +++++++++---------- .../src/language-support/language-client.ts | 28 ++++++++++--------- 4 files changed, 31 insertions(+), 29 deletions(-) diff --git a/extensions/ql-vscode/src/codeql-cli/cli.ts b/extensions/ql-vscode/src/codeql-cli/cli.ts index fc2b43fba..a8bb874be 100644 --- a/extensions/ql-vscode/src/codeql-cli/cli.ts +++ b/extensions/ql-vscode/src/codeql-cli/cli.ts @@ -1657,7 +1657,7 @@ function isEnvTrue(name: string): boolean { ); } -export function shouldDebugIdeServer() { +export function shouldDebugLanguageServer() { return isEnvTrue("IDE_SERVER_JAVA_DEBUG"); } diff --git a/extensions/ql-vscode/src/common/logging/vscode/loggers.ts b/extensions/ql-vscode/src/common/logging/vscode/loggers.ts index ff91b00fb..8d4401dfe 100644 --- a/extensions/ql-vscode/src/common/logging/vscode/loggers.ts +++ b/extensions/ql-vscode/src/common/logging/vscode/loggers.ts @@ -11,7 +11,7 @@ export const extLogger = new OutputChannelLogger("CodeQL Extension Log"); export const queryServerLogger = new OutputChannelLogger("CodeQL Query Server"); // Logger for messages from the language server. -export const ideServerLogger = new OutputChannelLogger( +export const languageServerLogger = new OutputChannelLogger( "CodeQL Language Server", ); diff --git a/extensions/ql-vscode/src/extension.ts b/extensions/ql-vscode/src/extension.ts index a599ad76b..e422dfcae 100644 --- a/extensions/ql-vscode/src/extension.ts +++ b/extensions/ql-vscode/src/extension.ts @@ -34,7 +34,7 @@ import { } from "./config"; import { AstViewer, - createIDEServer, + createLanguageClient, getQueryEditorCommands, install, TemplatePrintAstProvider, @@ -84,7 +84,7 @@ import { import type { ProgressReporter } from "./common/logging/vscode"; import { extLogger, - ideServerLogger, + languageServerLogger, queryServerLogger, } from "./common/logging/vscode"; import { QueryHistoryManager } from "./query-history/query-history-manager"; @@ -171,7 +171,7 @@ function getCommands( app: App, cliServer: CodeQLCliServer, queryRunner: QueryRunner, - ideServer: LanguageClient, + languageClient: LanguageClient, ): BaseCommands { const getCliVersion = async () => { try { @@ -189,10 +189,10 @@ function getCommands( await Promise.all([ queryRunner.restartQueryServer(progress, token), async () => { - if (ideServer.isRunning()) { - await ideServer.restart(); + if (languageClient.isRunning()) { + await languageClient.restart(); } else { - await ideServer.start(); + await languageClient.start(); } }, ]); @@ -942,7 +942,7 @@ async function activateWithInstalledDistribution( ctx.subscriptions.push(tmpDirDisposal); void extLogger.log("Initializing CodeQL language server."); - const ideServer = createIDEServer(qlConfigurationListener); + const languageClient = createLanguageClient(qlConfigurationListener); const localQueries = new LocalQueries( app, @@ -1008,7 +1008,7 @@ async function activateWithInstalledDistribution( void extLogger.log("Registering top-level command palette commands."); const allCommands: AllExtensionCommands = { - ...getCommands(app, cliServer, qs, ideServer), + ...getCommands(app, cliServer, qs, languageClient), ...getQueryEditorCommands({ commandManager: app.commands, queryRunner: qs, @@ -1055,21 +1055,21 @@ async function activateWithInstalledDistribution( } void extLogger.log("Starting language server."); - await ideServer.start(); + await languageClient.start(); ctx.subscriptions.push({ dispose: () => { - void ideServer.stop(); + void languageClient.stop(); }, }); - // Handle visibility changes in the ideserver + // Handle visibility changes in the CodeQL language client. if (await cliServer.cliConstraints.supportsVisibilityNotifications()) { Window.onDidChangeVisibleTextEditors((editors) => { - ideServer.notifyVisibilityChange(editors); + languageClient.notifyVisibilityChange(editors); }); // Send an inital notification to the language server // to set the initial state of the visible editors. - ideServer.notifyVisibilityChange(Window.visibleTextEditors); + languageClient.notifyVisibilityChange(Window.visibleTextEditors); } // Jump-to-definition and find-references @@ -1251,7 +1251,7 @@ function getContextStoragePath(ctx: ExtensionContext) { async function initializeLogging(ctx: ExtensionContext): Promise { ctx.subscriptions.push(extLogger); ctx.subscriptions.push(queryServerLogger); - ctx.subscriptions.push(ideServerLogger); + ctx.subscriptions.push(languageServerLogger); } const checkForUpdatesCommand: keyof PreActivationCommands = diff --git a/extensions/ql-vscode/src/language-support/language-client.ts b/extensions/ql-vscode/src/language-support/language-client.ts index 889f7667c..7b27a3fda 100644 --- a/extensions/ql-vscode/src/language-support/language-client.ts +++ b/extensions/ql-vscode/src/language-support/language-client.ts @@ -2,32 +2,32 @@ import type { TextEditor } from "vscode"; import { ProgressLocation, window } from "vscode"; import type { StreamInfo } from "vscode-languageclient/node"; import { LanguageClient, NotificationType } from "vscode-languageclient/node"; -import { shouldDebugIdeServer, spawnServer } from "../codeql-cli/cli"; +import { shouldDebugLanguageServer, spawnServer } from "../codeql-cli/cli"; import type { QueryServerConfig } from "../config"; -import { ideServerLogger } from "../common/logging/vscode"; +import { languageServerLogger } from "../common/logging/vscode"; /** - * Managing the language server for CodeQL. + * Managing the language client and corresponding server process for CodeQL. */ /** - * Create a new CodeQL language server. + * Create a new CodeQL language client connected to a language server. */ -export function createIDEServer( +export function createLanguageClient( config: QueryServerConfig, ): CodeQLLanguageClient { return new CodeQLLanguageClient(config); } /** - * CodeQL language server. + * CodeQL language client. */ export class CodeQLLanguageClient extends LanguageClient { constructor(config: QueryServerConfig) { super( "codeQL.lsp", "CodeQL Language Server", - () => spawnIdeServer(config), + () => spawnLanguageServer(config), { documentSelector: [ { language: "ql", scheme: "file" }, @@ -38,7 +38,7 @@ export class CodeQLLanguageClient extends LanguageClient { configurationSection: "codeQL", }, // Ensure that language server exceptions are logged to the same channel as its output. - outputChannel: ideServerLogger.outputChannel, + outputChannel: languageServerLogger.outputChannel, }, true, ); @@ -55,12 +55,14 @@ export class CodeQLLanguageClient extends LanguageClient { } /** Starts a new CodeQL language server process, sending progress messages to the status bar. */ -async function spawnIdeServer(config: QueryServerConfig): Promise { +async function spawnLanguageServer( + config: QueryServerConfig, +): Promise { return window.withProgress( { title: "CodeQL language server", location: ProgressLocation.Window }, async (progressReporter, _) => { const args = ["--check-errors", "ON_CHANGE"]; - if (shouldDebugIdeServer()) { + if (shouldDebugLanguageServer()) { args.push( "-J=-agentlib:jdwp=transport=dt_socket,address=localhost:9009,server=y,suspend=n,quiet=y", ); @@ -70,11 +72,11 @@ async function spawnIdeServer(config: QueryServerConfig): Promise { "CodeQL language server", ["execute", "language-server"], args, - ideServerLogger, + languageServerLogger, (data) => - ideServerLogger.log(data.toString(), { trailingNewline: false }), + languageServerLogger.log(data.toString(), { trailingNewline: false }), (data) => - ideServerLogger.log(data.toString(), { trailingNewline: false }), + languageServerLogger.log(data.toString(), { trailingNewline: false }), progressReporter, ); return { writer: child.stdin!, reader: child.stdout! };