diff --git a/editors/code/src/client.ts b/editors/code/src/client.ts index 33d9b66dfb..12c97be2fe 100644 --- a/editors/code/src/client.ts +++ b/editors/code/src/client.ts @@ -2,7 +2,7 @@ import * as lc from 'vscode-languageclient'; import * as vscode from 'vscode'; import { Config } from './config'; -import { ensureLangServerBinary } from './installation/lang_server'; +import { ensureServerBinary } from './installation/server'; import { CallHierarchyFeature } from 'vscode-languageclient/lib/callHierarchy.proposed'; export async function createClient(config: Config): Promise { @@ -11,11 +11,11 @@ export async function createClient(config: Config): Promise("raLspServerPath"); + get serverBinarySource(): null | BinarySource { + const serverPath = RA_LSP_DEBUG ?? this.cfg.get("raLspServerPath"); - if (langServerPath) { + if (serverPath) { return { type: BinarySource.Type.ExplicitPath, - path: Config.replaceTildeWithHomeDir(langServerPath) + path: Config.replaceTildeWithHomeDir(serverPath) }; } - const prebuiltBinaryName = this.prebuiltLangServerFileName; + const prebuiltBinaryName = this.prebuiltServerFileName; if (!prebuiltBinaryName) return null; diff --git a/editors/code/src/installation/lang_server.ts b/editors/code/src/installation/server.ts similarity index 87% rename from editors/code/src/installation/lang_server.ts rename to editors/code/src/installation/server.ts index ccb936bf5f..406e2299c3 100644 --- a/editors/code/src/installation/lang_server.ts +++ b/editors/code/src/installation/server.ts @@ -10,7 +10,7 @@ import { BinarySource } from "./interfaces"; import { fetchLatestArtifactReleaseInfo } from "./fetch_latest_artifact_release_info"; import { downloadFile } from "./download_file"; -export async function downloadLatestLangServer( +export async function downloadLatestServer( {file: artifactFileName, dir: installationDir, repo}: BinarySource.GithubRelease ) { const { releaseName, downloadUrl } = (await fetchLatestArtifactReleaseInfo( @@ -53,11 +53,11 @@ export async function downloadLatestLangServer( ); console.timeEnd("Downloading ra_lsp_server"); } -export async function ensureLangServerBinary( - langServerSource: null | BinarySource +export async function ensureServerBinary( + serverSource: null | BinarySource ): Promise { - if (!langServerSource) { + if (!serverSource) { vscode.window.showErrorMessage( "Unfortunately we don't ship binaries for your platform yet. " + "You need to manually clone rust-analyzer repository and " + @@ -69,21 +69,21 @@ export async function ensureLangServerBinary( return null; } - switch (langServerSource.type) { + switch (serverSource.type) { case BinarySource.Type.ExplicitPath: { - if (isBinaryAvailable(langServerSource.path)) { - return langServerSource.path; + if (isBinaryAvailable(serverSource.path)) { + return serverSource.path; } vscode.window.showErrorMessage( - `Unable to run ${langServerSource.path} binary. ` + + `Unable to run ${serverSource.path} binary. ` + `To use the pre-built language server, set "rust-analyzer.raLspServerPath" ` + "value to `null` or remove it from the settings to use it by default." ); return null; } case BinarySource.Type.GithubRelease: { - const prebuiltBinaryPath = path.join(langServerSource.dir, langServerSource.file); + const prebuiltBinaryPath = path.join(serverSource.dir, serverSource.file); if (isBinaryAvailable(prebuiltBinaryPath)) { return prebuiltBinaryPath; @@ -97,10 +97,10 @@ export async function ensureLangServerBinary( if (userResponse !== "Download now") return null; try { - await downloadLatestLangServer(langServerSource); + await downloadLatestServer(serverSource); } catch (err) { vscode.window.showErrorMessage( - `Failed to download language server from ${langServerSource.repo.name} ` + + `Failed to download language server from ${serverSource.repo.name} ` + `GitHub repository: ${err.message}` ); @@ -122,7 +122,7 @@ export async function ensureLangServerBinary( if (!isBinaryAvailable(prebuiltBinaryPath)) assert(false, `Downloaded language server binary is not functional.` + - `Downloaded from: ${JSON.stringify(langServerSource)}` + `Downloaded from: ${JSON.stringify(serverSource)}` );