Function: undelete-frame
undelete-frame is an interactive and byte-compiled function defined in
frame.el.gz.
Signature
(undelete-frame &optional ARG)
Documentation
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 16, where 1 is most recently deleted frame, undelete the ARGth deleted frame. When called from Lisp, returns the new frame.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/frame.el.gz
(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 16, where 1 is
most recently deleted frame, undelete the ARGth deleted frame.
When called from Lisp, returns the new frame."
(interactive "P")
(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)))
(frame-data (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 frame-data)
(user-error "No deleted frame with number %d" number)
(if (not (eq graphic (nth 0 frame-data)))
(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 frame-data undelete-frame--deleted-frames))
(let* ((default-frame-alist (nth 1 frame-data))
(frame (make-frame)))
(window-state-put (nth 2 frame-data) (frame-root-window frame) 'safe)
(select-frame-set-input-focus frame)
frame))))))))