diff options
Diffstat (limited to 'editors/code/src')
-rw-r--r-- | editors/code/src/config.ts | 4 | ||||
-rw-r--r-- | editors/code/src/main.ts | 26 |
2 files changed, 18 insertions, 12 deletions
diff --git a/editors/code/src/config.ts b/editors/code/src/config.ts index fe9f3b4a8..ebe4de1ea 100644 --- a/editors/code/src/config.ts +++ b/editors/code/src/config.ts | |||
@@ -93,7 +93,9 @@ export class Config { | |||
93 | return this.cfg.get<T>(path)!; | 93 | return this.cfg.get<T>(path)!; |
94 | } | 94 | } |
95 | 95 | ||
96 | get serverPath() { return this.get<null | string>("serverPath"); } | 96 | get serverPath() { |
97 | return this.get<null | string>("server.path") ?? this.get<null | string>("serverPath"); | ||
98 | } | ||
97 | get serverExtraEnv() { return this.get<Env | null>("server.extraEnv") ?? {}; } | 99 | get serverExtraEnv() { return this.get<Env | null>("server.extraEnv") ?? {}; } |
98 | get channel() { return this.get<UpdatesChannel>("updates.channel"); } | 100 | get channel() { return this.get<UpdatesChannel>("updates.channel"); } |
99 | get askBeforeDownload() { return this.get<boolean>("updates.askBeforeDownload"); } | 101 | get askBeforeDownload() { return this.get<boolean>("updates.askBeforeDownload"); } |
diff --git a/editors/code/src/main.ts b/editors/code/src/main.ts index 60907dfd4..694da9409 100644 --- a/editors/code/src/main.ts +++ b/editors/code/src/main.ts | |||
@@ -167,6 +167,7 @@ async function bootstrapExtension(config: Config, state: PersistentState): Promi | |||
167 | } | 167 | } |
168 | return; | 168 | return; |
169 | }; | 169 | }; |
170 | if (serverPath(config) !== null) return; | ||
170 | 171 | ||
171 | const now = Date.now(); | 172 | const now = Date.now(); |
172 | if (config.package.releaseTag === NIGHTLY_TAG) { | 173 | if (config.package.releaseTag === NIGHTLY_TAG) { |
@@ -278,7 +279,7 @@ async function patchelf(dest: PathLike): Promise<void> { | |||
278 | } | 279 | } |
279 | 280 | ||
280 | async function getServer(config: Config, state: PersistentState): Promise<string | undefined> { | 281 | async function getServer(config: Config, state: PersistentState): Promise<string | undefined> { |
281 | const explicitPath = process.env.__RA_LSP_SERVER_DEBUG ?? config.serverPath; | 282 | const explicitPath = serverPath(config); |
282 | if (explicitPath) { | 283 | if (explicitPath) { |
283 | if (explicitPath.startsWith("~/")) { | 284 | if (explicitPath.startsWith("~/")) { |
284 | return os.homedir() + explicitPath.slice("~".length); | 285 | return os.homedir() + explicitPath.slice("~".length); |
@@ -287,16 +288,15 @@ async function getServer(config: Config, state: PersistentState): Promise<string | |||
287 | }; | 288 | }; |
288 | if (config.package.releaseTag === null) return "rust-analyzer"; | 289 | if (config.package.releaseTag === null) return "rust-analyzer"; |
289 | 290 | ||
290 | let platform: string | undefined; | 291 | const platforms: { [key: string]: string } = { |
291 | if ((process.arch === "x64" || process.arch === "ia32") && process.platform === "win32") { | 292 | "ia32 win32": "x86_64-pc-windows-msvc", |
292 | platform = "x86_64-pc-windows-msvc"; | 293 | "x64 win32": "x86_64-pc-windows-msvc", |
293 | } else if (process.arch === "x64" && process.platform === "linux") { | 294 | "x64 linux": "x86_64-unknown-linux-gnu", |
294 | platform = "x86_64-unknown-linux-gnu"; | 295 | "x64 darwin": "x86_64-apple-darwin", |
295 | } else if (process.arch === "x64" && process.platform === "darwin") { | 296 | "arm64 win32": "aarch64-pc-windows-msvc", |
296 | platform = "x86_64-apple-darwin"; | 297 | "arm64 darwin": "aarch64-apple-darwin", |
297 | } else if (process.arch === "arm64" && process.platform === "darwin") { | 298 | }; |
298 | platform = "aarch64-apple-darwin"; | 299 | const platform = platforms[`${process.arch} ${process.platform}`]; |
299 | } | ||
300 | if (platform === undefined) { | 300 | if (platform === undefined) { |
301 | vscode.window.showErrorMessage( | 301 | vscode.window.showErrorMessage( |
302 | "Unfortunately we don't ship binaries for your platform yet. " + | 302 | "Unfortunately we don't ship binaries for your platform yet. " + |
@@ -352,6 +352,10 @@ async function getServer(config: Config, state: PersistentState): Promise<string | |||
352 | return dest; | 352 | return dest; |
353 | } | 353 | } |
354 | 354 | ||
355 | function serverPath(config: Config): string | null { | ||
356 | return process.env.__RA_LSP_SERVER_DEBUG ?? config.serverPath; | ||
357 | } | ||
358 | |||
355 | async function isNixOs(): Promise<boolean> { | 359 | async function isNixOs(): Promise<boolean> { |
356 | try { | 360 | try { |
357 | const contents = await fs.readFile("/etc/os-release"); | 361 | const contents = await fs.readFile("/etc/os-release"); |