branch: elpa/helm
commit cf557ff7451a7bf729f0f0fb39a1607031c17d99
Merge: 4ccdefb7d0 e451b6b24a
Author: Thierry Volpiatto <thie...@posteo.net>
Commit: GitHub <nore...@github.com>

    Merge pull request #2711 from tarsiiformes/transient-compat
    
    Don't include transient's menu window in saved window configuration
---
 helm-core.el | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/helm-core.el b/helm-core.el
index 6a9fa70d30..cb5104e056 100644
--- a/helm-core.el
+++ b/helm-core.el
@@ -42,6 +42,9 @@
 (declare-function helm-quit-and-find-file "helm-utils.el")
 (declare-function linum-mode "linum.el")
 (declare-function minibuffer-depth-setup "mb-depth.el")
+(declare-function transient--delete-window "ext:transient" ())
+(declare-function transient--preserve-window-p "ext:transient"
+                  (&optional nohide))
 
 (defvar helm-marked-buffer-name)
 (defvar display-buffer-function)
@@ -638,13 +641,13 @@ If t, then Helm does not pop-up a new window."
   :type 'string)
 
 (defcustom helm-save-configuration-functions
-  '(set-window-configuration . current-window-configuration)
+  '(set-window-configuration . helm-current-window-configuration)
   "Functions used to restore or save configurations for frames and windows.
 Specified as a pair of functions, where car is the restore
 function and cdr is the save function.
 
 To save and restore frame configuration, set this variable to
-\\='(set-frame-configuration . current-frame-configuration)
+\\='(set-frame-configuration . helm-current-frame-configuration)
 
 NOTE: This may not work properly with own-frame minibuffer
 settings.  Older versions saves/restores frame configuration, but
@@ -3373,6 +3376,14 @@ frame configuration as per 
`helm-save-configuration-functions'."
                          ((symbol-function 'x-focus-frame) #'ignore))
                  (select-frame-set-input-focus frame))))))
 
+(defun helm-current-window-configuration ()
+  "Like `current-window-configuration' but deal with Transient incompatibility.
+See https://github.com/magit/transient/discussions/361 for details."
+  (when (and (window-live-p (bound-and-true-p transient--window))
+             (not (transient--preserve-window-p)))
+    (transient--delete-window))
+  (current-window-configuration))
+
 (defun helm-split-window-default-fn (window)
   "Default function to split windows before displaying `helm-buffer'.
 

Reply via email to