## 事象 [[Vimrc Support Plugin (Obsidian)|Vimrc Support Plugin]]で以下のようにObsidianコマンドの設定を `new` にマッピングする。 ``` exmap new obcommand carnelian:carnelian_create-new-note-horizontally ``` [[Exコマンド]]で `:new` を実行すると、通常とは[[アクティブリーフ (Obsidian)|アクティブリーフ]]の判定が異なり、予期しない動作となる。 たとえば、以下のコードを実行したとき ```ts app.workspace.getLeaf("split", "horizontal") await app.fileManager.createAndOpenMarkdownFile("タイトル") ``` - `期待値` 水平分割された[[タブグループ (Obsidian)|タブグループ]]の新しい[[リーフ (Obsidian)|リーフ]]に、作成した `タイトル.md` が表示される - `実際` 水平分割された[[タブグループ (Obsidian)|タブグループ]]ではなく、直前に[[アクティブリーフ (Obsidian)|アクティブリーフ]]に `タイトル.md` が表示される となる。 ### 環境 | 対象 | バージョン | | --------------------------------------------------------- | ------ | | [[macOS]] | 15.7.1 | | [[Obsidian]] | 1.9.14 | | [[Vimrc Support Plugin (Obsidian)\|Vimrc Support Plugin]] | 0.10.2 | ## 原因 [[Vimrc Support Plugin (Obsidian)|Vimrc Support Plugin]]で[[Exコマンド]]を実行したとき、[[Exコマンド]]実行前の[[アクティブリーフ (Obsidian)|アクティブリーフ]]を取得できていなそうだから。 > [!caution] > 確信はないが、状況的にその可能性が高そう。 ## 回避策 コマンド実行直前に `await sleep(0)` を入れて[[タスク (JavaScript)|タスク]]の優先順位を下げる。こうすることで、元の[[アクティブリーフ (Obsidian)|アクティブリーフ]]が再認識するようになってから処理が行われるため、期待通り動くと思われる。 > [!unresolved] > [[Vimrc Support Plugin (Obsidian)|Vimrc Support Plugin]] の修正をしないと根本的解決にはならないと思う。