読者です 読者をやめる 読者になる 読者になる

edebug のキー設定

emacs

emacs 24.5 で従来の edebug のキーが効かなくなってしまったので定義する。
従来の設定はどこにいってしまったのだろう。

全部というわけではなく「やさしい Emacs-Lisp 講座」に載っているものだけです。

(require 'cl-lib)

(defun edebug-make-key-list (l)
  (cl-loop for e in l
           collect `(define-key edebug-mode-map (kbd ,(car e)) ',(cdr e))))

(defmacro edebug-define-keys (&rest defs) `(lambda () ,@(edebug-make-key-list defs)))

(add-hook 'edebug-mode-hook
          (edebug-define-keys ("?" . edebug-help)
                              ("q" . top-level)
                              ("SPC" . edebug-step-mode)
                              ("h" . edebug-goto-here)
                              ("r" . edebug-previous-result)
                              ("w" . edebug-where)
                              ("f" . edebug-forward-sexp)
                              ("o" . edebug-step-out)
                              ("b" . edebug-set-breakpoint)
                              ("B" . edebug-next-breakpoint)
                              ("u" . edebug-unset-breakpoint)
                              ("g" . edebug-go-mode)
                              ("G" . edebug-Go-nonstop-mode)
                              ("c" . edebug-continue-mode)
                              ("C" . edebug-Continue-fast-mode)
                              ("t" . edebug-trace-mode)
                              ("T" . edebug-Trace-fast-mode)
                              ("S" . edebug-stop)
                              ("x" . edebug-set-conditional-breakpoint)
                              ("p" . edebug-bounce-point)
                              ("e" . edebug-eval-expression)))

追記 require そのものに修正前の機能があるので不要

x (unless (featurep 'cl-lib) (require 'cl-lib))
o (require 'cl-lib)

追記 emacs を長く立ち上げておくと設定したキーが効かなくなることがあるが

M-: (use-local-map edebug-mode-map)

とするととりあえず動くと思う。なぜ効かなくなるのかは不明。