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

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

[elpa] externals/objed 0bfdb3c 15/16: Changing key binding policy


From: Clemens Radermacher
Subject: [elpa] externals/objed 0bfdb3c 15/16: Changing key binding policy
Date: Mon, 4 Feb 2019 07:46:32 -0500 (EST)

branch: externals/objed
commit 0bfdb3cf102d11db40d458a7776c90c3cd678631
Author: Clemens Radermacher <address@hidden>
Commit: Clemens Radermacher <address@hidden>

    Changing key binding policy
    
    More consistent and aligned with Emacs regular bindings. In addition
    to that the new bindings allow for more efficent movement and switch
    to editing mode when char based commands are used.
---
 objed-objects.el |  2 +-
 objed.el         | 61 ++++++++++++++++++++++++++++++++------------------------
 2 files changed, 36 insertions(+), 27 deletions(-)

diff --git a/objed-objects.el b/objed-objects.el
index a518e26..02b3c06 100644
--- a/objed-objects.el
+++ b/objed-objects.el
@@ -404,7 +404,7 @@ OBJ is the object to use and defaults to 
`objed--current-obj'."
   "Return non-nil if current object is a basic object.
 
 From basic objects `objed' starts expanding to context objects."
-  (memq objed--object '(line word char region buffer)))
+  (memq objed--object '(sexp line word char region buffer)))
 
 (defun objed--current (&optional obj)
   "Get the current range of interest.
diff --git a/objed.el b/objed.el
index a89dd96..f50a2eb 100644
--- a/objed.el
+++ b/objed.el
@@ -215,6 +215,8 @@ function should return nil if objed should not initialize."
     (back-to-indentation . line)
     (org-beginning-of-line . line)
     (org-end-of-line . line)
+    (forward-sentence . sentence)
+    (org-forward-sentence . sentence)
     (backward-sentence . sentence)
     (org-backward-sentence . sentence)
     (org-backward-element . paragraph)
@@ -618,12 +620,10 @@ BEFORE and AFTER are forms to execute before/after 
calling the command."
 
     (define-key map (kbd "C-M-w") 'append-next-kill)
     ;; todo: restore object state, too?
-    (define-key map (kbd "/") (objed--call-and-switch undo char))
-    ;; usual emacs keys which should not trigger reset should be added to
-    ;; objed-keeper-commands...
+    (define-key map "/" (objed--call-and-switch undo char))
+    (define-key map "~" 'objed-undo-in-object)
 
     ;; general movement
-
     (define-key map "s" (objed--call-and-switch
                          objed--forward-word
                          word))
@@ -653,12 +653,17 @@ BEFORE and AFTER are forms to execute before/after 
calling the command."
     (define-key map "N" 'objed-move-line-forward)
 
 
+    (define-key map "(" 'objed-backward-until-context)
+    (define-key map ")" 'objed-forward-until-context)
     (define-key map "[" 'objed-current-or-previous-context)
     (define-key map "]" 'objed-current-or-next-context)
-
     (define-key map "{" (objed--call-and-switch backward-paragraph paragraph))
-    (define-key map "}" (objed--call-and-switch forward-paragraph paragraph))
-
+    (define-key map "}" (defun objed-forward-paragraph ()
+                          (interactive)
+                          (call-interactively 'forward-paragraph)
+                          (unless (eq last-command this-command)
+                            (objed--skip-ws t))
+                          (objed--switch-to 'paragraph)))
 
     (define-key map (kbd "<C-left>") 'objed-indent-left)
     (define-key map (kbd "<C-right>") 'objed-indent-right)
@@ -683,7 +688,6 @@ BEFORE and AFTER are forms to execute before/after calling 
the command."
 
     ;; context expansions
     (define-key map "o" 'objed-expand-context)
-    (define-key map "u" 'objed-upto-context)
 
     (define-key map "i" 'objed-del-insert)
     (define-key map "t" 'objed-toggle-state)
@@ -693,7 +697,7 @@ BEFORE and AFTER are forms to execute before/after calling 
the command."
     (define-key map "m" 'objed-mark)
     ;; mark upwards
     (define-key map "M" 'objed-toggle-mark-backward)
-    (define-key map "U" 'objed-unmark-all)
+    ;; (define-key map "U" 'objed-unmark-all)
 
     ;; "visual"
     (define-key map "v" 'objed-extend)
@@ -723,13 +727,13 @@ BEFORE and AFTER are forms to execute before/after 
calling the command."
     ;; quote op
     (define-key map "'"
       (objed-define-op nil objed-electric-pair))
-    ;; all the usual quoting signs
-    (define-key map "~" 'objed-undo-in-object)
+    (define-key map "\""
+      (objed-define-op nil objed-electric))
 
     ;; special commands
     (define-key map "," 'objed-last)
     ;; jump to objects with avy
-    (define-key map "z" 'objed-ace)
+    (define-key map "`" 'objed-ace)
     ;; swiper like object search
     (define-key map (kbd "M-o") 'objed-occur)
     ;; TODO: start query replace in current object,
@@ -748,6 +752,7 @@ BEFORE and AFTER are forms to execute before/after calling 
the command."
     (define-key map (kbd "<M-return>")
       'objed-insert-new-object)
 
+    ;; TODO:
     ;; (define-key map "^" 'objed-raise-inner)
 
     (define-key map "!"
@@ -757,21 +762,11 @@ BEFORE and AFTER are forms to execute before/after 
calling the command."
     (define-key map "x" 'objed-op-map)
     (define-key map "c" 'objed-object-map)
 
-    ;; direct acc objs
-    ;; moved to S/R
     ;; direct object switches
     (define-key map "." 'objed-identifier-object)
     (define-key map "_" 'objed-symbol-object)
     (define-key map "l" 'objed-line-object)
-
     ;;(define-key map "%" 'objed-contents-object)
-     ;; not regular objects, selection
-    ;; (define-key map (kbd "M-SPC") 'objed-select-object)
-    ;; used for direct quoting now...
-    ;;
-    ;; (define-key map "{" 'objed-paragraph-object)
-    ;; (define-key map "[" 'objed-section-object)
-    ;; (define-key map "(" 'objed-textblock-object)
 
     map)
   "Keymap for commands when `objed' is active.")
@@ -858,7 +853,7 @@ To define new operations see `objed-define-op'.")
     (define-key map "j" 'objed-output-object)
     (define-key map "h" 'objed-buffer-object)
 
-    (define-key map "z" 'objed-ace-object)
+    (define-key map "`" 'objed-ace-object)
     map)
   "Keymap used for additional text-objects by `objed'.
 
@@ -874,11 +869,11 @@ To define new objects see `objed-define-object'.")
 
 Use `objed-define-dispatch' to define a dispatch command.")
 
-(objed-define-dispatch "(" objed--backward-until)
-(objed-define-dispatch ")" objed--forward-until)
 (objed-define-dispatch "*" objed--mark-all-inside)
 (objed-define-dispatch "#" objed--ace-switch-object)
 
+(objed-define-dispatch "u" objed--backward-until)
+(objed-define-dispatch "z" objed--forward-until)
 
 (defun objed--backward-until (name)
   "Activate part from point backward until object NAME."
@@ -892,7 +887,6 @@ Use `objed-define-dispatch' to define a dispatch command.")
       :ibeg (objed--min o)
       :iend start))))
 
-
 (defun objed--forward-until (name)
   "Activate part from point forward until object NAME."
   (let* ((start (point))
@@ -1614,6 +1608,19 @@ to an object containing the current one."
          (or (objed--switch-to 'defun 'inner)
              (objed--switch-to 'line 'inner))))))
 
+(defun objed-backward-until-context ()
+  (interactive)
+  (when (save-excursion (objed-context-object)
+                        (objed-toggle-state))
+    (objed--change-to :iend (point) :end (point))
+    (goto-char (objed--beg))))
+
+(defun objed-forward-until-context ()
+  (interactive)
+  (when (save-excursion (objed-context-object)
+                        (objed-toggle-state))
+    (objed--change-to :ibeg (point) :beg (point))
+    (goto-char (objed--end))))
 
 (defun objed-current-or-previous-context (&optional arg)
   "Move to end of object at point and activate it.
@@ -3127,6 +3134,8 @@ whitespace they build a sequence."
     (define-key map (kbd "M-SPC") 'objed-activate)
     (define-key map (kbd "M-[") 'objed-beg-of-object-at-point)
     (define-key map (kbd "M-]") 'objed-end-of-object-at-point)
+    (define-key map (kbd "C-,") 'objed-prev-identifier)
+    (define-key map (kbd "C-.") 'objed-next-identifier)
     map)
   "Keymap for /function`objed-mode'.")
 



reply via email to

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