1
1
/* eslint-disable sonarjs/no-duplicate-string */
2
2
import * as monaco from 'monaco-editor' ;
3
- import type * as vscode from 'vscode-languageserver-types ' ;
3
+ import type * as vscode from 'vscode-languageserver-protocol ' ;
4
4
import * as ts from 'typescript/lib/tsserverlibrary' ;
5
5
import { createLanguageService , type LanguageService , type LanguageServiceHost } from '@volar/vue-language-service' ;
6
6
import type { Ref } from 'vue' ;
7
7
import { onBeforeUnmount , ref } from 'vue' ;
8
8
import * as code2monaco from './code2monaco' ;
9
+ import * as monaco2code from './monaco2code' ;
9
10
import libEs5Content from 'typescript/lib/lib.es5.d.ts?raw' ;
10
11
import libDomContent from 'typescript/lib/lib.dom.d.ts?raw' ;
11
12
import libDtsContent from 'typescript/lib/lib.d.ts?raw' ;
@@ -199,15 +200,9 @@ export async function setupLs(modelsMap: Ref<Map<string, monaco.editor.ITextMode
199
200
triggerCharacters : '!@#$%^&*()_+-=`~{}|[]\:";\'<>?,./ ' . split ( '' ) ,
200
201
provideCompletionItems : async ( model , position , context ) => {
201
202
const codeResult = await ls . doComplete (
202
- model . uri . fsPath ,
203
- {
204
- line : position . lineNumber - 1 ,
205
- character : position . column - 1 ,
206
- } ,
207
- {
208
- triggerKind : ( context . triggerKind + 1 ) as any ,
209
- triggerCharacter : context . triggerCharacter ,
210
- } ,
203
+ model . uri . toString ( ) ,
204
+ monaco2code . asPosition ( position ) ,
205
+ monaco2code . asCompletionContext ( context ) ,
211
206
) ;
212
207
const monacoResult = code2monaco . asCompletionList ( codeResult ) ;
213
208
for ( let i = 0 ; i < codeResult . items . length ; i ++ ) {
@@ -232,33 +227,21 @@ export async function setupLs(modelsMap: Ref<Map<string, monaco.editor.ITextMode
232
227
disposables . value . push (
233
228
monaco . languages . registerHoverProvider ( lang , {
234
229
provideHover : async ( model , position ) => {
235
- const info : vscode . Hover | undefined = await ls . doHover ( model . uri . fsPath , {
236
- line : position . lineNumber - 1 ,
237
- character : position . column - 1 ,
238
- } ) ;
239
- if ( ! info ) {
240
- return undefined ;
230
+ const codeResult = await ls . doHover (
231
+ model . uri . toString ( ) ,
232
+ monaco2code . asPosition ( position ) ,
233
+ ) ;
234
+ if ( codeResult ) {
235
+ return code2monaco . asHover ( codeResult ) ;
241
236
}
242
- const results : monaco . languages . Hover = {
243
- contents : ( Array . isArray ( info . contents )
244
- ? ( info . contents as string [ ] )
245
- : typeof info . contents === 'string'
246
- ? [ info . contents ]
247
- : [ info . contents . value ]
248
- ) . map ( ( x ) => ( {
249
- value : x ,
250
- } ) ) ,
251
- } ;
252
-
253
- return results ;
254
237
} ,
255
238
} ) ,
256
239
) ;
257
240
258
241
disposables . value . push (
259
242
monaco . languages . registerDefinitionProvider ( lang , {
260
243
provideDefinition : async ( model , position ) => {
261
- const result = await ls . findDefinition ( model . uri . fsPath , {
244
+ const result = await ls . findDefinition ( model . uri . toString ( ) , {
262
245
line : position . lineNumber - 1 ,
263
246
character : position . column - 1 ,
264
247
} ) ;
@@ -288,7 +271,7 @@ export async function setupLs(modelsMap: Ref<Map<string, monaco.editor.ITextMode
288
271
monaco . languages . registerSignatureHelpProvider ( lang , {
289
272
signatureHelpTriggerCharacters : [ '(' , ',' ] ,
290
273
provideSignatureHelp : async ( model , position ) => {
291
- const result = await ls . getSignatureHelp ( model . uri . fsPath , {
274
+ const result = await ls . getSignatureHelp ( model . uri . toString ( ) , {
292
275
line : position . lineNumber - 1 ,
293
276
character : position . column - 1 ,
294
277
} ) ;
@@ -326,7 +309,7 @@ export function setupValidate(editor: monaco.editor.IStandaloneCodeEditor, ls: L
326
309
throw new Error ( 'No model' ) ;
327
310
}
328
311
329
- const diagnostics = await ls . doValidation ( model . uri . fsPath ) ;
312
+ const diagnostics = await ls . doValidation ( model . uri . toString ( ) ) ;
330
313
monaco . editor . setModelMarkers (
331
314
model ,
332
315
lang ,
0 commit comments