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

paredit.elにキーボードを乗っ取られないようにする。

ctrl-j をprefix keyにしているのだけれど。pareditを有効にしたら乗っ取られた。 pareditのコマンドを起動する前にマクロを使ってparedit用のキーマップに変更している模様。 幸い、マクロの前後にもadviceは効くので以下のようにして逃げた。

    (require 'paredit)
    (lexical-let ((enablep nil))
      (defadvice paredit-do-commands (before live-c-j-in-paredit activate)
        (unless enablep
          (setq enablep t)
          (setq paredit-commands
                (loop for x in paredit-commands
                      unless (and (listp x) (equal (car x) "C-j"))
                      collect x)))))

paredit-commandsの構造が謎。