index.ts 838 B

1234567891011121314151617181920212223242526
  1. import type { Extension } from '@codemirror/state';
  2. import { keymap } from '@codemirror/view';
  3. export const getKeymap = async(keyMapName?: KeyMapMode, onSave?: () => void): Promise<Extension> => {
  4. switch (keyMapName) {
  5. case 'vim':
  6. return (await import('./vim')).vimKeymap(onSave);
  7. case 'emacs':
  8. return (await import('@replit/codemirror-emacs')).emacs();
  9. case 'vscode':
  10. return keymap.of((await import('@replit/codemirror-vscode-keymap')).vscodeKeymap);
  11. }
  12. return keymap.of((await import('@codemirror/commands')).defaultKeymap);
  13. };
  14. const KeyMapMode = {
  15. default: 'default',
  16. vim: 'vim',
  17. emacs: 'emacs',
  18. vscode: 'vscode',
  19. } as const;
  20. export const DEFAULT_KEYMAP = 'default';
  21. export const AllKeyMap = Object.values(KeyMapMode);
  22. export type KeyMapMode = typeof KeyMapMode[keyof typeof KeyMapMode];