diff --git a/README.md b/README.md index 52cbd3a..a0b25dd 100644 --- a/README.md +++ b/README.md @@ -38,31 +38,6 @@ exmap forward obcommand app:go-forward nmap :forward ``` -## Emulate Common Vim Commands via Obsidian commands - -Using `obcommand`, it is possible to emulate some additional vim commands that aren't included in Obsidian's vim mode, like for example `gt` and and `zo`. - -```vim -" Emulate Folding https://vimhelp.org/fold.txt.html#fold-commands -exmap togglefold obcommand editor:toggle-fold -nmap zo :togglefold -nmap zc :togglefold -nmap za :togglefold - -exmap unfoldall obcommand editor:unfold-all -nmap zR :unfoldall - -exmap foldall obcommand editor:fold-all -nmap zM :foldall - -" Emulate Tab Switching https://vimhelp.org/tabpage.txt.html#gt -" requires Cycle Through Panes Plugins https://obsidian.md/plugins?id=cycle-through-panes -exmap tabnext obcommand cycle-through-panes:cycle-through-panes -nmap gt :tabnext -exmap tabprev obcommand cycle-through-panes:cycle-through-panes-reverse -nmap gT :tabprev -``` - ## Supported Commands The commands that can be used are whatever CodeMirror supports. @@ -186,6 +161,32 @@ map :pasteinto But first `` must be unbound with `unmap `. Afterwards `` can be mapped normally as any other key. + +## Emulate Common Vim Commands via Obsidian commands + +Using `obcommand`, it is possible to emulate some additional Vim commands that aren't included in Obsidian's Vim mode, like for example `gt` and `zo`. + +```vim +" Emulate Folding https://vimhelp.org/fold.txt.html#fold-commands +exmap togglefold obcommand editor:toggle-fold +nmap zo :togglefold +nmap zc :togglefold +nmap za :togglefold + +exmap unfoldall obcommand editor:unfold-all +nmap zR :unfoldall + +exmap foldall obcommand editor:fold-all +nmap zM :foldall + +" Emulate Tab Switching https://vimhelp.org/tabpage.txt.html#gt +" requires Cycle Through Panes Plugins https://obsidian.md/plugins?id=cycle-through-panes +exmap tabnext obcommand cycle-through-panes:cycle-through-panes +nmap gt :tabnext +exmap tabprev obcommand cycle-through-panes:cycle-through-panes-reverse +nmap gT :tabprev +``` + ## Fixed Keyboard Layout in Normal Mode **Note:** this is currently unsupported for the new (CM6-based) editor. @@ -261,6 +262,10 @@ See [here](JsSnippets.md) for the full example, and please contribute your own! **IMPORTANT: this version drops support for the legacy (CM5) Obsidian editor.** If you are sticking to the legacy editor until Obsidian removes it, you cannot upgrade to this version of the plugin. +- Removed support for the legacy (CM5) editor. + - This fixes [issues](https://github.com/esm7/obsidian-vimrc-support/issues/118) in the detection of the editor type. +- Support for Obsidian 0.15 multi windows (https://github.com/esm7/obsidian-vimrc-support/pull/110). + ### 0.6.3 Added `selection` also to `jsfile` (thanks @twio142!) diff --git a/main.ts b/main.ts index 752d8d2..5b30fce 100644 --- a/main.ts +++ b/main.ts @@ -1,5 +1,5 @@ import * as keyFromAccelerator from 'keyboardevent-from-electron-accelerator'; -import { Editor, EditorSelection, Notice, App, MarkdownView, Plugin, PluginSettingTab, Setting, TFile } from 'obsidian'; +import { EditorSelection, Notice, App, MarkdownView, Plugin, PluginSettingTab, Setting, TFile } from 'obsidian'; declare const CodeMirror: any; @@ -43,7 +43,6 @@ export default class VimrcPlugin extends Plugin { settings: Settings; private codeMirrorVimObject: any = null; - private editorMode: 'cm5' | 'cm6' = null; private initialized = false; private lastYankBuffer: string[] = [""]; @@ -82,9 +81,9 @@ export default class VimrcPlugin extends Plugin { this.codeMirrorVimObject = (window as any).CodeMirrorAdapter?.Vim; - await this.registerYankEvents(activeWindow) + this.registerYankEvents(activeWindow); this.app.workspace.on("window-open", (workspaceWindow, w) => { - this.registerYankEvents(w) + this.registerYankEvents(w); }) this.initialized = true; @@ -428,21 +427,21 @@ export default class VimrcPlugin extends Plugin { return } - const yankRegister = this.codeMirrorVimObject.getRegisterController().getRegister('yank') + const yankRegister = this.codeMirrorVimObject.getRegisterController().getRegister('yank'); const currentYankBuffer = yankRegister.keyBuffer; // yank -> clipboard const buf = currentYankBuffer[0] if (buf !== this.lastYankBuffer[0]) { await win.navigator.clipboard.writeText(buf); - this.lastYankBuffer = currentYankBuffer - this.lastSystemClipboard = await win.navigator.clipboard.readText() + this.lastYankBuffer = currentYankBuffer; + this.lastSystemClipboard = await win.navigator.clipboard.readText(); return } // clipboard -> yank try { - const currentClipboardText = await win.navigator.clipboard.readText() + const currentClipboardText = await win.navigator.clipboard.readText(); if (currentClipboardText !== this.lastSystemClipboard) { yankRegister.setText(currentClipboardText); this.lastYankBuffer = yankRegister.keyBuffer; diff --git a/package.json b/package.json index 76c4eab..e1e3b7f 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "@types/node": "^14.14.6", "codemirror": "^5.62.2", "keyboardevent-from-electron-accelerator": "*", - "obsidian": "^0.15.3", + "obsidian": "^0.15.4", "rollup": "^2.33.0", "tslib": "^2.0.3", "typescript": "^4.0.5"