help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Move selection up, down


From: Oleksandr Gavenko
Subject: Re: Move selection up, down
Date: Thu, 11 Sep 2008 20:04:32 +0300
User-agent: Thunderbird 2.0.0.9 (Windows/20071031)

Andreas Politz wrote:
jiri.pejchal@gmail.com wrote:
Hi,

in Netbeans when you press M-S-up/M-S-down you move the selected text
up/down. When nothing is selected it moves the current line.

With C-S-up/C-S-down you copy the selection up/down. When nothings is
selected it copies the current line up/down.

Is such functionality available in emacs?

Jiri Pejchal


Heres some elisp. It binds M-S-up/down to commands
which move the active region (with respect to columns)
or the current line prefix arg lines up or down.
Have fun.
-ap

(defun move-text-internal (arg)
  (cond
   ((and mark-active transient-mark-mode)
    (if (> (point) (mark))
       (exchange-point-and-mark))
    (let ((column (current-column))
         (text (delete-and-extract-region (point) (mark))))
      (forward-line arg)
      (move-to-column column t)
      (set-mark (point))
      (insert text)
      (exchange-point-and-mark)
      (setq deactivate-mark nil)))
   (t
    (beginning-of-line)
    (when (or (> arg 0) (not (bobp)))
      (forward-line)
      (when (or (< arg 0) (not (eobp)))
       (transpose-lines arg))
      (forward-line -1)))))

(defun move-text-down (arg)
  "Move region (transient-mark-mode active) or current line
 arg lines down."
  (interactive "*p")
  (move-text-internal arg))

(defun move-text-up (arg)
  "Move region (transient-mark-mode active) or current line
 arg lines up."
  (interactive "*p")
  (move-text-internal (- arg)))

(global-set-key [\M-\S-up] 'move-text-up)
(global-set-key [\M-\S-down] 'move-text-down)

After that code people decide stay in NetBeans than move to Emacs :).

Humor about ability of emacs (butterfly-mode):

http://www.digitalsanctuary.com/tech-blog/general/why-use-emacs-instead-of-vi.html



reply via email to

[Prev in Thread] Current Thread [Next in Thread]