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

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

[elpa] externals/objed 951af46 28/59: Convert eval op to eval-context


From: Clemens Radermacher
Subject: [elpa] externals/objed 951af46 28/59: Convert eval op to eval-context
Date: Sun, 24 Mar 2019 06:06:39 -0400 (EDT)

branch: externals/objed
commit 951af46bae595a2312b82c78ed29cffa70632430
Author: Clemens Radermacher <address@hidden>
Commit: Clemens Radermacher <address@hidden>

    Convert eval op to eval-context
---
 objed-objects.el |  4 ++++
 objed.el         | 21 +++++++++++++++------
 2 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/objed-objects.el b/objed-objects.el
index 1138909..fa8f055 100644
--- a/objed-objects.el
+++ b/objed-objects.el
@@ -511,6 +511,10 @@ OBJ is the object to use and defaults to 
`objed--current-obj'."
   (filter-buffer-substring (objed--beg)
                            (objed--end)))
 
+(defun objed--at-object-p (obj)
+  "Return non nil when point is at object OBJ."
+  (funcall (objed--name2func obj) :atp))
+
 
 (defun objed--goto-char (pos)
   "Move to position POS possibly skipping leading whitespace."
diff --git a/objed.el b/objed.el
index fa95f64..eaa718b 100644
--- a/objed.el
+++ b/objed.el
@@ -784,8 +784,9 @@ selected one."
     ;; TODO: start query replace in current object,
     ;; or for all
     (define-key map "%" 'objed-replace)
-    (define-key map ":" 'objed-eval)
-    ;; (objed-define-op nil objed-replace current))
+    ;; TODO: objed-eval-expression
+    (define-key map ":" 'eval-expression)
+
     (define-key map "&"
       (objed-define-op nil objed-pipe-region))
 
@@ -843,7 +844,7 @@ Other single character keys are bound to `objed-undefined'."
 
     (define-key map "q"
       (objed-define-op nil objed-reformat-op ignore))
-    (define-key map "e" 'objed-eval)
+    (define-key map "e" 'objed-eval-context)
     (define-key map "r" ctl-x-r-map)
     (define-key map "n" 'objed-narrow)
 
@@ -2787,7 +2788,7 @@ If REPLACE is non-nil replace the region with the result."
          (objed-indent beg end))))
 
 
-(defun objed-eval (&optional replace)
+(defun objed-eval-context (&optional replace)
   "Eval objects.
 
 If REPLACE is non-nil replace evaluated code with result."
@@ -2801,8 +2802,16 @@ If REPLACE is non-nil replace evaluated code with 
result."
             (when (and beg end)
               (goto-char beg)
               (funcall 'objed--eval-func beg end replace)))))
-    (apply 'objed--eval-func
-           (append (objed--current) (list replace)))))
+    (when (and (objed--at-object-p 'bracket)
+               (not (eq objed--object 'bracket)))
+      (objed--switch-to 'bracket))
+    (unless (and (not (eq last-command this-command))
+                 (apply 'objed--eval-func
+                        (append (objed--current) (list replace))))
+      (objed--switch-to 'defun)
+      (apply 'objed--eval-func
+             (append (objed--current) (list replace))))))
+
 
 (defun objed-pipe-region (beg end cmd &optional variant)
   "Pipe region text between BEG and END through a shell CMD.



reply via email to

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