Skip to content
Tags

el-init 0.1.4をリリースしました

2015/02/07

タイトルの通り、el-init 0.1.4をリリースしました。

前回の記事の後に0.1.3、0.1.4がリリースされたので、 その両方の変更点について紹介したいと思います。

0.1.3

変数 el-init-overridden-require-p の追加

新しい変数 el-init-overridden-require-p が追加されました。 この変数は require ラッパーが require 関数をオーバーライドしているか どうかを調べるためのもので、オーバーライドされた require 関数の 呼び出し中だけ t に束縛されます。

これは例えば lib- から始まる設定ファイルを el-init-load からの 読み込みを弾きつつ、他の設定ファイルからの読み込みは許したいような ラッパーを作る時に使います。

(defun my-require/filter (feature &optional filename noerror)
  (when (or el-init-overridden-require-p
            (not (string-match-p "\\`lib-" (symbol-name feature))))
    (el-init-next feature filename noerror)))

el-init-require/lazy の動作改善

el-init-overridden-require-p の実装に伴って、 el-init-require/lazy の対象の設定ファイルを他の設定ファイルから require しても問題ないようになりました。

el-init-require/benchmark の計算方法の変更

今までは init-foo.el から init-bar.el を読み込んだ時、 init-bar.el の読み込みにかかった時間も init-foo.el の読み込み時間に カウントしていましたが、0.1.3からは init-bar.el の時間を含めないように なりました。

el-init-get-record の引数 default の追加

el-init-get-record に新しくオプショナル引数として default が追加されました。 これは cl-getf と同じように動作します。 (実際に内部では cl-getf を使用しています)

(let ((el-init-record nil)
      (not-found (cl-gensym)))
  (eq (el-init-get-record 'foo 'bar not-found)
      not-found))
;; => t

0.1.4

0.1.4では el-init-require/lazy の不具合修正のみがなされています。

終わりに

0.1.4で el-init-require/lazy が実用的なレベルになり、自分がel-initで 作りたかったものは大体揃ったかなぁという印象です。 el-init-record ビューアがまだですけどね。

el-init-require/lazy は設定ファイルのロードを遅延するもので、 これは el-init-lazy-init-regexp で指定された設定ファイルのロードを eval-after-load の呼び出しに置き換えます。

例えば init-lazy-foo.el なら

(eval-after-load "foo"
  '(require 'init-lazy-foo))

と等価な形に処理をしてくれるので起動時に読み込まれる設定ファイルを 減らすことができます。 とは言え今はuse-packageがあるのでここまでする必要はあまりなさそうですね。 eval-after-load でコードをラップする必要がなくなることで 素直なコンパイラ警告が得られるので、自分では気に入っています。

もし良かったら試してみてください。

広告

From → Emacs

コメントする

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。