mirror of
https://github.com/abo-abo/avy.git
synced 2025-10-13 13:33:03 +00:00
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:
parent
4a23a0d63e
commit
54fb4d65e1
54
avy.el
54
avy.el
@ -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
|
start
|
||||||
(insert
|
(save-excursion
|
||||||
(buffer-substring-no-properties
|
(goto-char start)
|
||||||
start
|
(move-end-of-line arg)
|
||||||
(save-excursion
|
(point)))))
|
||||||
(goto-char start)
|
(cond ((eq avy-line-insert-style 'above)
|
||||||
(move-end-of-line arg)
|
(beginning-of-line)
|
||||||
(point)))
|
(save-excursion
|
||||||
"\n")))))
|
(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)
|
||||||
(insert
|
(beginning-of-line)
|
||||||
(current-kill 0))))))
|
(save-excursion
|
||||||
|
(insert
|
||||||
|
(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 ()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user