第二回 init.el読書会に参加しました

第二回は yoshitiaさんでした.


以下気になった箇所を示します.
(今は直っているかもしれません)

default-directoryに設定する値は最後が必ず '/'

(let ((default-directory (expand-file-name "~/.emacs.d/elisp")))
  (add-to-list 'load-path default-directory)
  (if (fboundp 'normal-top-level-add-subdirs-to-load-path)
      (normal-top-level-add-subdirs-to-load-path)))

とあるのですが, これでは default-directoryは ~/.emacs.d/になって
しまい, ~/.emacs.d/elispに設定されません.ディレクトリを示す場合は
最後は'/'でないといけません. default-directoryに設定する値があれば,
file-name-as-directoryしておくと, 末尾に '/'がなければ付与してくれる
ので無難です.

うまくいかない例
(let ((default-directory "~/.emacs.d/elisp"))
  (message "%s" (shell-command-to-string "pwd")))

これの結果は /home/yourname/.emacs.dとなります
正しくは以下のとおりです.

(let ((default-directory "~/.emacs.d/elisps/"))
  (message "%s" (shell-command-to-string "pwd")))

marmaladeより melpa-stableの方がよい

marmaladeにしかないというパッケージをインストールするのであれば,
marmaladeを登録しておくべきですが, そうでなければ melpa-stableの
方がいいです. melpaができてから, marmaladeは stable版を置くという
目的で利用されていましたが, 現在目的のための melpa-stableができた
ので marmaladeを安定版利用のために利用する目的はなくなりました.


marmaladeはいくらかの自動化はできますが, 基本手動なのでパッケージに
よってはすごく古いままというものもあります. melpa-stableはバージョン
っぽいタグを打つと更新されるので, パッケージ管理者にも優しいシステム
です. タグを打っていないパッケージがあれば, 作者をつついて打ってもらえば
よいでしょう.

quickrun.elのロードは不要

ここでは quickrunだけですが, パッケージ管理ツールを使ってインストールした
場合, パッケージで定義される変数がすぐに必要になる場合を除けばロードは
不要です(変数を利用する場合も eval-after-loadを使えばロード不要です.)
もしパッケージをロードしないと使えないという場合は, パッケージの作成方法に
問題があると思ってよいです. 特別な場合もごく一部ありますが, もしロードが
必要だったら作者にお知らせした方がいいです.

おわりに

次回は 9月 20日 22時からです.
(これを書いている 10分後)