Meta+up/downでカーソルと一緒に行を動かす


Eclipseのエディタでできるんだけど便利なので
Emacsでもできるようにしてみた。

(defun exchange-lines-up ()
  (interactive)
  (if (= 1 (line-number-at-pos))
      nil
    (transpose-lines 1)
    (previous-logical-line 2)))

(defun exchange-lines-down ()
  (interactive)
  (next-logical-line 1)
  (transpose-lines 1)
  (previous-logical-line 1))

(global-set-key [(meta up)] 'exchange-lines-up)
(global-set-key [(meta down)] 'exchange-lines-down)

最近見様見真似でEmacs Lisp書き始めました。
エディタのカスタマイズって楽しい。。。


最初は現在行を切り取り、前/後の行を切り取り、交換してぺたっと貼る
という方法でやってたんですが、あとからtranspose-linesがあることに気づきました。おかげですっきり。