11/* eslint-disable sonarjs/no-duplicate-string */
22import * as monaco from 'monaco-editor' ;
3- import type * as vscode from 'vscode-languageserver-types ' ;
3+ import type * as vscode from 'vscode-languageserver-protocol ' ;
44import * as ts from 'typescript/lib/tsserverlibrary' ;
55import { createLanguageService , type LanguageService , type LanguageServiceHost } from '@volar/vue-language-service' ;
66import type { Ref } from 'vue' ;
77import { onBeforeUnmount , ref } from 'vue' ;
88import * as code2monaco from './code2monaco' ;
9+ import * as monaco2code from './monaco2code' ;
910import libEs5Content from 'typescript/lib/lib.es5.d.ts?raw' ;
1011import libDomContent from 'typescript/lib/lib.dom.d.ts?raw' ;
1112import libDtsContent from 'typescript/lib/lib.d.ts?raw' ;
@@ -199,15 +200,9 @@ export async function setupLs(modelsMap: Ref<Map<string, monaco.editor.ITextMode
199200 triggerCharacters : '!@#$%^&*()_+-=`~{}|[]\:";\'<>?,./ ' . split ( '' ) ,
200201 provideCompletionItems : async ( model , position , context ) => {
201202 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 ) ,
211206 ) ;
212207 const monacoResult = code2monaco . asCompletionList ( codeResult ) ;
213208 for ( let i = 0 ; i < codeResult . items . length ; i ++ ) {
@@ -232,33 +227,21 @@ export async function setupLs(modelsMap: Ref<Map<string, monaco.editor.ITextMode
232227 disposables . value . push (
233228 monaco . languages . registerHoverProvider ( lang , {
234229 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 ) ;
241236 }
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 ;
254237 } ,
255238 } ) ,
256239 ) ;
257240
258241 disposables . value . push (
259242 monaco . languages . registerDefinitionProvider ( lang , {
260243 provideDefinition : async ( model , position ) => {
261- const result = await ls . findDefinition ( model . uri . fsPath , {
244+ const result = await ls . findDefinition ( model . uri . toString ( ) , {
262245 line : position . lineNumber - 1 ,
263246 character : position . column - 1 ,
264247 } ) ;
@@ -288,7 +271,7 @@ export async function setupLs(modelsMap: Ref<Map<string, monaco.editor.ITextMode
288271 monaco . languages . registerSignatureHelpProvider ( lang , {
289272 signatureHelpTriggerCharacters : [ '(' , ',' ] ,
290273 provideSignatureHelp : async ( model , position ) => {
291- const result = await ls . getSignatureHelp ( model . uri . fsPath , {
274+ const result = await ls . getSignatureHelp ( model . uri . toString ( ) , {
292275 line : position . lineNumber - 1 ,
293276 character : position . column - 1 ,
294277 } ) ;
@@ -326,7 +309,7 @@ export function setupValidate(editor: monaco.editor.IStandaloneCodeEditor, ls: L
326309 throw new Error ( 'No model' ) ;
327310 }
328311
329- const diagnostics = await ls . doValidation ( model . uri . fsPath ) ;
312+ const diagnostics = await ls . doValidation ( model . uri . toString ( ) ) ;
330313 monaco . editor . setModelMarkers (
331314 model ,
332315 lang ,
0 commit comments