Function: frame-initialize
frame-initialize is a byte-compiled function defined in frame.el.gz.
Signature
(frame-initialize)
Documentation
Create an initial frame if necessary.
Source Code
;; Defined in /usr/src/emacs/lisp/frame.el.gz
;; startup.el calls this function before loading the user's init
;; file - if there is no frame with a minibuffer open now, create
;; one to display messages while loading the init file.
(defun frame-initialize ()
"Create an initial frame if necessary."
;; Are we actually running under a window system at all?
(if (and initial-window-system
(not noninteractive)
(not (eq initial-window-system 'pc)))
(progn
;; If there is no frame with a minibuffer besides the terminal
;; frame, then we need to create the opening frame. Make sure
;; it has a minibuffer, but let initial-frame-alist omit the
;; minibuffer spec.
(or (delq terminal-frame (minibuffer-frame-list))
(progn
(setq frame-initial-frame-alist
(append initial-frame-alist default-frame-alist nil))
(setq frame-initial-frame-alist
(cons (cons 'window-system initial-window-system)
frame-initial-frame-alist))
(setq default-minibuffer-frame
(setq frame-initial-frame
(make-frame frame-initial-frame-alist)))
;; Delete any specifications for window geometry parameters
;; so that we won't reapply them in frame-notice-user-settings.
;; It would be wrong to reapply them then,
;; because that would override explicit user resizing.
(setq initial-frame-alist
(frame-remove-geometry-params initial-frame-alist))))
;; Copy the environment of the Emacs process into the new frame.
(set-frame-parameter frame-initial-frame 'environment
(frame-parameter terminal-frame 'environment))
;; At this point, we know that we have a frame open, so we
;; can delete the terminal frame.
(delete-frame terminal-frame)
(setq terminal-frame nil))))