11import { GetConfig } from '../types'
2+ import { handleFunctionRefactorEdits , processApplicableRefactors } from './functionExtractors'
23import getCodeActions , { REFACTORS_CATEGORY } from './getCodeActions'
34import improveBuiltin from './improveBuiltin'
45
56export default ( proxy : ts . LanguageService , languageService : ts . LanguageService , c : GetConfig ) => {
67 proxy . getApplicableRefactors = ( fileName , positionOrRange , preferences ) => {
78 let prior = languageService . getApplicableRefactors ( fileName , positionOrRange , preferences )
89
10+ processApplicableRefactors (
11+ prior . find ( r => r . description === 'Extract function' ) ,
12+ c ,
13+ )
14+
915 if ( c ( 'markTsCodeActions.enable' ) ) prior = prior . map ( item => ( { ...item , description : `🔵 ${ item . description } ` } ) )
1016
1117 const program = languageService . getProgram ( )
@@ -24,6 +30,10 @@ export default (proxy: ts.LanguageService, languageService: ts.LanguageService,
2430 const { edit } = getCodeActions ( sourceFile , positionOrRange , actionName )
2531 return edit
2632 }
33+ if ( refactorName === 'Extract Symbol' && actionName . startsWith ( 'function_scope' ) ) {
34+ const handledResult = handleFunctionRefactorEdits ( actionName , languageService , fileName , formatOptions , positionOrRange , refactorName , preferences )
35+ if ( handledResult ) return handledResult
36+ }
2737 const prior = languageService . getEditsForRefactor ( fileName , formatOptions , positionOrRange , refactorName , actionName , preferences )
2838 if ( ! prior ) return
2939 return improveBuiltin ( fileName , refactorName , actionName , languageService , c , prior ) ?? prior
0 commit comments