2015-11-07 42 views
1

我一直對Emacs中包的加載過程感到好奇。你知道,有些軟件包是內置軟件包,有些是第三方軟件包。
例如,您可以從MELPA或MELPA-STABLE安裝「自動完成」軟件包,也可以從github獲取源代碼。
如果您從MELPA安裝軟件包,您會在「〜/ .emacs.d/elpa/auto-complete ***」中找到軟件包文件。emacs如何加載包?

auto-complete-autoloads.el 
auto-complete-config.el 
auto-complete-config.elc 
auto-complete.el 
auto-complete.elc 
auto-complete-pkg.el 
dict;;it's a directory 

emacs爲我們安裝軟件包有什麼作用?它只是從MELPA下載所有文件,並將它們放在「〜/ .emacs.d/elpa/auto-complete ***」中? emacs如何知道auto-complete-package的existense,並在下次啓動emacs時加載它們?
我知道我應該添加一些東西到「〜/ .emacs.d/init.el」如果從github獲得源代碼。也許這樣

(add-to-list 'load-path "path-to-download-folder/auto-complete") 
(require 'auto-complete-config) 
(ac-config-default) 

但我不能看到「init.el」任何改變,如果我從MELPA安裝軟件包。也許emacs將自動完成的路徑分配給可變加載路徑。但是之後?
emacs如何加載包?它如何知道我的「ALT-x +命令」?
我真的不知道從MELPA下載的emacs和它們的功能的關係。 任何人都可以告訴我一個包的整個加載過程? emacs在我們後面做什麼來從MELPA/MELPA-STABLE安裝軟件包?

+2

雖然有些Emacs問題很適合堆棧溢出,但我不認爲這是一個問題。這不是一個具體的編程問題,而是一個關於Emacs如何在內部工作的問題,特別是'package.el'的工作原理。請嘗試在https://emacs.stackexchange.com/上提交它。 – Chris

+0

@Chris說什麼。首先查閱Emacs手冊('C-h r')。如果你沒有找到足夠的信息,那麼考慮提交一個文檔錯誤:'M-x report-emacs-bug'。 – Drew

+0

而你的問題的標題顯然應該是「package.el如何影響包加載」,因爲這是你真正想問的問題。 – tripleee

回答

0

Emacs(默認情況下)自動加載(幾乎)所有形式爲~/.emacs.d/elpa/*/*-autoloads.el的文件。該包的<pkg>-autoloads.el將包含或多或少的相當於您的「添加到列表+要求+ ...」。