我用elpa(package.el)管理我的Emacs擴展.我用下面的代碼配置我的auto-complete:(eval-after-load'auto-complete-mode(progn(message"Jollysaid:autocompleteisloaded.")(require'auto-complete-config)(ac-config-default)(setqac-delay0.5)))我認為這樣配置之后,如果我沒有安裝auto-complete,eval-after-load內(nèi)部的代碼就不會被執(zhí)行。但是,如果我真的沒有安裝auto-complete,Emacs啟動時會報錯:Fileerror:Cannotopenloadfile,auto-complete-config.為什么,既然我沒有安裝auto-complete,auto-complete-mode的feature就不能被載入,為什么后面的代碼還是被evaluate呢?為了測試eval-after-load是否象我想得那樣工作,我把auto-complete-mode改成abcd-mode,也就是:(eval-after-load'abcd-mode(progn(message"Jollysaid:autocompleteisloaded.")(require'auto-complete-config)(ac-config-default)(setqac-delay0.5)))因為abcd-mode根本不存在,所以我肯定它不會被載入。重啟Emacs,Emacs仍然抱怨:Fileerror:Cannotopenloadfile,auto-complete-config.看來,盡管abcd-mode沒有被載入,但后面的代碼仍然被執(zhí)行了。為什么?我對eval-after-load理解錯了嗎?我想要的是:不管我有沒有安裝auto-complete,Emacs都不會報錯;但是如果我安裝了auto-complete,它要能接受我上面的配置。我該用什么方法。
Emacs: 用 eval-after-load 配置 auto-complete 的問題
呼啦一陣風
2019-04-08 11:18:50