branch: externals/polymode
commit b384eec4ce3fd989302b25c4b9c94cbebdc993b7
Author: vitalie <vitalie.sp...@adyen.com>
Commit: Vitalie Spinu <spinu...@gmail.com>

    Use set-window-buffer instead of switch_to_buffer in 
pm--select-existing-buffer-visibly
    
      As recomended by Stefan Monnier 
https://lists.gnu.org/archive/html/emacs-devel/2025-05/msg00747.html
---
 polymode-core.el | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/polymode-core.el b/polymode-core.el
index ad2757eddc..d33e812796 100644
--- a/polymode-core.el
+++ b/polymode-core.el
@@ -1099,11 +1099,15 @@ switch."
 
     (pm--move-overlays old-buffer new-buffer)
 
-    ;; make sure we display in the same window as the old buffer (#337)
-    (let ((switch-to-buffer-obey-display-actions))
-     (switch-to-buffer new-buffer nil 'force-same-window))
+    (let ((strongly-dedicated-flag (window-dedicated-p)))
+      (when strongly-dedicated-flag
+        (set-window-dedicated-p nil nil))
+      (set-window-buffer nil new-buffer 'keep-margins)
+      (when strongly-dedicated-flag
+        (set-window-dedicated-p nil strongly-dedicated-flag)))
 
     (bury-buffer-internal old-buffer)
+    ;; remove old-buffer form window-prev-buffers
     (set-window-prev-buffers nil (assq-delete-all old-buffer 
(window-prev-buffers nil)))
 
     ;; if header line is active in some modes, make it active everywhere

Reply via email to