## 概要 [[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 ```