New option frame-auto-hide-function replacing frame-auto-delete.
authorMartin Rudalics <rudalics@gmx.at>
Wed, 5 Oct 2011 06:49:53 +0000 (08:49 +0200)
committerMartin Rudalics <rudalics@gmx.at>
Wed, 5 Oct 2011 06:49:53 +0000 (08:49 +0200)
* window.el (frame-auto-hide-function): New option replacing
frame-auto-delete.  Suggested by Stefan Monnier.
(window--delete): Call frame-auto-hide-function instead of
investigating frame-auto-delete.

lisp/ChangeLog
lisp/window.el

index 8ac25f3..e8196fb 100644 (file)
@@ -1,3 +1,10 @@
+2011-10-05  Martin Rudalics  <rudalics@gmx.at>
+
+       * window.el (frame-auto-hide-function): New option replacing
+       frame-auto-delete.  Suggested by Stefan Monnier.
+       (window--delete): Call frame-auto-hide-function instead of
+       investigating frame-auto-delete.
+
 2011-10-05  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * emacs-lisp/edebug.el: Heed checkdoc recommendations.
index 98fd710..a8b506c 100644 (file)
@@ -2738,13 +2738,18 @@ the buffer `*scratch*', creating it if necessary."
        (set-buffer-major-mode scratch)
        scratch)))
 
-(defcustom frame-auto-delete nil
-  "Non-nil means automatically delete frames.
-The default value nil means to iconify frames instead.  Functions
-affected by this variable are `quit-window' (when burying the
-window's buffer) and `bury-buffer'."
-  :type 'boolean
-  :group 'windows)
+(defcustom frame-auto-hide-function #'iconify-frame
+  "Function called to automatically hide frames.
+The function is called with one argument - a frame.
+
+Functions affected by this option are those that bury a buffer
+shown in a separate frame like `quit-window' and `bury-buffer'."
+  :type '(choice (const :tag "Iconify" iconify-frame)
+                 (const :tag "Delete" delete-frame)
+                 (const :tag "Do nothing" ignore)
+                 function)
+  :group 'windows
+  :group 'frames)
 
 (defun window--delete (&optional window dedicated-only kill)
   "Delete WINDOW if possible.
@@ -2760,9 +2765,8 @@ if WINDOW gets deleted."
       (cond
        ((eq deletable 'frame)
        (let ((frame (window-frame window)))
-         (if (or kill frame-auto-delete)
-             (delete-frame frame)
-           (iconify-frame frame)))
+         (when (functionp frame-auto-hide-function)
+           (funcall frame-auto-hide-function frame)))
        'frame)
        (deletable
        (delete-window window)