Skip to content
Tags

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

2015/07/30

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

このバージョンではエラーハンドリングについての変更が行われました。

変更内容

このバージョンからrequireラッパーも debug-on-error の値を尊重するようになり、 特別な設定をせずとも emacs --debug-init でEmacsを起動した場合 (正確には debug-on-error がnon-nilな場合)、el-initによるロード中に発生した エラーに対してもデバッガが立ち上がるようになりました。

el-init-viewerを使って確認できる情報では不十分なときに役に立つでしょう。

スクリーンショット

  • 通常時
    el-init-0.2.0-error.png
  • --debug-init オプション使用時
    el-init-0.2.0-debug.png

バージョン番号について

バージョンが突然0.2.xに上がっていますが、これは最近になって セマンティックバージョンニングを知ったためで、 特別大きな変更があったというわけではないので安心してください。

el-initとエラーハンドリングについて

el-initではinit-loaderに倣って、設定ファイル群をロードする際に 発生したエラーを補足して、出来る限りロードを継続するように作られています。 そのため、 el-init 0.2.0以前から el-init-load 関数では condition-case の代わりに condition-case-unless-debug を使用していて、 requireラッパーをエラーを補足しないものに限った場合にのみ --debug-init オプション付きでEmacs起動すれば、デバッガを立ち上げることができるように していました。

しかしながら、デフォルトではrequireラッパーに el-init-require/record-error が指定されているので、いざトラブルが発生した際に簡単に利用できるかというと そうではありませんでした。 一応これには理由があって、 el-init-load がel-initの核となる部分なのに対し requireラッパーはあくまで選択可能な拡張という位置づけなので、 エラー補足を目的としたrequireラッパーが debug-on-error に対して どういう立場を取るのか、悩んでいました。

結局のところ、Emacsでデバッガを立ち上げる必要があるようなトラブルの中で 設定ファイルを修正しなければならない、というのは大変だろうということで requireラッパーでも debug-on-error を尊重する形を取ることに決めました。

これはel-initの同梱するrequireラッパーに対する方針として、 今後追加される(かもしれない)requireラッパーに対しても適応していきます。

余談

実装するにあたって、 ignore-errorscondition-casecondition-case-unless-debug に変えるだけだから簡単だろうと思っていたら 地味にハマってしまいました。 結論だけ言うと、テストを通す際にertによって debug-on-errort になってしまうことを考慮したり、undercoverで使われているedebugの関係で edebug-on-errornil にする必要があって、気づくまでに時間がかかりました…

広告

From → Emacs

コメントする

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中

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