## 事象
[[Neovim]] + [[Lspsaga]] + [[markdown-oxide]]で `:Lspsaga hover_doc` を実行し、[[フローティングウィンドウ (Neovim)|フローティングウィンドウ]]で[[Markdown]]のdocsを表示すると、以下のようなエラーが出ることがある。情報量が多い時だけ表示される印象がある。
```warning
Client markdown_oxide quit with exit code 101 and signal 0. Check log for errors: /Users/tadashi-aikawa/.local/state/nvim/lsp.log
```
該当のログを表示するとERRORが。
```error
[ERROR][2026-01-11 11:36:41] ...p/_transport.lua:36 "rpc" "markdown-oxide" "stderr" "\nthread 'main' panicked at src/vault/mod.rs:597:14:\nfile should have file stem\nnote: run with `RUST_BACKTRACE=1` environment variable to display a backtrace\n"
```
特に設定は入れていない。
`nvim/after/lsp/markdown_oxide.lua`
```lua
return {}
```
なお、docsはちゃんと表示されているように見える。
### 環境
| 対象 | バージョン |
| ------------------ | --------- |
| [[macOS]] | 15.7.2 |
| [[Neovim]] | 0.11.5 |
| [[Lspsaga]] | `8efe00d` |
| [[markdown-oxide]] | 0.25.9 |
| [[nvim-lspconfig]] | `92ee7d4` |
## 原因
[[フローティングウィンドウ (Neovim)|フローティングウィンドウ]]の[[ファイルタイプ (Vim)|ファイルタイプ]]が `markdown` になっているため、[[markdown-oxide]]が[[マークダウンファイル]]としてファイル名を取得しようとしているが、実際にファイルは存在していないからと思われる。
[[markdown-oxide]]の `src/vault/mod.rs` の 592行目付近に実装がある。
```rust
impl MDFile {
fn new(context: &Settings, text: &str, path: PathBuf) -> MDFile {
let code_blocks = MDCodeBlock::new(text).collect_vec();
let file_name = path
.file_stem()
.expect("file should have file stem")
.to_str()
.unwrap_or_default();
```
## 解決方法
> [!unresolved]
> 不明
[[Marksman]]を使えば問題ないが、回避策とは言えない。