39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
import {
|
|
type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
|
logEvent,
|
|
} from '../../services/analytics/index.js'
|
|
import type { LocalCommandCall } from '../../types/command.js'
|
|
import { getGlobalConfig, saveGlobalConfig } from '../../utils/config.js'
|
|
|
|
export const call: LocalCommandCall = async () => {
|
|
const config = getGlobalConfig()
|
|
let currentMode = config.editorMode || 'normal'
|
|
|
|
// Handle backward compatibility - treat 'emacs' as 'normal'
|
|
if (currentMode === 'emacs') {
|
|
currentMode = 'normal'
|
|
}
|
|
|
|
const newMode = currentMode === 'normal' ? 'vim' : 'normal'
|
|
|
|
saveGlobalConfig(current => ({
|
|
...current,
|
|
editorMode: newMode,
|
|
}))
|
|
|
|
logEvent('tengu_editor_mode_changed', {
|
|
mode: newMode as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
|
source:
|
|
'command' as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
|
})
|
|
|
|
return {
|
|
type: 'text',
|
|
value: `Editor mode set to ${newMode}. ${
|
|
newMode === 'vim'
|
|
? 'Use Escape key to toggle between INSERT and NORMAL modes.'
|
|
: 'Using standard (readline) keyboard bindings.'
|
|
}`,
|
|
}
|
|
}
|