use-packagegithub
use-package docssegmentfault
use-package
?當配置好init.el
後,常常會出現下面的兩個問題ui
當須要在其餘機器中,配置emacs
時候,若是不能保證須要的packages
都安裝,可能致使init.el
中的許多配置不能生效this
由於在init.el
中,有多個packages
都須要配置,可是init.el
是全部包的配置文件,隨着packages
的添加,可能會出現配置之間的衝突spa
packages
的安裝問題(defvar my-packages '(spacemacs-theme company)) (dolist (p my-packages) (when (not (package-installed-p p)) (package-install p)))
上面的方式,能夠解決 2.1 可移植性
,可是不能很好的解決 2.2 代碼結構
引入新的package
——use-package
能夠很好的解決上面的兩個問題code
M-x package-install <RET> use-package <RET>
get
(use-package <package-name> :init <code to be executed before loading the package> <加載包以前,執行的代碼> :config <code to be executed after loading the package> <加載包以後,執行的代碼> :bind <key bindings for this package>)
(1) 沒有使用use-package
emacs
(global-company-mode t) (define-key company-active-map (kbd "C-n") 'company-select-next) (define-key company-active-map (kbd "C-p") 'company-select-previous) (setq company-idle-delay 0.0)
(2) 使用use-package
(use-package company :bind (:map company-active-map ("C-n" . company-select-next) ("C-p" . company-select-previous)) :config (setq company-idle-delay 0.3) (global-company-mode t))
package
都存在(use-package magit :ensure t :bind ("C-x g" . magit-status))
語句:ensure t
保證了全部本地不存在的package
都會被安裝後在使用
use-package
安裝(when (not (package-installed-p 'use-package)) (package-refresh-contents) (package-install 'use-package))
keyword
列表keyword名稱 | 簡單說明 |
---|---|
:after |
單元 2 |
:bind-keymap, :bind-keymap* |
單元 4 |
:bind, :bind* |
單元 2 |
:commands |
單元 4 |
:preface, :init, :config |
單元 2 |
:custom |
單元 4 |
:custom-face |
單元 2 |
:defer, :demand |
單元 4 |
:defines, :functions |
單元 2 |
:diminish, :delight |
單元 4 |
:disabled |
單元 2 |
:ensure, :pin |
單元 4 |
:hook |
單元 2 |
:if, :when, :unless |
單元 4 |
:load-path |
單元 2 |
:mode, :interpreter |
單元 4 |
:magic, :magic-fallback |
單元 2 |
:no-require |
單元 4 |
:requires |
單元 2 |
:init