とある端末で gopls の挙動がおかしかった。go.mod を作った際のバージョンが
go 1.21.1
だとが動かなくて (補完が効かなくて)
go 1.21
と、三桁目を消すと動く(補完が効く)のがおかしいなぁとは薄々思っていつつ特に困らなかったのでそのままにしてた。
とある便利ツールを作るときに sammber/lo を使おうとしたら gopls が謎のエラーを吐いてくる。引数がおかしいと。sammber/lo の document を見ても合っているし、go build
でコンパイルが通るので実行は問題ない。 vim + gopls の場合だけ。
流石にそろそろ lo.Map(...)
とか使ってある程度は簡潔に書きたいと思うので、vim のバージョンを上げたり vim-lsp のバージョンを上げたり :LspInstallServer
を何回かしてみたりしたけど改善しない。
動いている端末と設定を一つずつ比較するか・・・の前になんとなく which gopls
を実行したら分かった。古い gopls にパスが通ってた・・・。vs code で go を書いてみようかとしたときの残骸なのかよくわからないけど、これを消して解決。
go は vim + gopls で書くのが快適だ。