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

use-package宏是spacemacs的精髓,实现了package配置的隔离,终于不用将全部的配置放在一块儿,乱得像一锅粥了,延迟加载极大地提高了spacemacs的启动性能。python

  • (译者增长)新版无需在关键词后使用progn包装多条sexp语句ruby

  • :init的含义改变了,如今老是在package加载前执行,不管:config是否defered(延迟执行)函数

  • :init和:config替代了原有的:pre-和:post-关键词post

  • :idle关键词被移除性能

  • :defer 接受一个正整数,好比:defer 2,在idle时段2秒后加载测试

  • 新增关键词:preface,使用场景:定义函数和变量,优势1)将代码放在保护模块中,使得编译器不会由于函数未定义而发出警告,优势2)能够定义代码于:if的测试语句中,注意:你只应该在:preface中使用声明和定义,避免使用反作用(破坏性语句)spa

  • :defines用于定义变量code

  • :functions用于定义函数regexp

基本用法

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

眼睛酸疼,躺了,明天继续

相关文章
相关标签/搜索