summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Skarda <dan.skarda@gmail.com>2014-07-23 19:12:39 +0200
committerDaniel Skarda <dan.skarda@gmail.com>2014-07-23 19:12:39 +0200
commit04972c8524d6b55719ebb14cb7fe43f7ff2af79a (patch)
tree5edc8144461cbba4e4a4fc980314e9708714662f
parentf7286789d77e41f5e7003e3b207cf252ad0f86ac (diff)
[Fix #670] Save point between two inserts to popup buffer.
Solution is inspired by "Process Filter Example" from Emacs Lisp manual (including moving point if it was at the insert position).
-rw-r--r--cider-interaction.el12
1 files changed, 9 insertions, 3 deletions
diff --git a/cider-interaction.el b/cider-interaction.el
index ced60d08..27f71727 100644
--- a/cider-interaction.el
+++ b/cider-interaction.el
@@ -1060,6 +1060,7 @@ If prefix argument KILL-BUFFER-P is non-nil, kill the buffer instead of burying
(erase-buffer)
(when major-mode
(funcall major-mode))
+ (setq-local cider-popup-output-marker (point-marker))
(cider-popup-buffer-mode 1)
(setq buffer-read-only t)
(current-buffer)))
@@ -1068,9 +1069,14 @@ If prefix argument KILL-BUFFER-P is non-nil, kill the buffer instead of burying
"Emit into BUFFER the provided VALUE."
(with-current-buffer buffer
(let ((inhibit-read-only t)
- (buffer-undo-list t))
- (insert (format "%s" value))
- (indent-sexp))))
+ (buffer-undo-list t)
+ (moving (= (point) cider-popup-output-marker)))
+ (save-excursion
+ (goto-char cider-popup-output-marker)
+ (insert (format "%s" value))
+ (indent-sexp)
+ (set-marker cider-popup-output-marker (point)))
+ (when moving (goto-char cider-popup-output-marker)))))
(defun cider-emit-into-color-buffer (buffer value)
"Emit into color BUFFER the provided VALUE."