我什么时候应该使用 `require` 一个 `autoload` 的包?
When should I use `require` a package which is `autoload`?
例如,evil is autoload、
有些blogs/threads会用
(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-mode
的 autoload
声明已经被评估,那么就没有必要在 (evil-mode 1)
[=20 之前 (require 'evil)
=]
尽管个人用户可能需要也可能不需要 (require 'evil)
。这是库如何安装的问题。 ;;;###autoload
cookie 本身什么都不做;但是如果你使用 package.el 安装 evil
,那么它们将被解析并变成一个包含 autoload
声明的文件,Emacs 将在包初始化时加载它。
如果您在不使用包管理器的情况下安装库,那么您可能需要 require
它,或者为您可能调用的函数编写您自己的 autoload
声明。
例如,evil is autoload、
有些blogs/threads会用
(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-mode
的 autoload
声明已经被评估,那么就没有必要在 (evil-mode 1)
[=20 之前 (require 'evil)
=]
尽管个人用户可能需要也可能不需要 (require 'evil)
。这是库如何安装的问题。 ;;;###autoload
cookie 本身什么都不做;但是如果你使用 package.el 安装 evil
,那么它们将被解析并变成一个包含 autoload
声明的文件,Emacs 将在包初始化时加载它。
如果您在不使用包管理器的情况下安装库,那么您可能需要 require
它,或者为您可能调用的函数编写您自己的 autoload
声明。