From a5fdaec56cb562f555f616e984097fd93417ae83 Mon Sep 17 00:00:00 2001 From: Bao <6306455+baodrate@users.noreply.github.com> Date: Thu, 31 Oct 2024 09:02:36 -0500 Subject: [PATCH] fix: guard against uninitialized codemirror instance (#246) In obsidian (>=v1.7.2?) the codemirror instance is often not unitialized at times, triggering some uncaught exceptions. This is particularly noticable when: - (w/ "Vim chord display" enabled) opening the vault w/o a note opened - closing all tabs and opening a note Add some null guards to avoid these errors --- main.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/main.ts b/main.ts index dbb3b84..812ba66 100644 --- a/main.ts +++ b/main.ts @@ -153,6 +153,7 @@ export default class VimrcPlugin extends Plugin { if (!view) return; let cm = this.getCodeMirror(view); + if (!cm) return; if ( this.getCursorActivityHandlers(cm).some( (e: { name: string }) => e.name === "updateSelection") @@ -180,6 +181,8 @@ export default class VimrcPlugin extends Plugin { this.currentVimStatus = vimStatus.normal; if (this.settings.displayVimMode) this.updateVimStatusBar(); + + if (!cmEditor) return; cmEditor.off('vim-mode-change', this.logVimModeChange); cmEditor.on('vim-mode-change', this.logVimModeChange); @@ -580,7 +583,9 @@ export default class VimrcPlugin extends Plugin { this.vimChordStatusBar.parentElement.insertBefore(this.vimChordStatusBar, parent.firstChild); this.vimChordStatusBar.style.marginRight = "auto"; - let cmEditor = this.getCodeMirror(this.getActiveView()); + const view = this.getActiveView(); + if (!view) return; + let cmEditor = this.getCodeMirror(view); // See https://codemirror.net/doc/manual.html#vimapi_events for events. cmEditor.off('vim-keypress', this.onVimKeypress); cmEditor.on('vim-keypress', this.onVimKeypress);