[英]emacs23 / elisp: how to properly autoload this library?
我正在升級到emacs23。 我發現我的emacs.el加載速度要慢得多。
真的是我自己的錯......那里有很多東西。
所以我也試圖自動加載我的emacs.el目前“必需”的一切可能。
我有一個公開12個入口點的模塊 - 我可以調用的交互式功能。
是否有正確的方法有12個autoload
調用,以確保模塊加載,無論我調用哪個函數? 這種方法有什么問題嗎? 它會出現性能問題嗎?
如果沒有這種方法,那又怎樣?
您真正想要的是自動為您生成自動加載,以便您的.emacs文件保持原始狀態。 大多數軟件包已經包含;;;###autoload
行,如果沒有,您可以輕松添加它們。
要管理它,您可以將所有軟件包放在一個目錄中,比如~/emacs/lisp
,並且有一個名為update-auto-loads.el
的文件,其中包含:
;; put this path into the load-path automatically
;;;###autoload
(progn
(setq load-path (cons (file-name-directory load-file-name) load-path)))
;;;###autoload
(defun update-autoloads-in-package-area (&optional file)
"Update autoloads for files in the diretory containing this file."
(interactive)
(let ((base (file-truename
(file-name-directory
(symbol-file 'update-autoloads-in-package-area 'defun)))))
(require 'autoload) ;ironic, i know
(let ((generated-autoload-file (concat base "loaddefs.el")))
(when (not (file-exists-p generated-autoload-file))
(with-current-buffer (find-file-noselect generated-autoload-file)
(insert ";;") ;; create the file with non-zero size to appease autoload
(save-buffer)))
(cd base)
(if file
(update-file-autoloads file)
(update-autoloads-from-directories base)))))
;;;###autoload
(defun update-autoloads-for-file-in-package-area (file)
(interactive "f")
(update-autoloads-in-package-area file))
如果將'update-autoloads-in-package-area
到kill-emacs-hook
,則每次退出Emacs時都會自動更新loaddefs.el
。
並且,要將它們組合在一起,請將其添加到.emacs
:
(load-file "~/emacs/lisp/loaddefs.el")
現在,當您下載新軟件包時,只需將其保存在~/emacs/lisp
目錄中,通過Mx update-autoloads-in-package-area
(或退出emacs)更新loaddef,它將在下次可用你運行Emacs。 不再對.emacs
進行更改以加載內容。
有關加速Emacs啟動的其他替代方案,請參閱此問題: 如何讓Emacs啟動更快?
嗯,誰在乎它開始的緩慢程度?
通過emacs --daemon &
啟動它,然后使用其中一個連接
emacsclient -c /some/file.ext
,或 emacsclient -nw
我分別為emx
和emt
創建了這些別名。 繼續一次編輯會議是如此理智...
理想情況下,您的.emacs
文件中不應有任何load
或require
。
例如
(autoload 'slime-selector "slime" t)
您將需要使用eval-after-load
來執行任何特定於庫的配置,但結果是您不需要等待所有這些都在前面加載,或者導致錯誤的Emacs版本沒有相同的功能。 (例如基於終端,或不同的平台等)
雖然現在這可能不會對您產生影響,但是將來您可能希望在使用Emacs的所有機器/環境中使用相同的配置,因此准備好配置是一件非常好的事情。
還可以使用(start-server)
並使用emacsclient
外部文件打開到Emacs中 - 這樣就可以避免重新啟動Emacs。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.