@@ -68,33 +68,54 @@ const plugin = createLanguageServicePlugin((ts, info) => {
6868 matchesPattern ,
6969 config ,
7070 ) ;
71- session . addProtocolHandler ( '_css-modules-kit:rename' , ( request ) => {
72- const { fileName, position } = request . arguments ;
73- const result = info . languageService . findRenameLocations ( fileName , position , false , false , { } ) ;
74- return { response : { result } } ;
75- } ) ;
76- session . addProtocolHandler ( '_css-modules-kit:renameInfo' , ( request ) => {
77- const { fileName, position } = request . arguments ;
78- const result = info . languageService . getRenameInfo ( fileName , position , { } ) ;
79- return { response : { result } } ;
80- } ) ;
81- session . addProtocolHandler ( '_css-modules-kit:documentLink' , ( request ) => {
82- const { fileName } = request . arguments ;
83- const script = language . scripts . get ( fileName ) ;
84- const links : DocumentLink [ ] = [ ] ;
85- if ( isCSSModuleScript ( script ) ) {
86- const { tokenImporters } = script . generated . root [ CMK_DATA_KEY ] . cssModule ;
87- for ( const { from, fromLoc } of tokenImporters ) {
88- const resolved = resolver ( from , { request : fileName } ) ;
89- if ( ! resolved ) continue ;
90- links . push ( {
91- fileName : resolved ,
92- textSpan : { start : fromLoc . start . offset , length : fromLoc . end . offset - fromLoc . start . offset } ,
93- } ) ;
71+ try {
72+ session . addProtocolHandler ( '_css-modules-kit:rename' , ( request ) => {
73+ const project = info . project . projectService . getDefaultProjectForFile (
74+ ts . server . toNormalizedPath ( request . arguments . fileName ) ,
75+ true ,
76+ ) ;
77+ if ( ! project ) {
78+ return { response : { result : [ ] } } ;
9479 }
95- }
96- return { response : { result : links } } ;
97- } ) ;
80+ const languageService = project . getLanguageService ( ) ;
81+ const { fileName, position } = request . arguments ;
82+ const result = languageService . findRenameLocations ( fileName , position , false , false , { } ) ;
83+ return { response : { result } } ;
84+ } ) ;
85+ session . addProtocolHandler ( '_css-modules-kit:renameInfo' , ( request ) => {
86+ const project = info . project . projectService . getDefaultProjectForFile (
87+ ts . server . toNormalizedPath ( request . arguments . fileName ) ,
88+ true ,
89+ ) ;
90+ if ( ! project ) {
91+ return { response : { result : { canRename : false , localizedErrorMessage : '' } as const } } ;
92+ }
93+ const languageService = project . getLanguageService ( ) ;
94+ const { fileName, position } = request . arguments ;
95+ const result = languageService . getRenameInfo ( fileName , position , { } ) ;
96+ return { response : { result } } ;
97+ } ) ;
98+ session . addProtocolHandler ( '_css-modules-kit:documentLink' , ( request ) => {
99+ // TODO: Get `language` instance related to `request.arguments.fileName`
100+ const { fileName } = request . arguments ;
101+ const script = language . scripts . get ( fileName ) ;
102+ const links : DocumentLink [ ] = [ ] ;
103+ if ( isCSSModuleScript ( script ) ) {
104+ const { tokenImporters } = script . generated . root [ CMK_DATA_KEY ] . cssModule ;
105+ for ( const { from, fromLoc } of tokenImporters ) {
106+ const resolved = resolver ( from , { request : fileName } ) ;
107+ if ( ! resolved ) continue ;
108+ links . push ( {
109+ fileName : resolved ,
110+ textSpan : { start : fromLoc . start . offset , length : fromLoc . end . offset - fromLoc . start . offset } ,
111+ } ) ;
112+ }
113+ }
114+ return { response : { result : links } } ;
115+ } ) ;
116+ } catch {
117+ console . log ( 'already registered' ) ;
118+ }
98119 } ,
99120 } ;
100121} ) ;
0 commit comments