Emacs の use-package に関する個人的メモ

私が普段使用している Emacs というエディタの設定を少々変更したのでメモ書きです。 設定を変更するにあたり、Emacs29.1 から標準機能に組み込まれた use-package を使用してみます。

公式マニュアル

公式マニュアルがアメリカ語で書いている為、理解が追いついていないです。 もう少し、読み込みが必要です。

use-package は上手に設定が出来れば非常に見易く記述できそうな気がします。

基本的な使い方

最も基本的な使い方は今まで使用していた require をそのまま置き換えることになります。

; 今までの書き方
(require 'PACKAGE-NAME)

; use-packageの書き方
(use-package PACKAGE-NAME)

単純に置き換えるだけで使用できます。

違いとしては reduire で呼び出すときはライブラリをチェックして、存在していればロードを行い、無い場合はエラーを通知します。 パッケージのインストールを忘れたときやアンインストールしたときは設定の変更が必要となります。 また、エラーが発生した場合は以降の設定を評価できないため、なんか色々とおかしくなることが多いです。

use-package を使用した場合はライブラリ内にパッケージが存在しない時でもエラー通知せずに無視するようです。 エラーが発生するわけではない為、以降の設定も評価してくれます。 また、パッケージをアンインストールした時も設定を変更する必要がなくなります。

キーワード

use-packege は既定のキーワードを使用することにより、パッケージの設定を整理して記述できます。 キーワードは色々あるのですが、私のようなライトユーザーは次のものだけで十分設定ができます。

  1. :init
  2. :config
  3. :hook
  4. :bind

:init

:init キーワードはパッケージに関する設定を評価してくれます。 評価のタイミングは Emacs を起動した時です。

便利な使い方もあるようですが、よくわかっていないので、私は単純に Emacs 起動時のキーワードとして使用しています。

:config

:config キーワードは :init 同様にパッケージの設定を評価してくれます。 評価のタイミングはパッケージをロードした後です。

大体の設定はこの :config 部に記述すればなんとなく動きます。

:hook

:hook キーワードはその名の通り、hook に関する設定を記述できます。 今まで、add-hook と記載していた設定をもっと簡単に書くことができます。

; 今までの書き方
(add-hook 'prog-mode 'company-mode)

; use-packageの:hookキーワード
:hook (prog-mode . company-mode)
; もっと単純化したとき
(use-package company
  :hook prog-mode)

:bind

:bind キーワードはパッケージのキーバインドを設定することができます。 似た名前に :bind-keymap というキーワードがありますが、違いはよくわかっていないです。