## 事象
[[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]] の修正をしないと根本的解決にはならないと思う。