什么时候应该使用"require"作为"autoload"的程序包



例如,邪恶是自动加载,

一些博客/线程将使用

(require 'evil)
(evil-mode 1)

以启用邪恶模式。

AFAIK,Elisp是lisp2,evil-mode也是一个函数,所以不需要setq

(defadvice evil-mode (after start-evil activate)
"Enable Evil in Fundamental mode."
(if evil-mode
(progn
(when (eq (default-value 'major-mode) 'fundamental-mode)
;; changed back by `evil-local-mode'
(setq-default major-mode 'turn-on-evil-mode))
(ad-enable-regexp "^evil")
(ad-activate-regexp "^evil")
(with-no-warnings (evil-esc-mode 1)))
(when (eq (default-value 'major-mode) 'turn-on-evil-mode)
(setq-default major-mode 'fundamental-mode))
(ad-disable-regexp "^evil")
(ad-update-regexp "^evil")
(with-no-warnings (evil-esc-mode -1))))

但是,由于autoload

(evil-mode 1)

如果没有require,它也可以正常工作(至少对我来说(

(如果下面有错误,请纠正我,谢谢(

我的问题是,如果所需的包裹是自动加载的,我什么时候必须使用require

您是正确的--如果已经评估了evil-modeautoload声明,那么在(evil-mode 1)之前就不需要(require 'evil)

个人用户可能需要(require 'evil),也可能不需要。这是一个图书馆是如何安装的问题。;;;###autoloadcookie本身不起任何作用;但是,如果您使用package.el安装了evil,那么它们将被解析并转换为autoload声明的文件,Emacs将在初始化包时加载该文件。

如果在不使用包管理器的情况下安装库,则可能需要require,或者为可能调用的函数编写自己的autoload声明。

最新更新