From 04972c8524d6b55719ebb14cb7fe43f7ff2af79a Mon Sep 17 00:00:00 2001 From: Daniel Skarda Date: Wed, 23 Jul 2014 19:12:39 +0200 Subject: [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). --- cider-interaction.el | 12 +++++++++--- 1 file 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." -- cgit v1.2.3