emacsでalt+pを押すと、現在行が上の行に持ち上がり、alt+nを押すと下の行に下がるようにしたいです。
この機能を実現しようとQiitaから拝借した下のコードを.emacsに貼っているのですが、微妙に自分が思っている動作と異なります。
alt+nを押すと現在行が下の行とswapされて、自分の希望通りなのですが、
alt+pを押すと、現在行が上の行とswapされて、カーソルは現在行の一つ上の行に移ってしまいます。
つまり、alt+nを連打すると、現在行がどんどん下に移動するのですが、alt+pを連打すると、現在行は1行上に移動し、カーソルはその上の行に移動するので、置いてきぼりになってしまい、現在行をどんどん上に持っていくことができません。
改善方法が分かる方ご教示ください
emacs
1(defun move-line-down () 2 (interactive) 3 (let ((col (current-column))) 4 (unless (eq col 0) 5 (move-to-column 0)) 6 (save-excursion 7 (forward-line) 8 (transpose-lines 1)) 9 (forward-line))) 10 11(defun move-line-up () 12 (interactive) 13 (let ((col (current-column))) 14 (unless (eq col 0) 15 (move-to-column 0)) 16 (save-excursion 17 (forward-line) 18 (transpose-lines -1)) 19 (forward-line -1))) 20
emacs23.3.1, emacs23.4.1の場合、
1 2 3 *4 5
となっているときに(*部分にカーソルがあるとしています)alt+pを押すと、
1 *2 4 3 5
となってしまいます。
emacs24.4.1の場合は
1 2 *4 3 5
となり、こちらが望んでいる動作です。
emacs23.3.1の時だけ動作が変になってしまいます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/05 03:46
2018/11/05 04:54
2018/11/05 06:57