Une fonction Emacs qu'elle est utile
Par Juba le jeudi 15 septembre 2011, 11:47 - Emacs, Gnus - Lien permanent
Un des trucs que j'adore sous org-mode, c'est la possibilité de déplacer des éléments (items de listes, titres, sections, etc.) avec M-haut et M-bas.
J'ai réalisé ce matin que je passais quand même un certain temps, lors de l'édition de fichiers, à enchaîner les C-k et C-y pour déplacer des lignes entières. Ça serait-y pas plus pratique de pouvoir utiliser M-haut et M-bas partout pour déplacer les lignes de la même manière que sous org-mode ?
Un petit tour sur EmacsWiki, et voilà :
(defun move-line (n) "Move the current line up or down by N lines." (interactive "p") (setq col (current-column)) (beginning-of-line) (setq start (point)) (end-of-line) (forward-char) (setq end (point)) (let ((line-text (delete-and-extract-region start end))) (forward-line n) (insert line-text) ;; restore point to original column in moved line (forward-line -1) (forward-char col))) (defun move-line-up (n) "Move the current line up by N lines." (interactive "p") (move-line (if (null n) -1 (- n)))) (defun move-line-down (n) "Move the current line down by N lines." (interactive "p") (move-line (if (null n) 1 n))) (global-set-key (kbd "M-<up>") 'move-line-up) (global-set-key (kbd "M-<down>") 'move-line-down)
On rajoute ça à son .emacs, et boudiou que c'est pratique !
Commentaires
Pareil avec une region : http://www.emacswiki.org/emacs/Move...
C'est assez pratique
Les fonctions org-move-line-up et org-move-line-down sont identiques. Elles ne font pas le move-region en revanche.