@@ -4,9 +4,7 @@ import * as ra from "../src/lsp_ext";
44import * as Is from "vscode-languageclient/lib/common/utils/is" ;
55import { assert } from "./util" ;
66import { WorkspaceEdit } from "vscode" ;
7- import { Workspace } from "./ctx" ;
8- import { substituteVariablesInEnv , substituteVSCodeVariables } from "./config" ;
9- import { outputChannel , traceOutputChannel } from "./main" ;
7+ import { substituteVSCodeVariables } from "./config" ;
108import { randomUUID } from "crypto" ;
119
1210export interface Env {
@@ -65,41 +63,17 @@ function renderHoverActions(actions: ra.CommandLinkGroup[]): vscode.MarkdownStri
6563}
6664
6765export async function createClient (
68- serverPath : string ,
69- workspace : Workspace ,
70- extraEnv : Env
66+ traceOutputChannel : vscode . OutputChannel ,
67+ outputChannel : vscode . OutputChannel ,
68+ initializationOptions : vscode . WorkspaceConfiguration ,
69+ serverOptions : lc . ServerOptions
7170) : Promise < lc . LanguageClient > {
72- // '.' Is the fallback if no folder is open
73- // TODO?: Workspace folders support Uri's (eg: file://test.txt).
74- // It might be a good idea to test if the uri points to a file.
75-
76- const newEnv = substituteVariablesInEnv ( Object . assign ( { } , process . env , extraEnv ) ) ;
77- const run : lc . Executable = {
78- command : serverPath ,
79- options : { env : newEnv } ,
80- } ;
81- const serverOptions : lc . ServerOptions = {
82- run,
83- debug : run ,
84- } ;
85-
86- let rawInitializationOptions = vscode . workspace . getConfiguration ( "rust-analyzer" ) ;
87-
88- if ( workspace . kind === "Detached Files" ) {
89- rawInitializationOptions = {
90- detachedFiles : workspace . files . map ( ( file ) => file . uri . fsPath ) ,
91- ...rawInitializationOptions ,
92- } ;
93- }
94-
95- const initializationOptions = substituteVSCodeVariables ( rawInitializationOptions ) ;
96-
9771 const clientOptions : lc . LanguageClientOptions = {
9872 documentSelector : [ { scheme : "file" , language : "rust" } ] ,
9973 initializationOptions,
10074 diagnosticCollectionName : "rustc" ,
101- traceOutputChannel : traceOutputChannel ( ) ,
102- outputChannel : outputChannel ( ) ,
75+ traceOutputChannel,
76+ outputChannel,
10377 middleware : {
10478 workspace : {
10579 async configuration (
@@ -273,6 +247,9 @@ export async function createClient(
273247}
274248
275249class ExperimentalFeatures implements lc . StaticFeature {
250+ getState ( ) : lc . FeatureState {
251+ return { kind : "static" } ;
252+ }
276253 fillClientCapabilities ( capabilities : lc . ClientCapabilities ) : void {
277254 const caps : any = capabilities . experimental ?? { } ;
278255 caps . snippetTextEdit = true ;
0 commit comments