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

第五回は @さんでした.

cd(change directory)するなら let + default-directory

https://github.com/wataken44/dot.emacs.d2/blob/master/init.el#L7

オリジナル
(progn (cd "~/.emacs.d/site-lisp/")
       (if (fboundp 'normal-top-level-add-subdirs-to-load-path)
           (normal-top-level-add-subdirs-to-load-path)))

;; ...

(progn (cd "~"))
改正案

letを使うことで, 元の位置に戻す必要がなくなります. letを抜けると
元の位置に戻ります. Guardオブジェクト的な感じで使えるので便利です.


default-directoryに設定する値の末尾は '/'にする必要があるので
注意してください. file-name-as-directoryを使うと無難です.

(let ((default-directory "~/.emacs.d/site-lisp/"))
  (if (fboundp 'normal-top-level-add-subdirs-to-load-path)
      (normal-top-level-add-subdirs-to-load-path)))

server起動

https://github.com/wataken44/dot.emacs.d2/blob/master/init.d/init-misc.el#L53


複数台起動を考慮して, server-running-pのチェックでラップするとよいです.
server-running-pは autoloadでないので, (require 'server)が必要です.

(require 'server)
(unless (server-running-p)
  (server-start))

marmalde

https://github.com/wataken44/dot.emacs.d2/blob/master/init.d/init-elpa.el#L3


marmaladeは最近はあまり使われていないので, melpa-stableに
した方がよいです. marmaladeにしかないパッケージがあれば
別ですが, 安定版を使うという用途であれば melpa-stableの
方がよいです.

indent-tabs-modeのモードの設定

各種プログラミングモードで nilにしていますが, setq-defaultで nil
しているので不要です.


これに限った話ではないですが, 各 hookで同じ設定を追加するのであれば,
デフォルト値をそちらにしてしまって, 別の値を使うときだけ設定するという
ようにすると設定量が少なくなり, 重複が減ってよいかと思います.

おわりに

次回は 10月 11日 22:00-です.