陳 力*_*陳 力 5 emacs require autoload evil-mode
例如,邪恶是 autoload,
一些博客/线程将使用
(require 'evil)
(evil-mode 1)
Run Code Online (Sandbox Code Playgroud)
启用邪恶模式。
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))))
Run Code Online (Sandbox Code Playgroud)
但?因为autoload,
(evil-mode 1)
Run Code Online (Sandbox Code Playgroud)
没有require,它也可以正常工作(至少对我而言)
(以下如有不对的地方,请指正,谢谢)
我的问题是require如果需要的包是自动加载的,我什么时候必须使用
你是对的——如果一个autoload声明evil-mode已经被评估,那么就不需要(require 'evil)之前(evil-mode 1)
个人用户可能需要也可能不需要(require 'evil)。这是一个如何安装库的问题。就其本身的;;;###autoload饼干什么都不做; 但是如果你evil使用 package.el安装,那么它们将被解析并变成一个autoload声明文件,当包初始化时,Emacs 将加载它。
如果您在不使用包管理器的情况下安装库,那么您可能需要require它,或者autoload为您可能调用的函数编写自己的声明。