diff --git a/lisp/org-src.el b/lisp/org-src.el index 9134d5b5d..c7e201687 100644 --- a/lisp/org-src.el +++ b/lisp/org-src.el @@ -786,6 +786,13 @@ Raise an error when current buffer is not a source editing buffer." (unless (org-src-edit-buffer-p) (error "Not in a source buffer")) org-src--source-type) +(defun org-src-select-window-for-buffer (buffer split-fun) + "Tries to select an existing window for buffer or splits the window." + (select-window + (or + (display-buffer-reuse-window buffer '()) + (funcall split-fun)))) + (defun org-src-switch-to-buffer (buffer context) (pcase org-src-window-setup (`current-window (pop-to-buffer-same-window buffer)) @@ -794,12 +801,12 @@ Raise an error when current buffer is not a source editing buffer." (`split-window-below (if (eq context 'exit) (delete-window) - (select-window (split-window-vertically))) + (org-src-select-window-for-buffer buffer #'split-window-vertically)) (pop-to-buffer-same-window buffer)) (`split-window-right (if (eq context 'exit) (delete-window) - (select-window (split-window-horizontally))) + (org-src-select-window-for-buffer buffer #'split-window-horizontally)) (pop-to-buffer-same-window buffer)) (`other-frame (pcase context