标签:
use-package宏是spacemacs的精髓,实现了package配置的隔离,终于不用将所有的配置放在一起,乱得像一锅粥了,延迟加载极大地提升了spacemacs的启动性能。
(译者增加)新版无需在关键词后使用progn包装多条sexp语句
:init的含义改变了,现在总是在package加载前执行,无论:config是否defered(延迟执行)
:init和:config替代了原有的:pre-和:post-关键词
:idle关键词被移除
:defer 接受一个正整数,比如:defer 2,在idle时段2秒后加载
新增关键词:preface,使用场景:定义函数和变量,优点1)将代码放在保护模块中,使得编译器不会因为函数未定义而发出警告,优点2)可以定义代码于:if的测试语句中,注意:你只应该在:preface中使用声明和定义,避免使用副作用(破坏性语句)
:defines用于定义变量
:functions用于定义函数
(use-package foo)
加载信息会在*Messsages*缓冲区
:init关键字在package加载之前,执行后续sexp代码(用于初始化工作)
(use-package foo :init (setq foo-variable t))
:config关键字在package家在之后执行(由于defer的存在,:config总是在autoload执行后执行)
(use-package foo :init (setq foo-variable t) :config (foo-mode 1))
:init和:config一起使用的例子
(use-package color-moccur :commands (isearch-moccur isearch-all) :bind ("M-s O" . moccur) :init (bind-key "M-o" ‘isearch-moccur isearch-mode-map) (bind-key "M-O" ‘isearch-moccur-all isearch-mode-map) :config (use-package moccur-edit))
(use-package ace-jump-mode :bind ("C-." . ace-jump-mode))
:bind会在ace-jump-mode加载后执行绑定,你可以用M-x describe-personal-keybindings查看你通过.emacs设置的键绑定。
(use-package ace-jump-mode :commands ace-jump-mode :init (bind-key "C-." ‘ace-jump-mode))
:commands关键字使得命令在用到时才被加载,而:init无论ace-jump-mode是否成功加载,均会执行。
(use-package hi-lock :bind (("M-o l" . highlight-lines-matching-regexp) ("M-o r" . highlight-regexp) ("M-o w" . highlight-phrase)))
:bind的更多用法
(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))
当然下面这种写法也能够defer执行
(use-package ace-jump-mode :defer t :init (autoload ‘ace-jump-mode "ace-jump-mode" nil t) (bind-key "C-." ‘ace-jump-mode))
眼睛酸疼,躺了,明天继续
[渣翻译]use-package使用说明(version0.2)
标签:
原文地址:http://my.oschina.net/tshemeng/blog/415988