それって
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扱いされる原因は結局特定してない
- 直せなかったらごめんて