2006-06-15 [長年日記]

[xyzzy] エラージャンプ

xyzzyではコンパイルしたときのエラー出力やgrepの結果から、F10(first-error), F11(next-error)でジャンプできますが、HHKPro2にしたらファンクションキーを押すにはFnと組み合わせなくてはいけなくなってしまい微妙に不便になってしまいました。

xyzzyのカスタマイズで紹介されているemacs-next-errorを試してみたのですが、最後までエラージャンプをしないと*error-list*にデータが残っていて次にgrepした時などに前の結果に飛んでしまうことがあるとか、エラー行を選択してジャンプできないなど微妙に合わない気がします。

というわけでこんなのを書いてみました。grepやコンパイルした直後には出力結果のバッファにカーソルがあるので、そのときだけfirst-errorを使い、それ以外の場合にはnext-errorを使うというかなりいい加減なものですが、私の使い方には合っているようです。

(setf *error-buffers* '("*grep*" "*Command Output*"))
(defun jump-to-error (&optional arg)
  (interactive "p")
  (let ((name (buffer-name (selected-buffer))))
    (if (find name *error-buffers* :test #'string=)
        (progn
          (if (equal (point) (point-max))
              (goto-char (point-min)))
          (first-error arg nil))
      (next-error arg))))
(global-set-key #\C-] 'jump-to-error)
[]