2013-04-12 17 views
0

若干臺計算機上我已經安裝了Emacs,並同步他們,我設置一個GitHub庫存儲我的emacs的配置,也就是我的文件夾〜/ .emacs.d之間的配置爲emacs的安裝軟件包的子模塊是在GitHub上託管

現在,我開始一臺計算機上使用emacs,我一定裝包,讓說,package_foo,使用MELPA。現在在我的.emacs.d/elpa foder中有一個名爲package_foo的文件夾。我還發現package_foo實際上是在github上託管的。如果我可以子模塊,那將是非常好的,因爲我的.emacs.d也在github上。

所以,如果我用emacs的包管理器安裝package_foo在GitHub上,我怎麼能自動子模塊它,而不是將它複製到我的.emacs.d/ELPA文件夾?是否有一個emacs插件知道package_foo的來源,並將其用於安裝(如果可能),而不是拉動所有文件?這不僅可以節省github上的空間,還可以在同步時節省帶寬。

+1

我不認爲有任何github意識到插件elpa。我的建議?不要使用elpa。我更喜歡使用git submodules。請參閱https://github.com/magnars/.emacs.d/以獲取一個很好的示例。另一種方法是查看el-get:http://www.emacswiki.org/emacs/el-get – Rob

+0

@Rob ELPA爲您提供了一個合適的「加載路徑」並自動加載。有了Git子模塊,你必須爲自己做這件事。 – lunaryorn

回答

2

不要使用子模塊的封裝。不要將包提交到您的存儲庫。

相反,配置的Emacs自動爲您安裝缺少的包。您可以使用一些特殊的功能,爲了這個目的:

(defun package-required (package) (unless (package-installed-p package) (package-install package)) 

(package-required 'magit) 

或者你可以使用Carton通過在Carton文件中聲明他們來管理你的包。然後,您可以使用shell命令carton install安裝缺少的軟件包,並使用carton update來更新所有軟件包。

+0

如果您不打算將軟件包提交到​​您自己的存儲庫,那麼您可能希望指定要使用的每個軟件包的確切版本,而不是要求提供最新版本,並假設它能正常工作。它*你*提交你的軟件包,在有問題的更新之後回滾是非常微不足道的。我個人建議這樣做,但YMMV。 – phils

+0

@lunaryorn你的函數包需要給出錯誤:「如果:符號的可變值是無效:包」 – shelper

+0

@shelper我也很難相信。您是否正確複製代碼段? – lunaryorn

相關問題