それって
sbtのマルチプロジェクトを使っていて、
. topOkimochi/ <- ここで全てのサブプロジェクトをまとめている
├ nandemo/ <- サブプロジェクト: 共通で使うやつはなんでもぶち込んでやるぜ~
├ okimochiApi/ <- サブプロジェクト: nandemoを使う
└ okimochiLogic/ <- サブプロジェクト: okimochiApiを使う
- ふつうに使ってれば
okimochiLogicのscalaファイルを開いた時metalsによるビルドが始まってokiomchiApiやnandemoへの定義ジャンプとかが効くようになる - たまに
okimochiLogicのファイルを開いた時にmetalsから "New sbt workspace detected"みたいなことを言われて詰む- うっかり
build importするとokimochiLogicがtopOkimochiと無関係の独立したプロジェクトのように扱われてしまう - 無関係扱いなので
okimochiApiやnandemoへの定義ジャンプは当然できず、むしろ存在しないモジュールとしてエラーが出ている - Spacemacsを閉じて
.bloop/,.metals/,project/を削除して何度繰り返しても世界線は収束する (過ちが記録されているのだろうか)
- うっかり
こうする
-
~/.emacs.d/.cache/lsp/.lsp-session-v1を開いて、okimochiLogicの記録を消す-
"/home/okimochi/develop/top-okimochi/okimochi-logic"みたいなのがあると思う
-
- Spacemacsを落とす
-
~/.emacs.d/.lsp-session-v1に同じ記録があったらそれも消す -
okimochiLogic/から.bloop/,.metals/,project/を消す- 「待ってくれprojectは要るんだ!」なら
project/metals.sbtとproject/project/を消せばいいかも
- 「待ってくれprojectは要るんだ!」なら
- Spacemacsを再び起動する
- まず
topOkimochiのファイルを開いてmetalsにビルドさせる - そして
okimochiLogicのファイルを開いてmetalsにビルドさせる
たぶんnew sbt projectとか言われず紐付いてくれる
べつに
- SpacemacsだからとかではなくEmacsならそうかも
- キャッシュが切れる頃にはふつうに直ってるのかも (なお待つ時間はない模様)
- 1回目にnew sbt project扱いされる原因は結局特定してない
- 直せなかったらごめんて