- elisp-depend 20161230.750(in MELPA)
- Parse depend libraries of elisp file.
概要
あなたは、Emacs Lispを書いていて、
つい require
を入れるのを
忘れてしまったことはありませんか?
require
漏れは、
動作確認中では正しく動作しても、
いざ新規Emacsで立ち上げたら
関数や変数が未定義であるために
エラーになってしまいます。
そこで、
現在のEmacsセッションの中で
require
を入れてくれるのが、
このelisp-depend.elです。
あなたがやるべきことは、
ただひたすらに
Emacs Lispコードを書き、
新しいEmacsで動作させようとしたときに、
M-x elisp-depend-insert-require
を実行すればいいのです。
標準ライブラリまで過剰に
require
をしてきますので、
余剰な require
は適宜削ってください。
いきなり実行することに
抵抗があるかもしれません。
ならば、
M-x elisp-depend-print-dependencies
でどの関数がどのfeatureに依存しているのかを
別バッファで表示させてください。
インストール
パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。
(package-initialize) (setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/") ("melpa" . "http://melpa.org/packages/") ("org" . "http://orgmode.org/elpa/")))
初めてelisp-dependを使う方は
以下のコマンドを実行します。
M-x package-install elisp-depend
アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。
M-x package-install package-utils (初めてアップグレードする場合のみ) M-x package-utils-upgrade-by-name elisp-depend
メカニズム
elisp-depend.elは
以下のように動作します。
- カレントバッファのEmacs Lispファイルを解析
- 依存しているライブラリを得る
その表現方法として
3つのコマンドがあります。
- M-x elisp-depend-print-dependencies
- featureと関数の対応を表示
- M-x elisp-depend-insert-comment
- featureをコメントとして挿入
- M-x elisp-depend-insert-require
- featureを
require
で挿入
デフォルトでは
現在のシンボルの依存情報を
symbol-file
で得るfeaturep
で得る
t
ならばrequire
を挿入nil
ならばautoload
を挿入
provide
が使われていない場合はautoload
を挿入
設定 170103082712.elisp-depend.el(以下のコードと同一)
;;; bug: この設定がないと未定義エラーになる (defalias 'string-equal-p 'string-equal) ;;; Emacsのライブラリがあるディレクトリを指定する ;; デフォルト ;; (setq elisp-depend-directory-list '("/usr/share/emacs/")) ;; カスタム (setq elisp-depend-directory-list '("/usr/local/share/emacs/" "~/.emacs.d/elpa/"))
実行方法
$ wget http://rubikitch.com/f/170103082712.elisp-depend.el $ emacs -Q -f package-initialize -l 170103082712.elisp-depend.el
M-x elisp-depend-insert-requireの実行例
以下のコードでM-x elisp-depend-insert-requireを実行してみます。
(defun test () (helm-for-files) (ido-find-file))
idoやhelmが読み込まれていないとき
(autoload 'ido-find-file "ido") (autoload 'helm-for-files "helm-files") (defun test () (helm-for-files) (ido-find-file))
idoやhelmが読み込まれているとき
(require 'ido) (require 'helm-files) (defun test () (helm-for-files) (ido-find-file))
本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。