新人の頃に「"」などの囲み文字は「""」というように最初に対の形で入力して、その後に中身を書いていくという癖を付けられました。まあ、囲み文字を閉じ忘れるのにはいいと思うのですが、如何せんカーソルを一度戻して入力を続けるというのが結構面倒なんですよね。
今はPHPで仕事をしてるんですけど、PHPなんで当然HTMLタグとかも書いたりしてると、囲み文字が結構あって、その都度カーソル戻って入力するのが、結構嫌だった。
そこでXYZZYで「""」や「<>」と入力すると勝手に1文字分カーソルが戻ってくれるようなマクロを作りました。
こちらがソースになります。
;;囲み文字を入力したら、カーソルを戻して囲み文字の間にカーソルが入るようにする
(setq *backword-char-item-list* '((#\) "()") (#\] "[]") (#\} "{}") (#\' "\'\'") (#\" "\"\"") (#\> "<>")))
(defun backword-char-command-hook (list)
(if (consp list)
(let ((last-command (first (first list))) (back-key (first (rest (first list)))))
(add-hook '*post-command-hook*
#'(lambda()
(if (and (eq *last-command-char* last-command)
(looking-back back-key)
) (backward-char)))
)
(backword-char-command-hook (rest list))
)
))
(backword-char-command-hook *backword-char-item-list*)
つたないコードですが、誰かの参考になれば幸いです。
0 件のコメント:
コメントを投稿