C-o(open-line)に負引数を与えた場合、現在行の上に改行を入れるように拡張する
open-lineはポイント位置はそのままに改行を入れてくれる関数。自分は、C-mよりよく使ってるかもしれない。
正の前置引数を与えると改行を複数入れてくるのだけど、負だと動作しないから、拡張してみた。
例えば、以下のようなファイルがあったとして、rの後にカーソルがあった時、
abc def ghi jkl mno pqr
C-- C-oなんてすると、以下のようになって欲しいなーと思って、open-lineにadviceをしてみた。
# Emacsでは、デフォルトで、C-oにopen-lineが割り当てられている…はず。少くとも自分はそう。
abc def ghi jkl mno pqr
なんか、あんまり綺麗じゃない気がするけど、こんな感じのadviceがでけた。
(defadvice open-line (around open-line-plus-negative-arg (arg)) (cond ((> 0 arg) (cond ((bolp) (forward-line 0) (newline (- arg))) (t (save-excursion (save-restriction (forward-line 0) (newline (- arg)))))) (scroll-down arg)) (t ad-do-it))) (ad-activate 'open-line) ;;(ad-deactivate 'open-line)
改行だけの行でやると、(save-excursion (save-restriction …))とかの部分だけじゃ上手く動作しなかったので、
ポイントが行頭にあったときを特別扱いして対処した。スマートじゃないなあ…。
更新時刻
- 2009/0611/00:05