diff options
author | Eli Zaretskii <eliz@gnu.org> | 2022-01-17 14:51:53 +0200 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2022-01-17 14:51:53 +0200 |
commit | 8cc1b9035cbe12c684139de0ad1590661ea45c3c (patch) | |
tree | 955b2bd0005dc98ceeb89546be95cafe3c98ae7b /lisp/frame.el | |
parent | 37d46cec603dd7029485903806f6bf6cfd2335f7 (diff) | |
download | emacs-8cc1b9035cbe12c684139de0ad1590661ea45c3c.tar.gz |
Revert "Add undelete-frame-max instead of undelete-frame-mode (bug#51883)"
This reverts commit 714e11d53534416b6519396a9df5d62054731810.
That commit was unilateral and disregarded past discussions.
Diffstat (limited to 'lisp/frame.el')
-rw-r--r-- | lisp/frame.el | 80 |
1 files changed, 41 insertions, 39 deletions
diff --git a/lisp/frame.el b/lisp/frame.el index 5926a4d748b..599ffe591a5 100644 --- a/lisp/frame.el +++ b/lisp/frame.el @@ -2529,13 +2529,6 @@ deleting them." (if iconify (iconify-frame this) (delete-frame this))) (setq this next)))) - -(defcustom undelete-frame-max 1 - "Maximum number of deleted frames before oldest are thrown away." - :type 'integer - :group 'frames - :version "29.1") - (eval-when-compile (require 'frameset)) (defvar undelete-frame--deleted-frames nil @@ -2543,7 +2536,7 @@ deleting them." (defun undelete-frame--handle-delete-frame (frame) "Save the configuration of frames deleted with `delete-frame'. -Only the `undelete-frame-max' most recently deleted frames are saved." +Only the 16 most recently deleted frames are saved." (when (frame-live-p frame) (setq undelete-frame--deleted-frames (cons @@ -2562,45 +2555,54 @@ Only the `undelete-frame-max' most recently deleted frames are saved." (cons '(display . :never) frameset-filter-alist)))) undelete-frame--deleted-frames)) - (if (> (length undelete-frame--deleted-frames) undelete-frame-max) + (if (> (length undelete-frame--deleted-frames) 16) (setq undelete-frame--deleted-frames (butlast undelete-frame--deleted-frames))))) -(add-hook 'after-init-hook - (lambda () - (add-hook 'delete-frame-functions - #'undelete-frame--handle-delete-frame -75))) +(define-minor-mode undelete-frame-mode + "Enable the `undelete-frame' command." + :group 'frames + :global t + (if undelete-frame-mode + (add-hook 'delete-frame-functions + #'undelete-frame--handle-delete-frame -75) + (remove-hook 'delete-frame-functions + #'undelete-frame--handle-delete-frame) + (setq undelete-frame--deleted-frames nil))) (defun undelete-frame (&optional arg) "Undelete a frame deleted with `delete-frame'. -Without a prefix argument, undelete the most recently deleted frame. -With a numerical prefix argument ARG between 1 and `undelete-frame-max', -where 1 is most recently deleted frame, undelete the ARGth deleted frame. +Without a prefix argument, undelete the most recently deleted +frame. +With a numerical prefix argument ARG between 1 and 16, where 1 is +most recently deleted frame, undelete the ARGth deleted frame. When called from Lisp, returns the new frame." (interactive "P") - (if (consp arg) - (user-error "Missing deleted frame number argument") - (let* ((number (pcase arg ('nil 1) ('- -1) (_ arg))) - (frames (frame-list)) - (frameset (nth (1- number) undelete-frame--deleted-frames)) - (graphic (display-graphic-p))) - (if (not (<= 1 number undelete-frame-max)) - (user-error "%d is not a valid deleted frame number argument" - number) - (if (not frameset) - (user-error "No deleted frame with number %d" number) - (if (not (eq graphic (car frameset))) - (user-error - "Cannot undelete a %s display frame on a %s display" - (if graphic "non-graphic" "graphic") - (if graphic "graphic" "non-graphic")) - (setq undelete-frame--deleted-frames - (delq frameset undelete-frame--deleted-frames)) - (frameset-restore (cdr frameset)) - (let ((frame (car (seq-difference (frame-list) frames)))) - (when frame - (select-frame-set-input-focus frame) - frame)))))))) + (if (not undelete-frame-mode) + (user-error "Undelete-Frame mode is disabled") + (if (consp arg) + (user-error "Missing deleted frame number argument") + (let* ((number (pcase arg ('nil 1) ('- -1) (_ arg))) + (frames (frame-list)) + (frameset (nth (1- number) undelete-frame--deleted-frames)) + (graphic (display-graphic-p))) + (if (not (<= 1 number 16)) + (user-error "%d is not a valid deleted frame number argument" + number) + (if (not frameset) + (user-error "No deleted frame with number %d" number) + (if (not (eq graphic (car frameset))) + (user-error + "Cannot undelete a %s display frame on a %s display" + (if graphic "non-graphic" "graphic") + (if graphic "graphic" "non-graphic")) + (setq undelete-frame--deleted-frames + (delq frameset undelete-frame--deleted-frames)) + (frameset-restore (cdr frameset)) + (let ((frame (car (seq-difference (frame-list) frames)))) + (when frame + (select-frame-set-input-focus frame) + frame))))))))) ;;; Window dividers. (defgroup window-divider nil |