2025/05/31

solargraph が遅すぎて耐えられなくなってきたんで ruby-lsp に変えたんだけど、lsp_router がうまく対応できないみたいなので、真面目にプロトコルの仕様書を読んでみるかな。

tmtms / とみたまさひろ (@tmtms.net) 2025-05-31T04:10:43.171Z

あー、textDocumentSync の change が Full と Incremental の違いがあるのか。rubocop は Full で ruby-lsp は Incremental。うーん、どうしようもないな、これは。

tmtms / とみたまさひろ (@tmtms.net) 2025-05-31T05:35:16.847Z

ruby-lsp が textDocument/didChange の contentChanges に range を必須で期待してるがいけないような気がしてきた。

tmtms / とみたまさひろ (@tmtms.net) 2025-05-31T06:03:20.918Z

リクエストに range が含まれていない場合は lsp_router で入れるようにした

tmtms / とみたまさひろ (@tmtms.net) 2025-05-31T11:39:51.530Z

Amazon Prime Video で「ショウタイムセブン」を見た。終盤がイマイチだったかなー。 https://www.amazon.co.jp/gp/video/detail/B0F4NX6NHD

tmtms / とみたまさひろ (@tmtms.net) 2025-05-31T13:11:06+00:00

いや、無理だった。

tmtms / とみたまさひろ (@tmtms.net) 2025-05-31T13:18:44.081Z

Emacs の LSP は文字をバイト単位で送ってるけど、ruby-lsp は文字単位で扱ってるから range でデータが送られると文字がずれちゃうな。これプロトコル的にはどっちが正しいんだ?

tmtms / とみたまさひろ (@tmtms.net) 2025-05-31T16:21:44.988Z

プロトコルは UTF-16 だからどちらも正しくないっぽいな…

tmtms / とみたまさひろ (@tmtms.net) 2025-05-31T16:24:51.820Z

いや、ruby-lsp はちゃんと initialize のレスポンスで positionEncoding UTF-8 って返してるから、それに従ってない Emacs LSP がいけないのか。

tmtms / とみたまさひろ (@tmtms.net) 2025-05-31T16:35:21.129Z

どうも LSP の仕様だと UTF-8 使用時はバイト数が正しいっぽいな。 microsoft.github.io/language-ser... てことは ruby-lsp が間違ってるのか。

tmtms / とみたまさひろ (@tmtms.net) 2025-05-31T17:22:36.690Z