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

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

[elpa] externals/objed 6227a85 43/59: Improve movment with objed extend


From: Clemens Radermacher
Subject: [elpa] externals/objed 6227a85 43/59: Improve movment with objed extend
Date: Sun, 24 Mar 2019 06:06:42 -0400 (EDT)

branch: externals/objed
commit 6227a858386611e4a7bf2cd18a8b902a03186ff8
Author: Clemens Radermacher <address@hidden>
Commit: Clemens Radermacher <address@hidden>

    Improve movment with objed extend
---
 objed.el | 52 +++++++++++++++++++---------------------------------
 1 file changed, 19 insertions(+), 33 deletions(-)

diff --git a/objed.el b/objed.el
index 8eb86ad..13fe536 100644
--- a/objed.el
+++ b/objed.el
@@ -566,33 +566,22 @@ BEFORE and AFTER are forms to execute before/after 
calling the command."
               (symbol-name cmd) (symbol-name obj))
      (interactive)
      ,before
-     (setq this-command ',cmd)
-     (call-interactively ',cmd)
-     ,after
-     (objed--switch-to ',obj)))
+     (let* ((prb (and (region-active-p) (= (point) (region-beginning))))
+            (pre (and (region-active-p) (= (point) (region-end))))
+            (pos (point)))
+       (setq this-command ',cmd)
+       (call-interactively ',cmd)
+       ,after
+       (objed--switch-to ',obj)
+       (when (or prb pre)
+         (cond ((and prb
+                     (= (point) (region-end)))
+                (set-mark pos))
+               ((and pre
+                     (= (point) (region-beginning)))
+                (set-mark pos)))))))
 
 
-(defun objed--forward-word ()
-  "Forward word.
-
-Accommodate for `objed-extend'."
-  (interactive)
-  (if (and (eq last-command 'objed-extend)
-           (eq objed--object 'word)
-           (looking-at "\\<"))
-      (objed-exchange-point-and-mark)
-    (call-interactively 'forward-word)))
-
-(defun objed--backward-word ()
-  "Backward word.
-
-Accommodate for `objed-extend'."
-  (interactive)
-  (if (and (eq last-command 'objed-extend)
-           (eq objed--object 'word)
-           (looking-back "\\>" 1))
-      (objed-exchange-point-and-mark)
-    (call-interactively 'backward-word)))
 
 (defun objed-quit-window-or-reformat ()
   "Quit window for objed.
@@ -660,10 +649,11 @@ selected one."
 
     ;; general movement
     (define-key map "s" (objed--call-and-switch
-                         objed--forward-word
+                         forward-word
                          word))
     (define-key map "r" (objed--call-and-switch
-                         objed--backward-word word))
+                         backward-word
+                         word))
 
     (define-key map "S" 'objed-move-word-forward)
     (define-key map "R" 'objed-move-word-backward)
@@ -677,12 +667,7 @@ selected one."
 
     (define-key map "p" (objed--call-and-switch previous-line line))
     (define-key map "n" (objed--call-and-switch
-                         next-line line
-                         (when (and (bolp)
-                                    (eq last-command 'objed-extend)
-                                    (eq objed--object 'line))
-                           (objed-exchange-point-and-mark)
-                           (goto-char (line-beginning-position)))))
+                         next-line line))
 
     (define-key map "P" 'objed-move-line-backward)
     (define-key map "N" 'objed-move-line-forward)
@@ -2102,6 +2087,7 @@ objed operation is used."
         (setq mark-active nil)
         (objed--init objed--object)
         (message "Install expand-region to expand on repeat."))
+    ;; when moving forward current obj shoul look like included in selection
     (unless objed--extend-cookie
       (setq objed--extend-cookie
             (face-remap-add-relative 'objed-hl



reply via email to

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