行を入れ替えるマイナーモード的な
中間前日のはずなのに何でこんなものを書いてるんだろ.
xyzzyでCtrl+上下キーでカーソルのある行を上下に移動できるもの.行の入れ替えをしたいことが結構頻繁にあるので.
超適当なつくりなので一番下の行ではうまく動かないけど.マイナーモード初めて書いたのでそのメモ代わり.
line-shift.l
(provide 'line-shift) (in-package "user") (export '(*line-shift-mode* line-shift-mode* line-shift-up line-shift-down)) (defvar-local *line-shift-mode* nil) (defvar *line-shift-mode-map* nil) (unless *line-shift-mode-map* (setq *line-shift-mode-map* (make-sparse-keymap)) (define-key *line-shift-mode-map* #\C-Up 'line-upshift) (define-key *line-shift-mode-map* #\C-Down 'line-downshift)) (defun line-shift-mode (&optional (arg nil sv)) (interactive "p") (ed::toggle-mode '*line-shift-mode* arg sv) (update-mode-line t) (if *line-shift-mode* (set-minor-mode-map *line-shift-mode-map*) (unset-minor-mode-map *line-shift-mode-map*)) t) (pushnew '(*line-shift-mode* . "LineShift") *minor-mode-alist* :key #'car) (defun line-upshift () (interactive) (transpose-lines) (previous-line) (previous-line)) (defun line-downshift () (interactive) (next-line) (transpose-lines) (previous-line))
参考:
http://www.ssnsk.com/pc/xyzzyMinorMode_04.html
http://www.uranus.dti.ne.jp/~shiro-/soft/xyzzy/keybind.html
http://white.s151.xrea.com/wiki/index.php?memo/xyzzy/minor-mode