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

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

[elpa] externals/objed a7b9df6 183/216: Add C-RET, M-RET for eval-in-rep


From: Stefan Monnier
Subject: [elpa] externals/objed a7b9df6 183/216: Add C-RET, M-RET for eval-in-repl and inserting new object
Date: Tue, 8 Jan 2019 12:29:35 -0500 (EST)

branch: externals/objed
commit a7b9df6aea526032ac52aafb536e02c1d9529d93
Author: Clemera <address@hidden>
Commit: Clemera <address@hidden>

    Add C-RET, M-RET for eval-in-repl and inserting new object
---
 README.asc | 10 ++++++++--
 objed.el   | 52 ++++++++++++++++++++++++++++++++++++++++++++++++----
 2 files changed, 56 insertions(+), 6 deletions(-)

diff --git a/README.asc b/README.asc
index 164d05c..d57f835 100644
--- a/README.asc
+++ b/README.asc
@@ -332,10 +332,16 @@ commands" below):
 |Pipe object region through shell command.
 
 |kbd:[|]
-|Interactively pipe object region through shell or region command.
+|Incrementally construct command chain to replace text (with live view of 
output).
+
+|kbd:[Ctrl - RET]
+|Evaluate current object using `eval-in-repl`.
+
+|kbd:[M - RET]
+|Insert new (empty) instance of current object type. This inserts the current 
object without the inner content.
 
 |kbd:[$]
-|Flyspell textual content of object.
+|Spell check textual content of object using `flyspell`.
 
 |kbd:[~]
 |Undo in current object region.
diff --git a/objed.el b/objed.el
index 8948738..69c43fa 100644
--- a/objed.el
+++ b/objed.el
@@ -629,10 +629,10 @@ BEFORE and AFTER are forms to execute before/after 
calling the command."
     (define-key map (kbd "<M-right>") 'objed-indent-to-right-tab-stop)
     (define-key map (kbd "<M-left>") 'objed-indent-to-left-tab-stop)
 
-    (define-key map "`" 'objed-top-object);;'objed-backward-symbol)
     (define-key map (kbd "<home>") 'objed-top-object)
-    (define-key map (kbd "´") 'objed-bottom-object);;'objed-forward-symbol)
     (define-key map (kbd "<end>") 'objed-bottom-object)
+    (define-key map "`" 'objed-top-object);'objed-backward-symbol)
+    (define-key map "´" 'objed-bottom-object);'objed-forward-symbol)
     ;; block expansions
     (define-key map "l" 'objed-expand-block)
     (define-key map "a" 'objed-beg-of-block)
@@ -712,8 +712,13 @@ BEFORE and AFTER are forms to execute before/after calling 
the command."
     (define-key map "|"
       (objed-define-op nil objed-ipipe))
 
-    ;; (define-key map (kbd "<C-return>") 'objed-quickrun)
-    (define-key map (kbd "<M-return>") 'objed-insert-new-object)
+    (define-key map (kbd "<C-return>")
+      (objed-define-op
+       nil objed-run-or-eval))
+    (define-key map (kbd "<M-return>")
+      'objed-insert-new-object)
+
+    ;; (define-key map "^" 'objed-raise-inner)
 
     (define-key map "!"
       (objed-define-op nil objed-replace-op))
@@ -2801,6 +2806,45 @@ Commands can be shell commands or region commands."
     ;; goto ref if there is one...
     (objed--exit-objed)))
 
+
+(defvar objed--eir-alist
+  '((emacs-lisp-mode . ielm)
+    (lisp-interaction-mode . ielm)
+    (clojure-mode . cider)
+    (lisp-mode . slime)
+    (racket-mode . racket)
+    (scheme-mode . scheme)
+    (hy-mode . hy)
+    (python-mode . python)
+    (ruby-mode . ruby)
+    (sml-mode . sml)
+    (scala-mode . scala)
+    (lua-mode . lua)
+    (erlang-mode . erlang)
+    (elixir-mode . iex)
+    (ocaml-mode . ocaml)
+    (prolog-mode . prolog)
+    (js3-mode . javascript)
+    (js2-mode . javascript)
+    (js-mode . javascript)
+    (sh-mode . shell))
+  "Map major mode symbols to `eval-in-repl' REPL names.")
+
+
+(defun objed-run-or-eval (beg end)
+  "Evalate region between beg and end using `eval-in-repl'."
+  (interactive "r")
+  (if (not (require 'eval-in-repl nil t))
+      (error "eval-in-repl not found")
+    (let* ((name (symbol-name (cdr (assq major-mode objed--eir-alist))))
+           (lib (intern (concat "eval-in-repl-" name)))
+           (cmd (intern (concat "eir-eval-in-" name))))
+      (when (and lib
+                 (require lib nil t)
+                 (commandp cmd))
+         (call-interactively cmd)))))
+
+
 ;; * Exit active state
 
 (defun objed--line-p (text)



reply via email to

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