diff options
Diffstat (limited to 'packages/core/src/utils/editor.ts')
| -rw-r--r-- | packages/core/src/utils/editor.ts | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/packages/core/src/utils/editor.ts b/packages/core/src/utils/editor.ts index 6be5cffb..4d09e3a9 100644 --- a/packages/core/src/utils/editor.ts +++ b/packages/core/src/utils/editor.ts @@ -6,7 +6,7 @@ import { execSync, spawn } from 'child_process'; -type EditorType = 'vscode' | 'vim'; +export type EditorType = 'vscode' | 'windsurf' | 'cursor' | 'vim'; interface DiffCommand { command: string; @@ -25,15 +25,18 @@ function commandExists(cmd: string): boolean { } } +const editorCommands: Record<EditorType, { win32: string; default: string }> = { + vscode: { win32: 'code.cmd', default: 'code' }, + windsurf: { win32: 'windsurf', default: 'windsurf' }, + cursor: { win32: 'cursor', default: 'cursor' }, + vim: { win32: 'vim', default: 'vim' }, +}; + export function checkHasEditor(editor: EditorType): boolean { - if (editor === 'vscode') { - return process.platform === 'win32' - ? commandExists('code.cmd') - : commandExists('code'); - } else if (editor === 'vim') { - return commandExists('vim'); - } - return false; + const commandConfig = editorCommands[editor]; + const command = + process.platform === 'win32' ? commandConfig.win32 : commandConfig.default; + return commandExists(command); } /** @@ -50,6 +53,16 @@ export function getDiffCommand( command: 'code', args: ['--wait', '--diff', oldPath, newPath], }; + case 'windsurf': + return { + command: 'windsurf', + args: ['--wait', '--diff', oldPath, newPath], + }; + case 'cursor': + return { + command: 'cursor', + args: ['--wait', '--diff', oldPath, newPath], + }; case 'vim': return { command: 'vim', |
