[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/inf-clojure a61dd84 232/313: Insert top level defun into r
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/inf-clojure a61dd84 232/313: Insert top level defun into repl |
Date: |
Wed, 11 Aug 2021 10:00:23 -0400 (EDT) |
branch: elpa/inf-clojure
commit a61dd84dfb83b6c2b0100c77a4b80226ecfbeeb3
Author: dan sutton <dan@dpsutton.com>
Commit: Bozhidar Batsov <bozhidar.batsov@gmail.com>
Insert top level defun into repl
Nice interaction to see the form and then the output.
---
inf-clojure.el | 37 +++++++++++++++++++++++++++++++++----
1 file changed, 33 insertions(+), 4 deletions(-)
diff --git a/inf-clojure.el b/inf-clojure.el
index dd26d25..740deb2 100644
--- a/inf-clojure.el
+++ b/inf-clojure.el
@@ -135,6 +135,7 @@ mode. Default is whitespace followed by 0 or 1
single-letter colon-keyword
(define-key map "\C-c\C-r" #'inf-clojure-eval-region)
(define-key map "\C-c\M-r" #'inf-clojure-reload)
(define-key map "\C-c\C-n" #'inf-clojure-eval-form-and-next)
+ (define-key map (kbd "C-c C-j") #'inf-clojure-insert-defun)
(define-key map "\C-c\C-z" #'inf-clojure-switch-to-repl)
(define-key map "\C-c\C-i" #'inf-clojure-show-ns-vars)
(define-key map (kbd "C-c C-S-a") #'inf-clojure-apropos)
@@ -682,15 +683,25 @@ Prefix argument AND-GO means switch to the Clojure buffer
afterwards."
"Send the string CODE to the inferior Clojure process to be executed."
(inf-clojure--send-string (inf-clojure-proc) code))
+(defun inf-clojure--defun-at-point (&optional bounds)
+ "Return text or range of defun at point.
+If BOUNDS is truthy return a dotted pair of beginning and end of
+current defun else return the string.."
+ (save-excursion
+ (end-of-defun)
+ (let ((end (point))
+ (case-fold-search t)
+ (func (if bounds #'cons #'buffer-substring-no-properties)))
+ (beginning-of-defun)
+ (funcall func (point) end))))
+
(defun inf-clojure-eval-defun (&optional and-go)
"Send the current defun to the inferior Clojure process.
Prefix argument AND-GO means switch to the Clojure buffer afterwards."
(interactive "P")
(save-excursion
- (end-of-defun)
- (let ((end (point)) (case-fold-search t))
- (beginning-of-defun)
- (inf-clojure-eval-region (point) end and-go))))
+ (let ((bounds (inf-clojure--defun-at-point t)))
+ (inf-clojure-eval-region (car bounds) (cdr bounds) and-go))))
(defun inf-clojure-eval-buffer (&optional and-go)
"Send the current buffer to the inferior Clojure process.
@@ -731,6 +742,24 @@ With prefix argument EOB-P, positions cursor at end of
buffer."
(push-mark)
(goto-char (point-max))))
+(defun inf-clojure-insert-and-eval (form)
+ "Insert FORM into process and evaluate.
+Indent FORM. FORM is expected to have been trimmed."
+ (let ((clojure-process (inf-clojure-proc)))
+ (with-current-buffer (process-buffer clojure-process)
+ (comint-goto-process-mark)
+ (let ((beginning (point)))
+ (insert (format "%s" form))
+ (let ((end (point)))
+ (goto-char beginning)
+ (indent-sexp end)))
+ (comint-send-input t))))
+
+(defun inf-clojure-insert-defun ()
+ "Send current defun to process."
+ (interactive)
+ (inf-clojure-insert-and-eval (string-trim (inf-clojure--defun-at-point))))
+
;;; Now that inf-clojure-eval-/defun/region takes an optional prefix arg,
;;; these commands are redundant. But they are kept around for the user
- [nongnu] elpa/inf-clojure 24463b4 105/313: [Fix #26] Make switching to the REPL optional on, (continued)
- [nongnu] elpa/inf-clojure 24463b4 105/313: [Fix #26] Make switching to the REPL optional on, ELPA Syncer, 2021/08/11
- [nongnu] elpa/inf-clojure b357856 112/313: Rename defcustoms to `inf-clojure-*-form` where appropriate, ELPA Syncer, 2021/08/11
- [nongnu] elpa/inf-clojure 64162aa 138/313: Fix a formatting issue in the README, ELPA Syncer, 2021/08/11
- [nongnu] elpa/inf-clojure 9d2d143 144/313: Make sure tabs would never sneak in, ELPA Syncer, 2021/08/11
- [nongnu] elpa/inf-clojure c08d8bb 165/313: Split the only when-let for backward compatibility, ELPA Syncer, 2021/08/11
- [nongnu] elpa/inf-clojure 94f440e 192/313: Extract keyword words for completion, ELPA Syncer, 2021/08/11
- [nongnu] elpa/inf-clojure da88c8c 205/313: Require seq library. Fixes https://github.com/clojure-emacs/inf-clojure/issues/141, ELPA Syncer, 2021/08/11
- [nongnu] elpa/inf-clojure feca1cc 201/313: Send string even when empty, ELPA Syncer, 2021/08/11
- [nongnu] elpa/inf-clojure 3d72305 208/313: README: Add section describing how to start and connect to a socket server., ELPA Syncer, 2021/08/11
- [nongnu] elpa/inf-clojure 0fc2350 225/313: Fix for eldoc-mode for ClojureCLR, ELPA Syncer, 2021/08/11
- [nongnu] elpa/inf-clojure a61dd84 232/313: Insert top level defun into repl,
ELPA Syncer <=
- [nongnu] elpa/inf-clojure bcd806a 251/313: Unify references to the term REPL, ELPA Syncer, 2021/08/11
- [nongnu] elpa/inf-clojure a7f07a0 245/313: Set artificial to true on comint-send-input, ELPA Syncer, 2021/08/11
- [nongnu] elpa/inf-clojure e291da3 274/313: Update README.md, ELPA Syncer, 2021/08/11
- [nongnu] elpa/inf-clojure 787400f 264/313: [Fix #178] Ensure there is a directory for comint (thanks mcphailm), ELPA Syncer, 2021/08/11
- [nongnu] elpa/inf-clojure 6cb8e43 277/313: Update the CI images, ELPA Syncer, 2021/08/11
- [nongnu] elpa/inf-clojure 477fd7c 272/313: Tweak some wording, ELPA Syncer, 2021/08/11
- [nongnu] elpa/inf-clojure a98a260 281/313: [#152] Add a changelog entry, ELPA Syncer, 2021/08/11
- [nongnu] elpa/inf-clojure f4a279e 286/313: [Fix #177] Don't run the tests on Emacs 25, ELPA Syncer, 2021/08/11
- [nongnu] elpa/inf-clojure b4193fc 289/313: Reindent tests, ELPA Syncer, 2021/08/11
- [nongnu] elpa/inf-clojure f24722c 294/313: Extract useful functions, ELPA Syncer, 2021/08/11