1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Emacsでパッケージマネージャーって使ったほうがいいの?

Posted at

短い答え

  • 使ったほうがいい

長い答え

  1. 最終的にはEmacsの設定を書くのにパッケージマネージャーを使ったほうがよい
  2. とはいえ、パッケージマネージャーを使う難しさもあり、最初は使わず初めてみるのもよいと思う

Emacsの設定はどんなものか

Emacsの設定はEmacs Lispというプログラミング言語で行います。
例えば、~/.config/emacs/init.elなど1に以下のように書きます。

;; 設定変数をセット
(setq hoge-enabled t)

;; プログラミング言語なので、関数や計算もできる
(defun hoge-levelup (x)
  (+ x 1))
(setq hoge-level (hoge-levelup (5))

各種パッケージのREADMEにおける設定の現状

パッケージによってREADMEの設定の書き方はバラバラです。
例えば、以下ような種類が考えられます。
パッケージマネージャーを使う・使わないで全然違う書き方になります。

生書きの例
;; M-x package-install RET hoge RET
(setq hoge-fuga t)
(require 'hoge)
use-packageを使った例
(use-package hoge
  :ensure t
  :config
  (setq hoge-fuga t))
leafを使った例
(leaf hoge
  :ensure t
  :require t
  :config
  (setq hoge-fuga t))

現状におけるパッケージマネージャを使う難しさ

自分の手元設定とそろった書き方で設定がREADMEに記載されていれば簡単です。
そうでない場合は、自分で翻訳する必要があります。

具体的には、macrostep-expand2leaf-expandなどを使い、READMEに従った設定を書けているか確認する必要があります。

例えば、leafが用意しているleaf-expandを使うと3、というコマンドを用意しています。
これを使うと、自分が書いたleaf節がどのように展開されるのかを確認できます。

インストール処理など多少の差異はありますが、ほぼ生書きと同じ設定なのが確認できます。

leafの例をleaf-expandした様子
(leaf hoge
  :ensure t
  :require t
  :config
  (setq hoge-fuga t))

;; --------------------------------------------------------------------------------

(prog1 'hoge
  (leaf-handler-package hoge hoge nil)
  (require 'hoge)
  (setq hoge-fuga t))

パッケージマネージャーを使う利点

最初に利用を推奨したように、パッケージマネージャーには多くの利点があります。
多少の難しさはありますが、楽しいEmacs Lispプログラミングが可能です。

  • 繰り返しでてくる定番フレーズを短く書ける
    • (custom-set-variables hoge-fuga t):custom (hoge-fuga . t)
    • 他にもhookやbindなど便利な設定マクロがある
  • 構造化され読みやすい
  • デバッグが容易になる
    • 例えば、特定の設定ブロックをまとめてdisabledしたりできる

まとめ

パッケージマネージャーは確かに使ったほうがいいです。
とはいえ最初から100点満点を目指すのも大変です。
なので、初心者の皆さんが少しずつEmacsに慣れてもらえればと思います。

わからないことはemacs-jpのSlackなんかで聞くと答えてもらえると思います!

  1. ~/.emacs.d/init.elでもよい。~/.emacs.el~/.emacsでもよいが、Emacsが自動生成するファイルも設置されるため、~/.config/emacs/~/.emacs.d/でディレクトリを切るほうがよい。 https://www.gnu.org/software/emacs/manual/html_node/emacs/Find-Init.html

  2. Emacs Lipsのマクロを展開プレビューしてくれるパッケージ。 https://github.com/joddie/macrostep

  3. 展開したいマクロの上にカーソルを置きM-x leaf-expandを実行すると、*Leaf Expand*という新しいバッファにマクロ展開結果を表示してくれる。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?