C-xC-aにキー設定をしているとicicles+gdbでエラー

はまった.
dddでも遊んでみた, 端末でも遊んでみた. じゃあ次は, Emacs上でやな.
Grand Unified Debuggerの力を見ようじゃないかということで, やろうとしたらエラーがでた
たぶん, 中々居ないだろうけど, 一応エントリにログとして残しておく.
同じことにハマる人が居ないとも限らないから.



M-x gdb としたら下記のようなエラーが・・・.

"Key sequence C-x C-a C-l starts with non-prefix key C-x C-a"

最初?で, iciclesがどうたら〜と出てたから,
iciclesのバージョンか設定かなあで最新にあげたり色々いじってみたけど要領を得ない.
emacs -q + iciclesのみ設定で起動するとちゃんと使えるんだよね.
それでエラーに出ているキー設定を再定義しているのがまずいのかなと思って外してみたらビンゴだった.


自分は, グローバルキーの設定で以下のようなのを定義してる.
静的略語展開をするのに, C-xaeと打つのはちょっと面倒だし, 打ち間違うからね.

(global-set-key "\C-x\C-a" 'expand-abbrev)

これがまずかったみたい.
こいつをコメントアウトして起動しなおしたらおkやった.
とりあえず静的略語展開は, C-xaeとするか, hippie-expandを使うこととする.
たぶん後者. hippie-expandの方が簡単だし. ちなみにこれは, M-/に割り当てている.


ついでにどうでもいいけど, これを調べてて前からの疑問が解決した.
関数がエラー吐くためにデバッガ起動してなんでだろうな〜と思ってたけど, どっかで↓こいつを設定してたからみたいや.

(setq debug-on-error t)

tにしてると関数がエラー吐くたびにデバッガに飛ぶ.
別に実害はほとんどなかったけど, 原因がわかってすっきりした.
普通は, nilのはず.
たぶんどっかで設定してんだろうなあ・・・.
と思って自分の設定ファイル群に対してgrepをかけてみたが, 無い.

[khiker@khlin015 ~]
$ grep -iH debug-on-error elisp-dir/*.el .emacs
[khiker@khlin015 ~]
$

ということは, こちらで導入してる何らかのパッケージがやってんやね.
と思ってgrepしたらビンゴだった.

$ grep -iH debug-on-error elisp-dir/*.el .emacs site-lisp/*.el site-lisp/*/*.el
site-lisp/eval-expr.el:(defcustom eval-expr-honor-debug-on-error t
site-lisp/eval-expr.el:debug-on-error specifies that the particular error is a debuggable condition."
site-lisp/eval-expr.el:         (ee::result (cond ((and eval-expr-honor-debug-on-error
site-lisp/eval-expr.el:                                 debug-on-error)
site-lisp/gas-mode.el:  (setq debug-on-error t)
site-lisp/inferior-gauche.el:(setq debug-on-error t)
site-lisp/msf-abbrev.el:;;      (debug-on-error t)
site-lisp/msf-abbrev.el:;; ;;   (debug-on-error t)
site-lisp/emacs-w3m/w3m-util.el:  "Like `condition-case', except that signal an error if `debug-on-error'
site-lisp/emacs-w3m/w3m-util.el:  (` (if (or debug-on-error debug-on-quit)
site-lisp/lookup/lookup.el:  (setq debug-on-error lookup-debug-mode)
site-lisp/mew/mew-cache.el:     ;; set debug-on-error to t.
site-lisp/mew/mew-decode.el:      (let ((debug-on-error t))
site-lisp/mew/mew-edit.el:      (let ((debug-on-error t))
site-lisp/mew/mew-encode.el:    (let ((debug-on-error t))
site-lisp/mew/mew-encode.el:    (let ((debug-on-error t))
site-lisp/muse/muse.el:Additionally, if `debug-on-error' is set to t, keep the buffer
site-lisp/muse/muse.el:           (if debug-on-error
site-lisp/muse/muse.el:                                   " %s:\n  %s\n\nSet debug-on-error to"
site-lisp/muse/muse.el:           (unless debug-on-error (kill-buffer ,temp-buffer)))))))
site-lisp/slime/slime.el:(defvar slime-test-debug-on-error nil
site-lisp/slime/slime.el:            (if slime-test-debug-on-error
site-lisp/slime/slime.el:                (let ((debug-on-error t)
site-lisp/slime/slime.el:  (let ((slime-test-debug-on-error nil))
site-lisp/slime/slime.el:         (when slime-test-debug-on-error

うーんとソースをざっと見る限りだと, 原因は, inferior-gauche.elかな.
あからさまに頭で宣言してる.
他はコメントアウトだったりモードに入ったときにtにするだけだったりとかだから.



とりあえず, パッケージ側をいじるのは好みではないので, こっち側で対処しといた.
色々なパッケージを入れてるとまた同じことに出逢うかもしれないしからこっちでやっとけば確実.

(setq debug-on-error nil)

うーん, よく考えると開発をする分にはデフォでtの方がありがたいかも.
まー, この設定でやってて戻したくなればすぐ戻せばいいか.
とりあえず, このまま過してみよう.

更新時刻

2007年, 12月19日, 23:45