Skip to content

Commit 5e2ad64

Browse files
authored
Merge pull request #55 from CodinGame/lazyload-vim-emacs
Lazyload vim/emacs extensions
2 parents e750240 + 99b1f20 commit 5e2ad64

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

src/keybindings/index.ts

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,35 @@
11
import * as monaco from 'monaco-editor'
2-
import EmacsExtension from 'monaco-emacs'
3-
import { initVimMode } from './vim'
42

53
export function updateKeybindings (bindings: monaco.extra.IUserFriendlyKeybinding[]): void {
64
const keybindingService = monaco.extra.StandaloneServices.get(monaco.extra.IKeybindingService) as monaco.extra.StandaloneKeybindingService
75
keybindingService.setUserKeybindings(bindings)
86
}
97

8+
class PromiseDisposable implements monaco.IDisposable {
9+
constructor (private promise: Promise<monaco.IDisposable>) {}
10+
11+
dispose (): void {
12+
this.promise.then(disposable => disposable.dispose(), console.error)
13+
}
14+
}
15+
1016
export function updateEditorKeybindingsMode (
1117
editor: monaco.editor.IStandaloneCodeEditor,
1218
keyBindingsMode: 'classic' | 'vim' | 'emacs' = 'classic',
1319
statusBarElement: Element
1420
): monaco.IDisposable {
1521
switch (keyBindingsMode) {
1622
case 'vim': {
17-
return initVimMode(editor, statusBarElement)
23+
return new PromiseDisposable(import('./vim').then(({ initVimMode }) => {
24+
return initVimMode(editor, statusBarElement)
25+
}))
1826
}
1927
case 'emacs': {
20-
const emacsExtension = new EmacsExtension(editor)
21-
emacsExtension.start()
22-
return emacsExtension
28+
return new PromiseDisposable(import('monaco-emacs').then(({ default: EmacsExtension }) => {
29+
const emacsExtension = new EmacsExtension(editor)
30+
emacsExtension.start()
31+
return emacsExtension
32+
}))
2333
}
2434
default: {
2535
return {

0 commit comments

Comments
 (0)