配置参数
:init 加载前准备
定义代码在包加载前执行,可用来设置影响 package 加载过程的变量。 即使配置的 package 不存在, :init
部分的代码也会执行,所以该部分代码应该保证 package 不存在也可以执行成功。
:config 加载后配置
定义代码在包加载之后执行,主要用在对package进行配置。在延迟加载的情况下,执行会被放在延迟加载之后
:commands 自动加载命令
command
关键字会为命令创建自动加载(autoload),他的参数是 symbol 或 symbol 列表
:bind
bind
关键字用来设置键绑定,接受一个cons或者cons列表
(use-package ace-jump-mode
:bind ("C-." . ace-jump-mode))
这会做两件事情,首先为 ace-jump-mode
命令创建自动加载,然后直到真正使用的时候延时加载。再将键 C-.
绑定至该命令,然后你就可以用 M-x describe-personal-keybindings
去查看键绑定了
:bind-keymap
通常 bind
期望commands是从给定包中自动加载的函数。但是,如果这些命令实际上是键映射,则这不起作用,因为键映射不是功能,不能使用Emacs的自动加载机制自动加载。针对这种场景, bind-keymap
的commands对应的是包中定义的keymap
:map 局部键绑定
局部 keymap 的键绑定只有在 package 加载后才生效。
(use-package helm
:bind (:map helm-command-map
("C-c h" . helm-execute-persistent-action)))
上述配置等同于 helm
加载之后,将 C-c h
按键绑定到 helm-execute-persistent-action
:disable
:disable
关键字可以关闭遇到困难的模块,或者停止加载目前未使用的某个模块
:load-path 扩展加载路径
如果 pacakge 的加载需要将一个目录添加到 load-path
中,使用 :load-path
。参数可以是一个符号、函数、字符串或字符串列表。如果是相对路径,基于 user-emacs-directory
进行扩展。
:ensure 自动安装
可以使用 use-package 配合 package.el 从 ELPA 加载 pacakge。这对于在多个机器之间共享.emacs 很有用;在.emacs 中声明的 package 都会自动下载。 :ensure 关键字会自动安装系统没有的 package。如果希望所有包 package 都这样处理,需要设置
(setq use-package-always-ensure t)
主动更新
:ensure
会安装系统上没有的 package,但不会进行主动更新。如果希望主动更新,可以使用 auto-package-update
(use-package auto-package-update
:config
(setq auto-package-update-delete-old-versions t)
(setq auto-package-update-hide-results t)
(auto-package-update-maybe))
:mode :interpreter 模式和解释器
类似 :bind
,可以使用 :mode
和 :interpreter
在变量 auto-mode-alist
和 interpreter-mode-alist
中建立延迟绑定。这些关键字的参数可以是 cons、 列表、字符串或正则表达式。
(use-package ruby-mode
:mode "\\.rb\\'"
:interpreter "ruby")
;; The package is "python" but the mode is "python-mode":
(use-package python
:mode ("\\.py\\'" . python-mode)
:interpreter ("python" . python-mode))
:hook 钩子
:hook
关键字允许在钩子上添加函数,这里只需要钩子的基本名称。
:defer 延迟加载
如果没有使用 :commands
, :bind
, :bind*
, :bind-keymap
, :bind-keymap*
, :mode
, :interpreter
, or :hoo
可以使用 :defer
关键字实现延时加载
:after
有时,只有在另一个 package 加载之后,加载当前 package 才有意义,因为有些变量或函数此前不在作用域内。这可以通过 :after
关键字来实现,该关键字允许设置相当丰富的加载条件。
:require
:after
可以让 package 在依赖加载后才加载,但如果依赖不可用时, :require
关键字更简单些,它不会加载该 package。
:custom 自定义变量
:custom
关键字允许设置 package 的自定义变量。
(use-package comint
:custom
(comint-buffer-maximum-size 20000 "Increase comint buffer size.")
(comint-prompt-read-only t "Make the prompt read only."))