1- import { toGeneratedRange , toSourceRanges , transformFileTextChanges } from '@volar/typescript/lib/node/transform.js' ;
2- import { getServiceScript } from '@volar/typescript/lib/node/utils.js' ;
1+ import { transformFileTextChanges } from '@volar/typescript/lib/node/transform.js' ;
32import { createLanguageServicePlugin } from '@volar/typescript/lib/quickstart/createLanguageServicePlugin' ;
43import * as core from '@vue/language-core' ;
54import type * as ts from 'typescript' ;
6- import { createVueLanguageServiceProxy , resolveCompletionEntryDetails , resolveCompletionResult } from './lib/common' ;
5+ import {
6+ postprocessLanguageService ,
7+ preprocessLanguageService ,
8+ resolveCompletionEntryDetails ,
9+ resolveCompletionResult ,
10+ } from './lib/common' ;
711import type { Requests } from './lib/requests' ;
812import { collectExtractProps } from './lib/requests/collectExtractProps' ;
913import { getComponentDirectives } from './lib/requests/getComponentDirectives' ;
@@ -22,40 +26,7 @@ const projectToOriginalLanguageService = new WeakMap<ts.server.Project, ts.Langu
2226export = createLanguageServicePlugin (
2327 ( ts , info ) => {
2428 let _language : core . Language < string > | undefined ;
25- const { getCodeFixesAtPosition } = info . languageService ;
26- info . languageService . getCodeFixesAtPosition = ( fileName , start , end , errorCodes , formatOptions , preferences ) => {
27- let fixes = getCodeFixesAtPosition ( fileName , start , end , errorCodes , formatOptions , preferences ) ;
28- if ( _language ) {
29- const [ serviceScript , targetScript , sourceScript ] = getServiceScript ( _language , fileName ) ;
30- if ( serviceScript && sourceScript ?. generated ?. root instanceof core . VueVirtualCode ) {
31- for (
32- const sourceRange of toSourceRanges ( sourceScript , _language , serviceScript , start , end , true , ( ) => true )
33- ) {
34- const generateRange2 = toGeneratedRange (
35- _language ,
36- serviceScript ,
37- sourceScript ,
38- sourceRange [ 1 ] ,
39- sourceRange [ 2 ] ,
40- ( data : core . VueCodeInformation ) => typeof data . completion === 'object' && ! ! data . completion . isAdditional ,
41- ) ;
42- if ( generateRange2 !== undefined ) {
43- let importFixes = getCodeFixesAtPosition (
44- targetScript . id ,
45- generateRange2 [ 0 ] ,
46- generateRange2 [ 1 ] ,
47- [ 2304 ] , // Cannot find name 'xxx'.ts(2304)
48- formatOptions ,
49- preferences ,
50- ) ;
51- importFixes = importFixes . filter ( fix => fix . fixName === 'import' ) ;
52- fixes = fixes . concat ( importFixes ) ;
53- }
54- }
55- }
56- }
57- return fixes ;
58- } ;
29+ preprocessLanguageService ( info . languageService , ( ) => _language ) ;
5930
6031 projectToOriginalLanguageService . set ( info . project , info . languageService ) ;
6132
@@ -73,7 +44,7 @@ export = createLanguageServicePlugin(
7344 languagePlugins : [ languagePlugin ] ,
7445 setup : language => {
7546 _language = language ;
76- info . languageService = createVueLanguageServiceProxy (
47+ info . languageService = postprocessLanguageService (
7748 ts ,
7849 language ,
7950 info . languageService ,
0 commit comments