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.

View in manual

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))))))))