From a8e0b5cd566c9923ba7ca945b17ca80f8a8e4817 Mon Sep 17 00:00:00 2001 From: wailo Date: Thu, 25 Apr 2019 22:34:46 +0200 Subject: [PATCH] Improving preview functionality. No buffer switch. - Using temp buffer instead of new buffer. - Windows layout is retained. No need to switch buffer after every preview --- plantuml-mode.el | 37 ++++++++++++++++--------------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/plantuml-mode.el b/plantuml-mode.el index 2cf2cf6..3ecef89 100644 --- a/plantuml-mode.el +++ b/plantuml-mode.el @@ -262,33 +262,28 @@ to choose where to display it: - 4 (when prefixing the command with C-u) -> new window - 16 (when prefixing the command with C-u C-u) -> new frame. - else -> new buffer" - (let ((b (get-buffer plantuml-preview-buffer))) - (when b - (kill-buffer b))) - (let* ((imagep (and (display-images-p) (plantuml-is-image-output-p))) (process-connection-type nil) - (buf (get-buffer-create plantuml-preview-buffer)) (coding-system-for-read (and imagep 'binary)) (coding-system-for-write (and imagep 'binary))) - (let ((ps (plantuml-start-process buf))) - (process-send-string ps string) - (process-send-eof ps) - (set-process-sentinel ps - (lambda (_ps event) - (unless (equal event "finished\n") - (error "PLANTUML Preview failed: %s" event)) - (cond - ((= prefix 16) - (switch-to-buffer-other-frame plantuml-preview-buffer)) - ((= prefix 4) - (switch-to-buffer-other-window plantuml-preview-buffer)) - (t (switch-to-buffer plantuml-preview-buffer))) - (when imagep - (image-mode) - (set-buffer-multibyte t))))))) + (with-output-to-temp-buffer plantuml-preview-buffer + (let* ((buf (get-buffer-create plantuml-preview-buffer)) (ps (plantuml-start-process buf))) + (process-send-string ps string) + (process-send-eof ps) + (set-process-sentinel ps + (lambda (_ps event) + (unless (equal event "finished\n") + (error "PLANTUML Preview failed: %s" event)) + (cond + ((= prefix 16) + (switch-to-buffer-other-frame plantuml-preview-buffer)) + ((= prefix 4) + (switch-to-buffer-other-window plantuml-preview-buffer))) + (when imagep + (image-mode) + (set-buffer-multibyte t)))))))) (defun plantuml-preview-buffer (prefix) "Preview diagram from the PlantUML sources in the current buffer.