[渣翻译]use-package使用说明(version0.2)

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))