Use-package 用法: Difference between revisions

From 清冽之泉
Jump to navigation Jump to search
No edit summary
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 11: Line 11:
|<code>:commands foo</code>
|<code>:commands foo</code>
|调用命令时
|调用命令时
|'''这个命令是入口'''
|这个命令是入口
|-
|-
|<code>:bind ("C-c f" . foo)</code>
|<code>:bind ("C-c f" . foo)</code>
|第一次按快捷键时
|第一次按快捷键时
|'''按键是入口'''
|按键是入口
|-
|-
|<code>:hook (prog-mode . foo-mode)</code>
|<code>:hook (prog-mode . foo-mode)</code>
|hook 运行并调用该函数时
|hook 运行并调用该函数时
|'''进入某场景是入口'''
|进入某场景是入口
|-
|-
|<code>:mode "\\.foo\\'"</code>
|<code>:mode "\\.foo\\'"</code>
|打开匹配文件时
|打开匹配文件时
|'''文件类型是入口'''
|文件类型是入口
|-
|-
|<code>:interpreter "python"</code>
|<code>:interpreter "python"</code>
|文件解释器匹配时
|文件解释器匹配时
|'''shebang 是入口'''
|shebang 是入口
|-
|-
|<code>:bind-keymap</code>
|<code>:bind-keymap</code>
|使用对应 prefix keymap 时
|使用对应 prefix keymap 时
|'''按键映射是入口'''
|按键映射是入口
|-
|-
|<code>:defer t</code>
|<code>:defer t</code>
|不立即加载
|不立即加载
|'''先睡着,等别人叫醒'''
|先睡着,等别人叫醒
|-
|-
|<code>:defer 5</code>
|<code>:defer 5</code>
|Emacs 空闲 5 秒后
|Emacs 空闲 5 秒后
|'''闲下来再加载'''
|闲下来再加载
|-
|-
|<code>:demand t</code>
|<code>:demand t</code>
|强制立即加载
|强制立即加载
|'''现在马上加载'''
|现在马上加载
|-
|-
|<code>:after foo</code>
|<code>:after foo</code>
|<code>foo</code> 加载后
|<code>foo</code> 加载后
|'''等前置包'''
|等前置包
|-
|-
|<code>:if</code> / <code>:when</code> / <code>:unless</code>
|<code>:if</code> / <code>:when</code> / <code>:unless</code>
|满足条件才处理
|满足条件才处理
|'''看条件决定'''
|看条件决定
|}
{| class="wikitable"
|+关键词作用
!关键词
!是不是加载触发器
!本质
|-
|<code>:init</code>
|否
|'''加载前'''执行配置
|-
|<code>:config</code>
|否
|'''加载后'''执行配置
|-
|<code>:custom</code>
|否
|设置变量
|-
|<code>:ensure</code>
|否
|保证包已安装
|-
|<code>:commands</code>
|是
|声明命令 autoload
|-
|<code>:bind</code>
|是
|按键触发 autoload
|-
|<code>:hook</code>
|是
|hook 中函数触发 autoload
|-
|<code>:mode</code>
|是
|文件类型触发 autoload
|}
|}

Latest revision as of 22:13, 20 July 2026

加载时机
写法 什么时候加载 直觉理解
(use-package foo) 立即 启动时就 require
:commands foo 调用命令时 这个命令是入口
:bind ("C-c f" . foo) 第一次按快捷键时 按键是入口
:hook (prog-mode . foo-mode) hook 运行并调用该函数时 进入某场景是入口
:mode "\\.foo\\'" 打开匹配文件时 文件类型是入口
:interpreter "python" 文件解释器匹配时 shebang 是入口
:bind-keymap 使用对应 prefix keymap 时 按键映射是入口
:defer t 不立即加载 先睡着,等别人叫醒
:defer 5 Emacs 空闲 5 秒后 闲下来再加载
:demand t 强制立即加载 现在马上加载
:after foo foo 加载后 等前置包
:if / :when / :unless 满足条件才处理 看条件决定
关键词作用
关键词 是不是加载触发器 本质
:init 加载前执行配置
:config 加载后执行配置
:custom 设置变量
:ensure 保证包已安装
:commands 声明命令 autoload
:bind 按键触发 autoload
:hook hook 中函数触发 autoload
:mode 文件类型触发 autoload