@@ -4,9 +4,7 @@ import * as ra from "../src/lsp_ext";
4
4
import * as Is from "vscode-languageclient/lib/common/utils/is" ;
5
5
import { assert } from "./util" ;
6
6
import { 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" ;
10
8
import { randomUUID } from "crypto" ;
11
9
12
10
export interface Env {
@@ -65,41 +63,17 @@ function renderHoverActions(actions: ra.CommandLinkGroup[]): vscode.MarkdownStri
65
63
}
66
64
67
65
export 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
71
70
) : 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
-
97
71
const clientOptions : lc . LanguageClientOptions = {
98
72
documentSelector : [ { scheme : "file" , language : "rust" } ] ,
99
73
initializationOptions,
100
74
diagnosticCollectionName : "rustc" ,
101
- traceOutputChannel : traceOutputChannel ( ) ,
102
- outputChannel : outputChannel ( ) ,
75
+ traceOutputChannel,
76
+ outputChannel,
103
77
middleware : {
104
78
workspace : {
105
79
async configuration (
@@ -273,6 +247,9 @@ export async function createClient(
273
247
}
274
248
275
249
class ExperimentalFeatures implements lc . StaticFeature {
250
+ getState ( ) : lc . FeatureState {
251
+ return { kind : "static" } ;
252
+ }
276
253
fillClientCapabilities ( capabilities : lc . ClientCapabilities ) : void {
277
254
const caps : any = capabilities . experimental ?? { } ;
278
255
caps . snippetTextEdit = true ;
0 commit comments