日本語を含む C++ のソースコードを Neovim で編集していると -32602: trying to get AST for non-added document というエラーが出てそれまで diagnostic や code format が効いていなのに突然効かなくなる現象に悩まされるようになった。
日本語が含まれているのが原因っぽい感じがしたがファイルを開いた直後だと効いていて、無駄な改行などを入れてファイル保存するとそのうち上記のエラーが出て機能しなくなってしまう。
mason-org/mason-lspconfig.nvim を辞めて素の Neovim の LSP の機能だけで完結させようと移行をしたらこの現象が起きるようになったのでなにか設定が悪そうなことは想像できたが LSP の log を見てエラーを文でググってみても解決になりそうな情報にはたどり着けず。
いろいろ試した結果 offsetEncoding で utf-16 だけを指定してみたらエラーで落ちることはなくなった。nvim-lspconfig のデフォルト値である {'utf-8', 'utf-16'} だとこのエラーに悩まされる。
治ることには治ったがなぜ治ったのか理由はよくわからない。
return { cmd = { 'clangd', '--background-index', '--clang-tidy', '--header-insertion=iwyu', '--completion-style=detailed', '--function-arg-placeholders', '--fallback-style=google', }, capabilities = { offsetEncoding = { 'utf-16' }, textDocument = { semanticTokens = { multilineTokenSupport = true, }, }, }, }