avy.el (avy-line-insert-style): Customize avy-copy-line, avy-move-line

* avy.el (avy-copy-line):
(avy-move-line): Update.

Fixes #117
This commit is contained in:
Oleh Krehel 2015-12-01 14:37:09 +01:00
parent 4a23a0d63e
commit 54fb4d65e1

40
avy.el
View File

@ -1080,23 +1080,35 @@ Otherwise, forward to `goto-line' with ARG."
(unless (eq r t) (unless (eq r t)
(avy-action-goto r)))) (avy-action-goto r))))
(defcustom avy-line-insert-style 'above
"How to insert the newly copied/cut line."
:type '(choice
(const :tag "Above" above)
(const :tag "Below" below)))
;;;###autoload ;;;###autoload
(defun avy-copy-line (arg) (defun avy-copy-line (arg)
"Copy a selected line above the current line. "Copy a selected line above the current line.
ARG lines can be used." ARG lines can be used."
(interactive "p") (interactive "p")
(avy-with avy-copy-line (avy-with avy-copy-line
(let ((start (avy--line))) (let* ((start (avy--line))
(move-beginning-of-line nil) (str (buffer-substring-no-properties
(save-excursion
(insert
(buffer-substring-no-properties
start start
(save-excursion (save-excursion
(goto-char start) (goto-char start)
(move-end-of-line arg) (move-end-of-line arg)
(point))) (point)))))
"\n"))))) (cond ((eq avy-line-insert-style 'above)
(beginning-of-line)
(save-excursion
(insert str "\n")))
((eq avy-line-insert-style 'below)
(end-of-line)
(insert "\n" str)
(beginning-of-line))
(t
(user-error "Unexpected `avy-line-insert-style'"))))))
;;;###autoload ;;;###autoload
(defun avy-move-line (arg) (defun avy-move-line (arg)
@ -1105,13 +1117,21 @@ ARG lines can be used."
(interactive "p") (interactive "p")
(avy-with avy-move-line (avy-with avy-move-line
(let ((start (avy--line))) (let ((start (avy--line)))
(move-beginning-of-line nil)
(save-excursion
(save-excursion (save-excursion
(goto-char start) (goto-char start)
(kill-whole-line arg)) (kill-whole-line arg))
(cond ((eq avy-line-insert-style 'above)
(beginning-of-line)
(save-excursion
(insert (insert
(current-kill 0)))))) (current-kill 0))))
((eq avy-line-insert-style 'below)
(end-of-line)
(newline)
(save-excursion
(insert (substring (current-kill 0) 0 -1))))
(t
(user-error "Unexpected `avy-line-insert-style'"))))))
;;;###autoload ;;;###autoload
(defun avy-copy-region () (defun avy-copy-region ()