## 経緯
1年半前に[[Obsidian]]の[[Vault]]を管理するため[[markdown-oxide]]を試したことがある。
<div class="link-card-v2">
<div class="link-card-v2-site">
<img class="link-card-v2-site-icon" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/favicon-64.png" />
<span class="link-card-v2-site-name">Minerva</span>
</div>
<div class="link-card-v2-title">
📜2024-08-19 markdown-oxideをNeovimで使ってみる
</div>
<div class="link-card-v2-content">NeovimのMarkdownに対するLSPはMarksmanを使っていた。しかし、Marksmanにはいくつか不足していると感じる点がある。</div>
<img class="link-card-v2-image" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/Notes/attachments/activity.webp" />
<a data-href="📜2024-08-19 markdown-oxideをNeovimで使ってみる" class="internal-link"></a>
</div>
%%[[📜2024-08-19 markdown-oxideをNeovimで使ってみる]]%%
このときは機能が不足していたので、結局[[obsidian.nvim]]をforkすることにした。
それからしばらく経ち、[[Vault]]の管理をふたたび[[Obsidian]]に統一した。[[Neovim]]では[[obsidian.nvim]]を使わなくなったので、それにより[[Markdown]]をサポートする[[LSP]]的な存在がなくなっていた。
さらに最近、ファイル内のシンボル検索を[[aerial.nvim]]から[[snacks.picker]]に移行した。[[現在ファイルのシンボル一覧を表示 (snacks.picker)|現在ファイルのシンボル一覧を表示]]できるようになった反面、[[Markdown]]の構造も[[LSP]]で取得するようになったので、[[Markdown]]の見出し一覧を表示することができなくなった。
そこで、[[Markdown]]用の[[LSP]]を再び導入することにした。以前のようにハイレベルの要件は必要なくなったため、ふたたび[[markdown-oxide]]を試してみることにした。
### 環境
| 対象 | バージョン |
| --------------------------------- | --------- |
| [[macOS]] | 15.7.2 |
| [[Neovim]] | 0.11.5 |
| [[nvim-lspconfig]] | `41ceb6b` |
| [[blink.cmp (Neovim)\|blink.cmp]] | `b19413d` |
| [[markdown-oxide]] | 0.25.10 |
| [[Cargo BInstall]] | 1.16.6 |
## インストール
> [GitHub - Feel-ix-343/markdown-oxide: PKM Markdown Language Server](https://github.com/Feel-ix-343/markdown-oxide?tab=readme-ov-file#neovim)
```console
brew install markdown-oxide
```
## [[nvim-lspconfig]]の設定
> [nvim-lspconfig/doc/configs.md at master · neovim/nvim-lspconfig](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#markdown_oxide)
`after/lsp/markdown_oxide.lua`
```lua
return {}
```
[[LSP]]設定で以下を追加。
```lua
vim.lsp.enable({
"markdown_oxide",
})
```
## オートコンプリートについて
今は不要だと思うのでしない。
## Warningが出る
無視すれば実害はなさそうだが...。
<div class="link-card-v2">
<div class="link-card-v2-site">
<img class="link-card-v2-site-icon" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/favicon-64.png" />
<span class="link-card-v2-site-name">Minerva</span>
</div>
<div class="link-card-v2-title">
📝NeovimのLSPにmarkdown-oxideを指定してLspsaga hover_docでフローティングウィンドウを表示するとWarningが出ることがある
</div>
<div class="link-card-v2-content">NeovimでLspsagaの`:Lspsaga hover_doc`実行時、フローティングウィンドウのfiletypeがmarkdownになり、実ファイルが存在しない状態でmarkdown-oxideがファイル名取得を試みた結果、`Client markdown_oxide quit with exit code 101`と`file should have file stem`エラーが発生した事象である</div>
<img class="link-card-v2-image" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/Notes/attachments/troubleshooting.webp" />
<a data-href="📝NeovimのLSPにmarkdown-oxideを指定してLspsaga hover_docでフローティングウィンドウを表示するとWarningが出ることがある" class="internal-link"></a>
</div>
%%[[📝NeovimのLSPにmarkdown-oxideを指定してLspsaga hover_docでフローティングウィンドウを表示するとWarningが出ることがある]]%%
## [[Marksman]]へ乗り換え
[[Obsidian]]の代わりをするわけでなく、見出し一覧の解析ができれば十分なため、[[Marksman]]にした。今のところ問題は発生していない。
<div class="link-card-v2">
<div class="link-card-v2-site">
<img class="link-card-v2-site-icon" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/favicon-64.png" />
<span class="link-card-v2-site-name">Minerva</span>
</div>
<div class="link-card-v2-title">
📜2026-01-11 NeovimでMarkdownのLSPにMarksmanを使う
</div>
<div class="link-card-v2-content">NeovimでMarkdownのLSPとしてmarkdown-oxideを使った際にLspsaga hover_docでWarningが出る問題があり、代替としてMarksmanをmiseで導入し、nvim-lspconfigで有効化した経緯と設定手順を記録した経過である</div>
<img class="link-card-v2-image" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/Notes/attachments/activity.webp" />
<a data-href="📜2026-01-11 NeovimでMarkdownのLSPにMarksmanを使う" class="internal-link"></a>
</div>
%%[[📜2026-01-11 NeovimでMarkdownのLSPにMarksmanを使う]]%%