@@ -25,9 +25,17 @@ import { getLanguageService } from './lib/reactionsAnalyzeLS';
25
25
26
26
const connection = createConnection ( ) ;
27
27
const server = createServer ( connection ) ;
28
+ const tsserverRequestHandlers = new Map < number , ( res : any ) => void > ( ) ;
29
+
30
+ let tsserverRequestId = 0 ;
28
31
29
32
connection . listen ( ) ;
30
33
34
+ connection . onNotification ( 'tsserver/response' , ( [ id , res ] ) => {
35
+ tsserverRequestHandlers . get ( id ) ?.( res ) ;
36
+ tsserverRequestHandlers . delete ( id ) ;
37
+ } ) ;
38
+
31
39
connection . onInitialize ( params => {
32
40
const tsconfigProjects = createUriMap < LanguageService > ( ) ;
33
41
const file2ProjectInfo = new Map < string , Promise < ts . server . protocol . ProjectInfo | null > > ( ) ;
@@ -43,15 +51,7 @@ connection.onInitialize(params => {
43
51
}
44
52
} ) ;
45
53
46
- let simpleLs : LanguageService | undefined ;
47
- let tsserverRequestId = 0 ;
48
-
49
- const tsserverRequestHandlers = new Map < number , ( res : any ) => void > ( ) ;
50
-
51
- connection . onNotification ( 'tsserver/response' , ( [ id , res ] ) => {
52
- tsserverRequestHandlers . get ( id ) ?.( res ) ;
53
- tsserverRequestHandlers . delete ( id ) ;
54
- } ) ;
54
+ let simpleLanguageService : LanguageService | undefined ;
55
55
56
56
return server . initialize (
57
57
params ,
@@ -62,7 +62,7 @@ connection.onInitialize(params => {
62
62
const fileName = uri . fsPath . replace ( / \\ / g, '/' ) ;
63
63
let projectInfoPromise = file2ProjectInfo . get ( fileName ) ;
64
64
if ( ! projectInfoPromise ) {
65
- projectInfoPromise = sendTsRequest < ts . server . protocol . ProjectInfo > (
65
+ projectInfoPromise = sendTsServerRequest < ts . server . protocol . ProjectInfo > (
66
66
'_vue:' + ts . server . protocol . CommandTypes . ProjectInfo ,
67
67
{
68
68
file : fileName ,
@@ -74,63 +74,63 @@ connection.onInitialize(params => {
74
74
const projectInfo = await projectInfoPromise ;
75
75
if ( projectInfo ) {
76
76
const { configFileName } = projectInfo ;
77
- let ls = tsconfigProjects . get ( URI . file ( configFileName ) ) ;
78
- if ( ! ls ) {
79
- ls = createLs ( server , configFileName ) ;
80
- tsconfigProjects . set ( URI . file ( configFileName ) , ls ) ;
77
+ let languageService = tsconfigProjects . get ( URI . file ( configFileName ) ) ;
78
+ if ( ! languageService ) {
79
+ languageService = createProjectLanguageService ( server , configFileName ) ;
80
+ tsconfigProjects . set ( URI . file ( configFileName ) , languageService ) ;
81
81
}
82
- return ls ;
82
+ return languageService ;
83
83
}
84
84
}
85
- return simpleLs ??= createLs ( server , undefined ) ;
85
+ return simpleLanguageService ??= createProjectLanguageService ( server , undefined ) ;
86
86
} ,
87
87
getExistingLanguageServices ( ) {
88
88
return Promise . all ( [
89
89
...tsconfigProjects . values ( ) ,
90
- simpleLs ,
90
+ simpleLanguageService ,
91
91
] . filter ( promise => ! ! promise ) ) ;
92
92
} ,
93
93
reload ( ) {
94
- for ( const ls of tsconfigProjects . values ( ) ) {
95
- ls . dispose ( ) ;
94
+ for ( const languageService of tsconfigProjects . values ( ) ) {
95
+ languageService . dispose ( ) ;
96
96
}
97
97
tsconfigProjects . clear ( ) ;
98
- if ( simpleLs ) {
99
- simpleLs . dispose ( ) ;
100
- simpleLs = undefined ;
98
+ if ( simpleLanguageService ) {
99
+ simpleLanguageService . dispose ( ) ;
100
+ simpleLanguageService = undefined ;
101
101
}
102
102
} ,
103
103
} ,
104
104
createVueLanguageServicePlugins ( ts , {
105
105
collectExtractProps ( ...args ) {
106
- return sendTsRequest ( '_vue:collectExtractProps' , args ) ;
106
+ return sendTsServerRequest ( '_vue:collectExtractProps' , args ) ;
107
107
} ,
108
108
getComponentDirectives ( ...args ) {
109
- return sendTsRequest ( '_vue:getComponentDirectives' , args ) ;
109
+ return sendTsServerRequest ( '_vue:getComponentDirectives' , args ) ;
110
110
} ,
111
111
getComponentEvents ( ...args ) {
112
- return sendTsRequest ( '_vue:getComponentEvents' , args ) ;
112
+ return sendTsServerRequest ( '_vue:getComponentEvents' , args ) ;
113
113
} ,
114
114
getComponentNames ( ...args ) {
115
- return sendTsRequest ( '_vue:getComponentNames' , args ) ;
115
+ return sendTsServerRequest ( '_vue:getComponentNames' , args ) ;
116
116
} ,
117
117
getComponentProps ( ...args ) {
118
- return sendTsRequest ( '_vue:getComponentProps' , args ) ;
118
+ return sendTsServerRequest ( '_vue:getComponentProps' , args ) ;
119
119
} ,
120
120
getElementAttrs ( ...args ) {
121
- return sendTsRequest ( '_vue:getElementAttrs' , args ) ;
121
+ return sendTsServerRequest ( '_vue:getElementAttrs' , args ) ;
122
122
} ,
123
123
getElementNames ( ...args ) {
124
- return sendTsRequest ( '_vue:getElementNames' , args ) ;
124
+ return sendTsServerRequest ( '_vue:getElementNames' , args ) ;
125
125
} ,
126
126
getImportPathForFile ( ...args ) {
127
- return sendTsRequest ( '_vue:getImportPathForFile' , args ) ;
127
+ return sendTsServerRequest ( '_vue:getImportPathForFile' , args ) ;
128
128
} ,
129
129
getPropertiesAtLocation ( ...args ) {
130
- return sendTsRequest ( '_vue:getPropertiesAtLocation' , args ) ;
130
+ return sendTsServerRequest ( '_vue:getPropertiesAtLocation' , args ) ;
131
131
} ,
132
132
getDocumentHighlights ( fileName , position ) {
133
- return sendTsRequest (
133
+ return sendTsServerRequest (
134
134
'_vue:documentHighlights-full' ,
135
135
{
136
136
file : fileName ,
@@ -140,7 +140,7 @@ connection.onInitialize(params => {
140
140
) ;
141
141
} ,
142
142
async getQuickInfoAtPosition ( fileName , { line, character } ) {
143
- const result = await sendTsRequest < ts . QuickInfo > (
143
+ const result = await sendTsServerRequest < ts . QuickInfo > (
144
144
'_vue:' + ts . server . protocol . CommandTypes . Quickinfo ,
145
145
{
146
146
file : fileName ,
@@ -153,15 +153,15 @@ connection.onInitialize(params => {
153
153
} ) ,
154
154
) ;
155
155
156
- async function sendTsRequest < T > ( command : string , args : any ) : Promise < T | null > {
156
+ async function sendTsServerRequest < T > ( command : string , args : any ) : Promise < T | null > {
157
157
return await new Promise < T | null > ( resolve => {
158
158
const requestId = ++ tsserverRequestId ;
159
159
tsserverRequestHandlers . set ( requestId , resolve ) ;
160
160
connection . sendNotification ( 'tsserver/request' , [ requestId , command , args ] ) ;
161
161
} ) ;
162
162
}
163
163
164
- function createLs ( server : LanguageServer , tsconfig : string | undefined ) {
164
+ function createProjectLanguageService ( server : LanguageServer , tsconfig : string | undefined ) {
165
165
const commonLine = tsconfig
166
166
? createParsedCommandLine ( ts , ts . sys , tsconfig )
167
167
: {
0 commit comments