## 概要
[[Neovim]] 0.12がリリースされたのでバージョンアップしてみる。リリース内容は以下。
<div class="link-card-v2">
<div class="link-card-v2-site">
<img class="link-card-v2-site-icon" src="https://neovim.io/favicon.ico" />
<span class="link-card-v2-site-name">Neovim</span>
</div>
<div class="link-card-v2-title">
News-0.12
</div>
<div class="link-card-v2-content">
hyperextensible Vim-based text editor
</div>
<img class="link-card-v2-image" src="https://neovim.io/logos/neovim-logo-social-preview.png" />
<a href="https://neovim.io/doc/user/news-0.12/"></a>
</div>
## 環境
| 対象 | バージョン |
| ---------- | --------- |
| [[Neovim]] | 0.12.0 |
| [[macOS]] | 15.7.4 |
| [[cmux]] | 0.63.1 |
| [[mise]] | 2025.12.8 |
## インストール
```console
mise up neovim
```
```console
$ nvim --version
NVIM v0.12.0
Build type: Release
LuaJIT 2.1.1774638290
Run "nvim -V1 -v" for more info
```
## 新機能
### [[Undotree (Neovim)|Undotree]]
設定を追加して利用できるようにする。
```lua
vim.api.nvim_create_user_command("Undotree", function()
vim.cmd.packadd("nvim.undotree")
vim.cmd.Undotree()
end, {})
```
ファイルを閉じない限り、[[Git]]で管理しなくても気軽にチェックポイントに戻れるのでいい。
![[20260404_16_30_54.gif]]
見た目に拘らず実用的なリカバリー手段と使うには必要十分。
### [[UI2 (Neovim)|UI2]]
試しに有効にしてみた。
```lua
-- enable() だと動かないので注意. 引数が必要
require("vim._core.ui2").enable({})
```
現時点ではまだ[[Noice]]の方が良い(特に[[コマンドラインモード]])。今回は静観。
## 動かなくなったものの修復
動かなくなったものの対応からしていく。
### [[nvim-treesitter]]のコードブロックがエラーになる
- [[Markdown]]ファイルを開いたりプレビューするとエラー
- 以降は他ファイルでも[[nvim-treesitter]]が動かない
`main` ブランチにすることで解消。
<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 v12でMarkdownのlanguage指定コードブロックがエラーになる
</div>
<div class="link-card-v2-content">Neovim 0.12.0で`hoge.sh`内にMarkdownの```bash```フェンスコードブロックを書いたところ、`vim/treesitter.lua:196: attempt to call method 'range' (a nil value)`エラーが発生した事象である。原因はnvim-treesitterを互換用`master`ブランチのまま使用したことであり、`main`ブランチへ切り替えたところ解消した。</div>
<img class="link-card-v2-image" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/Notes/attachments/troubleshooting.webp" />
<a data-href="📝Neovim v12でMarkdownのlanguage指定コードブロックがエラーになる" class="internal-link"></a>
</div>
%%[[📝Neovim v12でMarkdownのlanguage指定コードブロックがエラーになる]]%%
芋づる式にハマりポイントがあるので以下も参考に。
<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">
📝nvim-treesitterをmainブランチに変更すると起動時にエラーになる
</div>
<div class="link-card-v2-content">nvim-treesitterをmainブランチに変更したNeovim 0.12.0環境で起動し、`Failed to run \`config\` for nvim-treesitter`や`module 'nvim-treesitter.configs' not found`エラーが発生した事象である。旧`configs.setup`設定を削除し、新しい`nvim-treesitter.install`とautocmdでハイライトを有効化したところ解消した。</div>
<img class="link-card-v2-image" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/Notes/attachments/troubleshooting.webp" />
<a data-href="📝nvim-treesitterをmainブランチに変更すると起動時にエラーになる" class="internal-link"></a>
</div>
%%[[📝nvim-treesitterをmainブランチに変更すると起動時にエラーになる]]%%
<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">
📝nvim-treesitterをmainブランチで起動すると各言語のパーサーをインストールができない
</div>
<div class="link-card-v2-content">Neovim 0.12.0でnvim-treesitter mainブランチを使い、:TSUpdateで各言語パーサーをインストールしようとしたところ、`Error during "tree-sitter build": ENOENT: no such file or directory (cmd): 'tree-sitter'`が発生した事象である。原因はtree-sitter未インストールであり、miseやHomebrewでtree-sitterを導入したところ解消した事例である。</div>
<img class="link-card-v2-image" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/Notes/attachments/troubleshooting.webp" />
<a data-href="📝nvim-treesitterをmainブランチで起動すると各言語のパーサーをインストールができない" class="internal-link"></a>
</div>
%%[[📝nvim-treesitterをmainブランチで起動すると各言語のパーサーをインストールができない]]%%
## WARNINGの対応
### `client.supports_method` の非推奨
```warning
- ⚠️ WARNING client.supports_method is deprecated. Feature will be removed in Nvim 0.13
- ADVICE:
- use client:supports_method instead.
- stack traceback:
/Users/tadashi-aikawa/.config/nvim/lua/lsp.lua:73
=[C]:-1
/Users/tadashi-aikawa/.local/share/mise/installs/neovim/0.12.0/nvim-macos-arm64/share/nvim/runtime/lua/vim/lsp/client.lua:1142
/Users/tadashi-aikawa/.local/share/mise/installs/neovim/0.12.0/nvim-macos-arm64/share/nvim/runtime/lua/vim/lsp/client.lua:603
vim/_core/editor.lua:0
```
実際に使われている場所は以下。
`nvim/lua/lsp.lua`
```lua
-- LSPアタッチされたあとの設定
-- TODO: 分離できる? group指定はいる?
vim.api.nvim_create_autocmd("LspAttach", {
group = vim.api.nvim_create_augroup("UserLspConfig", {}),
callback = function(ev)
-- 中略
-- inlay hint
if client.supports_method("textDocument/inlayHint") then
vim.lsp.inlay_hint.enable()
end
-- 中略
end,
})
-- 省略
```
書き換えておく。
```diff
- if client.supports_method("textDocument/inlayHint") then
+ if client:supports_method("textDocument/inlayHint") then
vim.lsp.inlay_hint.enable()
end
```