emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[elpa] master 54fb4d6 61/78: avy.el (avy-line-insert-style): Customize a


From: Oleh Krehel
Subject: [elpa] master 54fb4d6 61/78: avy.el (avy-line-insert-style): Customize avy-copy-line, avy-move-line
Date: Sat, 23 Jan 2016 14:00:17 +0000

branch: master
commit 54fb4d65e1bd9575600c54bc0cdca307cf05ef1e
Author: Oleh Krehel <address@hidden>
Commit: Oleh Krehel <address@hidden>

    avy.el (avy-line-insert-style): Customize avy-copy-line, avy-move-line
    
    * avy.el (avy-copy-line):
    (avy-move-line): Update.
    
    Fixes #117
---
 avy.el |   54 +++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 37 insertions(+), 17 deletions(-)

diff --git a/avy.el b/avy.el
index aa6d662..165087c 100644
--- a/avy.el
+++ b/avy.el
@@ -1080,23 +1080,35 @@ Otherwise, forward to `goto-line' with ARG."
     (unless (eq r t)
       (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
 (defun avy-copy-line (arg)
   "Copy a selected line above the current line.
 ARG lines can be used."
   (interactive "p")
   (avy-with avy-copy-line
-    (let ((start (avy--line)))
-      (move-beginning-of-line nil)
-      (save-excursion
-        (insert
-         (buffer-substring-no-properties
-          start
-          (save-excursion
-            (goto-char start)
-            (move-end-of-line arg)
-            (point)))
-         "\n")))))
+    (let* ((start (avy--line))
+           (str (buffer-substring-no-properties
+                 start
+                 (save-excursion
+                   (goto-char start)
+                   (move-end-of-line arg)
+                   (point)))))
+      (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
 (defun avy-move-line (arg)
@@ -1105,13 +1117,21 @@ ARG lines can be used."
   (interactive "p")
   (avy-with avy-move-line
     (let ((start (avy--line)))
-      (move-beginning-of-line nil)
       (save-excursion
-        (save-excursion
-          (goto-char start)
-          (kill-whole-line arg))
-        (insert
-         (current-kill 0))))))
+        (goto-char start)
+        (kill-whole-line arg))
+      (cond ((eq avy-line-insert-style 'above)
+             (beginning-of-line)
+             (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
 (defun avy-copy-region ()



reply via email to

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