1
头图

一、参考

emacs系列文章目录——更新ing

use-package

use-package docs

Configuring Emacs from Scratch — use-package

二、为什么需要use-package?

当配置好init.el后,经常会出现下面的两个问题

2.1 可移植性

当需要在其他机器中,配置emacs时候,如果不能保证需要的packages都安装,可能导致init.el中的许多配置不能生效

2.2 代码结构太扁平

因为在init.el中,有多个packages都需要配置,但是init.el是所有包的配置文件,随着packages的添加,可能会出现配置之间的冲突

2.3 解决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可以很好的解决上面的两个问题

三、基本使用

3.1 安装

M-x package-install <RET> use-package <RET>

3.2 基本语法

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

3.3 示例

(1) 没有使用use-package


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

3.4 保证使用的package都存在

(use-package magit
  :ensure t
  :bind ("C-x g" . magit-status))

语句:ensure t保证了所有本地不存在的package都会被安装后在使用

3.5 保证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

4.1 :init


一曲广陵散
76 声望21 粉丝

柴米油盐酱醋茶


引用和评论

0 条评论