diff options
author | Daniel Skarda <dan.skarda@gmail.com> | 2014-07-23 19:12:39 +0200 |
---|---|---|
committer | Daniel Skarda <dan.skarda@gmail.com> | 2014-07-23 19:12:39 +0200 |
commit | 04972c8524d6b55719ebb14cb7fe43f7ff2af79a (patch) | |
tree | 5edc8144461cbba4e4a4fc980314e9708714662f | |
parent | f7286789d77e41f5e7003e3b207cf252ad0f86ac (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.el | 12 |
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." |