emacs插件(4)——包的配置use-package

一、参考

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 use-package

3.2 基本语法

(use-package 
  :init
  
  <加载包之前,执行的代码>
  :config
  
  <加载包之后,执行的代码>
  :bind
  )

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

你可能感兴趣的:(emacs)