Emacs打開Git倉庫下多個子工程的根目錄問題解決方案
問題描述
如題所述,這個問題困擾我很久了,一直沒搜到完整的解決方案。這次終于乘著空閑時間,研究了projectile.el源碼找到了方案。
問題場景具體描述下:
我自己有一個私人git倉庫,這個git倉庫有多個不同的代碼工程,因為只有我一個人維護提交,所以不想分出很多git倉庫,都是統一提交和更新的。 在這樣的背景下,我在對應子目錄下打開對應代碼工程:就會出現emacs不會把當前目錄作為根目錄,而是會把最上層.git的目錄做為主目錄(比如圖片的yumore)。 不管是treemacs還是比如go語言的gopls報錯,都是因為定位到了.git對應的主目錄(yumore)。
以前通過些小技巧,能繞過去。
解決方案
最終經過分析和猜測定位到了projectile這個插件。
我通過在子工程加了一個.yu文件做為通用的標記當前目錄是根目錄具體配置:
lisp復制代碼(use-package projectile
:ensure t
:bind (("C-c p" . projectile-command-map))
:config
(add-to-list 'projectile-project-root-files-bottom-up ".yu")
)
(projectile-project-info)
關鍵代碼1: (add-to-list '
projectile-project-root-files-bottom-up ".yu")
關鍵代碼2: (projectile-project-info)
效果見圖: