emacs - 我什么时候应该使用`require`一个`autoload`的包?
问题描述
例如,evil 是 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
如果需要的包是自动加载的,我什么时候必须使用
解决方案
你是对的——如果一个autoload
声明evil-mode
已经被评估,那么就没有必要(require 'evil)
先于(evil-mode 1)
个人用户可能需要也可能不需要(require 'evil)
。这是如何安装库的问题。;;;###autoload
cookie 本身什么也不做;但是如果您evil
使用 package.el 安装,那么它们将被解析并转换为autoload
声明文件,Emacs 将在初始化包时加载该文件。
如果您在不使用包管理器的情况下安装库,那么您可能需要require
它,或者autoload
为您可能正在调用的函数编写自己的声明。
推荐阅读
- c++ - 为什么我的输入检查 if else 语句不起作用?
- python - discord.py [rewrite] bot 未正确发送消息
- r - 我们可以使用 REST API 远程连接到 databricks(没有 databricks 连接)
- javascript - 修复从 twitter url 中提取 twitter id 的正则表达式
- python - flask TypeError:视图函数没有返回有效响应
- html - 相对于高度的边距
- python - 切换反广告 discord.py
- css - 单击选择整个单元格文本以进行单元格编辑,而不是在primeng表中双击
- ios - 创建可观察对象来处理 json 数据
- wordpress - 如何仅将活跃用户计为推荐用户?