私が普段使用している Emacs というエディタの設定を少々変更したのでメモ書きです。 設定を変更するにあたり、Emacs29.1 から標準機能に組み込まれた use-package を使用してみます。
公式マニュアルがアメリカ語で書いている為、理解が追いついていないです。 もう少し、読み込みが必要です。
use-package は上手に設定が出来れば非常に見易く記述できそうな気がします。
基本的な使い方
最も基本的な使い方は今まで使用していた require をそのまま置き換えることになります。
; 今までの書き方
(require 'PACKAGE-NAME)
; use-packageの書き方
(use-package PACKAGE-NAME)
単純に置き換えるだけで使用できます。
違いとしては reduire で呼び出すときはライブラリをチェックして、存在していればロードを行い、無い場合はエラーを通知します。 パッケージのインストールを忘れたときやアンインストールしたときは設定の変更が必要となります。 また、エラーが発生した場合は以降の設定を評価できないため、なんか色々とおかしくなることが多いです。
use-package を使用した場合はライブラリ内にパッケージが存在しない時でもエラー通知せずに無視するようです。 エラーが発生するわけではない為、以降の設定も評価してくれます。 また、パッケージをアンインストールした時も設定を変更する必要がなくなります。
キーワード
use-packege は既定のキーワードを使用することにより、パッケージの設定を整理して記述できます。 キーワードは色々あるのですが、私のようなライトユーザーは次のものだけで十分設定ができます。
- :init
- :config
- :hook
- :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 というキーワードがありますが、違いはよくわかっていないです。