Skip to content

Commit 980186c

Browse files
committed
commit codeactions files :xd:
1 parent b65558e commit 980186c

3 files changed

Lines changed: 25 additions & 1 deletion

File tree

typescript/src/codeActions/decorateProxy.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
11
import { GetConfig } from '../types'
2+
import { handleFunctionRefactorEdits, processApplicableRefactors } from './functionExtractors'
23
import getCodeActions, { REFACTORS_CATEGORY } from './getCodeActions'
34
import improveBuiltin from './improveBuiltin'
45

56
export 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

typescript/src/codeActions/functionExtractors.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { GetConfig } from '../types'
2-
import { dedentString, findChildContainingExactPosition, findChildContainingPositionMaxDepth } from '../utils'
2+
import { dedentString, findChildContainingPositionMaxDepth } from '../utils'
33

44
export const processApplicableRefactors = (refactor: ts.ApplicableRefactorInfo | undefined, c: GetConfig) => {
55
if (!refactor) return

typescript/src/utils.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,20 @@ export const getChangesTracker = formatOptions => {
172172
return new tsFull.textChanges.ChangeTracker(/* will be normalized by vscode anyway */ '\n', tsFull.formatting.getFormatContext(formatOptions, {}))
173173
}
174174

175+
export const dedentString = (string: string, addIndent = '', trimFirstLines = false) => {
176+
let lines = string.split('\n')
177+
if (trimFirstLines) {
178+
let hitNonEmpty = false
179+
lines = lines.filter(line => {
180+
if (!hitNonEmpty && !line) return false
181+
hitNonEmpty = true
182+
return true
183+
})
184+
}
185+
const minIndent = Math.min(...lines.filter(Boolean).map(line => line.match(/^\s*/)![0].length))
186+
return lines.map(line => addIndent + line.slice(minIndent)).join('\n')
187+
}
188+
175189
export const getCancellationToken = (languageServiceHost: ts.LanguageServiceHost) => {
176190
let cancellationToken = languageServiceHost.getCancellationToken?.() as ts.CancellationToken | undefined
177191
// if (!cancellationToken) {

0 commit comments

Comments
 (0)