;; This file is part of GNU Emacs.
-;; GNU Emacs is free software; you can redistribute it and/or modify
+;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 3, or (at your option)
-;; any later version.
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
:type '(choice
(const :tag "Startup screen" nil)
(directory :tag "Directory" :value "~/")
- (file :tag "File" :value "~/file.txt")
+ (file :tag "File" :value "~/.emacs")
(const :tag "Lisp scratch buffer" t))
:version "23.1"
:group 'initialization)
(defcustom inhibit-startup-screen nil
"Non-nil inhibits the startup screen.
-It also inhibits display of the initial message in the `*scratch*' buffer.
-This is for use in your personal init file (but NOT site-start.el), once
-you are familiar with the contents of the startup screen."
+This is for use in your personal init file (but NOT site-start.el),
+once you are familiar with the contents of the startup screen."
:type 'boolean
:group 'initialization)
(defvar startup-screen-inhibit-startup-screen nil)
(defcustom inhibit-startup-echo-area-message nil
- "*Non-nil inhibits the initial startup echo area message.
+ "Non-nil inhibits the initial startup echo area message.
Setting this variable takes effect
only if you do it with the customization buffer
or if your `.emacs' file contains a line of this form:
:group 'initialization)
(defcustom inhibit-default-init nil
- "*Non-nil inhibits loading the `default' library."
+ "Non-nil inhibits loading the `default' library."
:type 'boolean
:group 'initialization)
(defcustom inhibit-startup-buffer-menu nil
- "*Non-nil inhibits display of buffer list when more than 2 files are loaded."
+ "Non-nil inhibits display of buffer list when more than 2 files are loaded."
:type 'boolean
:group 'initialization)
("--vertical-scroll-bars" 0 x-handle-switch vertical-scroll-bars t)
("--line-spacing" 1 x-handle-numeric-switch line-spacing)
("--border-color" 1 x-handle-switch border-color)
- ("--smid" 1 x-handle-smid))
+ ("--smid" 1 x-handle-smid)
+ ("--parent-id" 1 x-handle-parent-id))
"Alist of X Windows options.
Each element has the form
(NAME NUMARGS HANDLER FRAME-PARAM VALUE)
and VALUE is the value which is given to that frame parameter
\(most options use the argument for this, so VALUE is not present).")
+(defconst command-line-ns-option-alist
+ '(("-NSAutoLaunch" 1 ns-ignore-1-arg)
+ ("-NXAutoLaunch" 1 ns-ignore-1-arg)
+ ("-macosx" 0 ignore)
+ ("-NSHost" 1 ns-ignore-1-arg)
+ ("-_NSMachLaunch" 1 ns-ignore-1-arg)
+ ("-MachLaunch" 1 ns-ignore-1-arg)
+ ("-NXOpen" 1 ns-ignore-1-arg)
+ ("-NSOpen" 1 ns-handle-nxopen)
+ ("-NXOpenTemp" 1 ns-ignore-1-arg)
+ ("-NSOpenTemp" 1 ns-handle-nxopentemp)
+ ("-GSFilePath" 1 ns-handle-nxopen)
+ ;;("-bw" . x-handle-numeric-switch)
+ ;;("-d" . x-handle-display)
+ ;;("-display" . x-handle-display)
+ ("-name" 1 ns-handle-name-switch)
+ ("-title" 1 ns-handle-switch title)
+ ("-T" 1 ns-handle-switch title)
+ ("-r" 0 ns-handle-switch reverse t)
+ ("-rv" 0 ns-handle-switch reverse t)
+ ("-reverse" 0 ns-handle-switch reverse t)
+ ("-fn" 1 ns-handle-switch font)
+ ("-font" 1 ns-handle-switch font)
+ ("-ib" 1 ns-handle-numeric-switch internal-border-width)
+ ;;("-g" . x-handle-geometry)
+ ;;("-geometry" . x-handle-geometry)
+ ("-fg" 1 ns-handle-switch foreground-color)
+ ("-foreground" 1 ns-handle-switch foreground-color)
+ ("-bg" 1 ns-handle-switch background-color)
+ ("-background" 1 ns-handle-switch background-color)
+; ("-ms" 1 ns-handle-switch mouse-color)
+ ("-itype" 0 ns-handle-switch icon-type t)
+ ("-i" 0 ns-handle-switch icon-type t)
+ ("-iconic" 0 ns-handle-iconic icon-type t)
+ ;;("-xrm" . x-handle-xrm-switch)
+ ("-cr" 1 ns-handle-switch cursor-color)
+ ("-vb" 0 ns-handle-switch vertical-scroll-bars t)
+ ("-hb" 0 ns-handle-switch horizontal-scroll-bars t)
+ ("-bd" 1 ns-handle-switch)
+ ;; ("--border-width" 1 ns-handle-numeric-switch border-width)
+ ;; ("--display" 1 ns-handle-display)
+ ("--name" 1 ns-handle-name-switch)
+ ("--title" 1 ns-handle-switch title)
+ ("--reverse-video" 0 ns-handle-switch reverse t)
+ ("--font" 1 ns-handle-switch font)
+ ("--internal-border" 1 ns-handle-numeric-switch internal-border-width)
+ ;; ("--geometry" 1 ns-handle-geometry)
+ ("--foreground-color" 1 ns-handle-switch foreground-color)
+ ("--background-color" 1 ns-handle-switch background-color)
+ ("--mouse-color" 1 ns-handle-switch mouse-color)
+ ("--icon-type" 0 ns-handle-switch icon-type t)
+ ("--iconic" 0 ns-handle-iconic)
+ ;; ("--xrm" 1 ns-handle-xrm-switch)
+ ("--cursor-color" 1 ns-handle-switch cursor-color)
+ ("--vertical-scroll-bars" 0 ns-handle-switch vertical-scroll-bars t)
+ ("--border-color" 1 ns-handle-switch border-width))
+ "Alist of NS options.
+Each element has the form
+ (NAME NUMARGS HANDLER FRAME-PARAM VALUE)
+where NAME is the option name string, NUMARGS is the number of arguments
+that the option accepts, HANDLER is a function to call to handle the option.
+FRAME-PARAM (optional) is the frame parameter this option specifies,
+and VALUE is the value which is given to that frame parameter
+\(most options use the argument for this, so VALUE is not present).")
+
+
(defvar before-init-hook nil
"Normal hook run after handling urgent options but before loading init files.")
(error "Customizing `site-run-file' does not work")))
(defcustom mail-host-address nil
- "*Name of this machine, for purposes of naming users."
+ "Name of this machine, for purposes of naming users."
:type '(choice (const nil) string)
:group 'mail)
(system-name))))
;; Empty string means "not set yet".
"")
- "*Full mailing address of this user.
+ "Full mailing address of this user.
This is initialized with environment variable `EMAIL' or, as a
-fallback, using `mail-host-address'. This is done after your
+fallback, using `mail-host-address'. This is done after your
init file is read, in case it sets `mail-host-address'."
:type 'string
:group 'mail)
(if command-line-processed
(message "Back to top level.")
(setq command-line-processed t)
- ;; Give *Messages* the same default-directory as *scratch*,
- ;; just to keep things predictable.
(let ((dir default-directory))
(with-current-buffer "*Messages*"
+ ;; Make it easy to do like "tail -f".
+ (set (make-local-variable 'window-point-insertion-type) t)
+ ;; Give *Messages* the same default-directory as *scratch*,
+ ;; just to keep things predictable.
(setq default-directory dir)))
;; `user-full-name' is now known; reset its standard-value here.
(put 'user-full-name 'standard-value
;; the end, because the subdirs.el files may add elements to the end
;; of load-path and we want to take it into account.
(setq tail (cdr tail))))
- (unless (eq system-type 'vax-vms)
- ;; If the PWD environment variable isn't accurate, delete it.
- (let ((pwd (getenv "PWD")))
- (and (stringp pwd)
- ;; Use FOO/., so that if FOO is a symlink, file-attributes
- ;; describes the directory linked to, not FOO itself.
- (or (equal (file-attributes
- (concat (file-name-as-directory pwd) "."))
- (file-attributes
- (concat (file-name-as-directory default-directory)
- ".")))
- (setq process-environment
- (delete (concat "PWD=" pwd)
- process-environment))))))
+ ;; If the PWD environment variable isn't accurate, delete it.
+ (let ((pwd (getenv "PWD")))
+ (and (stringp pwd)
+ ;; Use FOO/., so that if FOO is a symlink, file-attributes
+ ;; describes the directory linked to, not FOO itself.
+ (or (equal (file-attributes
+ (concat (file-name-as-directory pwd) "."))
+ (file-attributes
+ (concat (file-name-as-directory default-directory)
+ ".")))
+ (setq process-environment
+ (delete (concat "PWD=" pwd)
+ process-environment)))))
(setq default-directory (abbreviate-file-name default-directory))
(let ((menubar-bindings-done nil))
(unwind-protect
("--color" . "-color")))
(defconst tool-bar-images-pixel-height 24
- "Height in pixels of images in the tool bar.")
+ "Height in pixels of images in the tool-bar.")
(defvar tool-bar-originally-present nil
"Non-nil if tool-bars are present before user and site init files are read.")
(push argi rest)))))
(nreverse rest)))
+(declare-function x-get-resource "frame.c"
+ (attribute class &optional component subclass))
+(declare-function tool-bar-mode "tool-bar" (&optional arg))
+(declare-function tool-bar-setup "tool-bar")
+
+(defvar server-name)
+(defvar server-process)
+
(defun command-line ()
- (setq command-line-default-directory default-directory)
+ (setq before-init-time (current-time)
+ after-init-time nil
+ command-line-default-directory default-directory)
;; Choose a reasonable location for temporary files.
(custom-reevaluate-setting 'temporary-file-directory)
(setq eol-mnemonic-dos "(DOS)"
eol-mnemonic-mac "(Mac)")))
- ;; Make sure window system's init file was loaded in loadup.el if using a window system.
+ ;; Make sure window system's init file was loaded in loadup.el if
+ ;; using a window system.
(condition-case error
(unless noninteractive
(if (and initial-window-system
(not (featurep
- (intern (concat (symbol-name initial-window-system) "-win")))))
+ (intern
+ (concat (symbol-name initial-window-system) "-win")))))
(error "Unsupported window system `%s'" initial-window-system))
;; Process window-system specific command line parameters.
(setq command-line-args
- (funcall (or (cdr (assq initial-window-system handle-args-function-alist))
- (error "Unsupported window system `%s'" initial-window-system))
- command-line-args))
+ (funcall
+ (or (cdr (assq initial-window-system handle-args-function-alist))
+ (error "Unsupported window system `%s'" initial-window-system))
+ command-line-args))
;; Initialize the window system. (Open connection, etc.)
- (funcall (or (cdr (assq initial-window-system window-system-initialization-alist))
- (error "Unsupported window system `%s'" initial-window-system))))
+ (funcall
+ (or (cdr (assq initial-window-system window-system-initialization-alist))
+ (error "Unsupported window system `%s'" initial-window-system))))
;; If there was an error, print the error message and exit.
(error
(princ
(run-hooks 'before-init-hook)
;; Under X Window, this creates the X frame and deletes the terminal frame.
- (when (fboundp 'frame-initialize)
+ (unless (daemonp)
(frame-initialize))
;; Turn off blinking cursor if so specified in X resources. This is here
;; only because all other settings of no-blinking-cursor are here.
(unless (or noninteractive
emacs-basic-display
- (and (memq window-system '(x w32 mac))
+ (and (memq window-system '(x w32 ns))
(not (member (x-get-resource "cursorBlink" "CursorBlink")
'("off" "false")))))
(setq no-blinking-cursor t))
(<= (frame-parameter nil 'menu-bar-lines) 0)))
(menu-bar-mode 1))
- ;; If frame was created with a tool bar, switch tool-bar-mode on.
- (unless (or noninteractive
- emacs-basic-display
- (not (display-graphic-p))
- (<= (frame-parameter nil 'tool-bar-lines) 0))
- (tool-bar-mode 1))
+ (unless (or noninteractive (not (fboundp 'tool-bar-mode)))
+ ;; Set up the tool-bar. Do this even in tty frames, so that there
+ ;; is a tool-bar if Emacs later opens a graphical frame.
+ (if (or emacs-basic-display
+ (and (numberp (frame-parameter nil 'tool-bar-lines))
+ (<= (frame-parameter nil 'tool-bar-lines) 0)))
+ ;; On a graphical display with the toolbar disabled via X
+ ;; resources, set up the toolbar without enabling it.
+ (tool-bar-setup)
+ ;; Otherwise, enable tool-bar-mode.
+ (tool-bar-mode 1)))
;; Can't do this init in defcustom because the relevant variables
;; are not set.
(custom-reevaluate-setting 'file-name-shadow-mode)
(custom-reevaluate-setting 'send-mail-function)
(custom-reevaluate-setting 'focus-follows-mouse)
+ (custom-reevaluate-setting 'global-auto-composition-mode)
+ (custom-reevaluate-setting 'transient-mark-mode)
+ (custom-reevaluate-setting 'auto-encryption-mode)
(normal-erase-is-backspace-setup-frame)
;; since users can connect to color-capable terminals and also
;; switch color support on or off in mid-session by setting the
;; tty-color-mode frame parameter.
- (tty-register-default-colors)
+ ;; Exception: the `pc' ``window system'' has only 16 fixed colors,
+ ;; and they are already set at this point by a suitable function in
+ ;; window-system-initialization-alist.
+ (or (eq initial-window-system 'pc)
+ (tty-register-default-colors))
;; Record whether the tool-bar is present before the user and site
;; init files are processed. frame-notice-user-settings uses this
init-file-user)
:error)
(if (file-directory-p (expand-file-name
- ;; We don't support ~USER on MS-Windows except
- ;; for the current user, and always load .emacs
- ;; from the current user's home directory (see
- ;; below). So always check "~", even if invoked
- ;; with "-u USER", or if $USER or $LOGNAME are
- ;; set to something different.
- (if (eq system-type 'windows-nt)
+ ;; We don't support ~USER on MS-Windows
+ ;; and MS-DOS except for the current
+ ;; user, and always load .emacs from
+ ;; the current user's home directory
+ ;; (see below). So always check "~",
+ ;; even if invoked with "-u USER", or
+ ;; if $USER or $LOGNAME are set to
+ ;; something different.
+ (if (memq system-type '(windows-nt ms-dos))
"~"
(concat "~" init-file-user))))
nil
"~/_emacs"
;; But default to .emacs if _emacs does not exist.
"~/.emacs")))
- ((eq system-type 'vax-vms)
- "sys$login:.emacs")
(t
(concat "~" init-file-user "/.emacs")))))
;; This tells `load' to store the file name found
(funcall inner)
(setq init-file-had-error nil))
(error
- (let ((message-log-max nil))
- (save-excursion
- (set-buffer (get-buffer-create "*Messages*"))
- (insert "\n\n"
- (format "An error has occurred while loading `%s':\n\n"
- user-init-file)
- (format "%s%s%s"
- (get (car error) 'error-message)
- (if (cdr error) ": " "")
- (mapconcat (lambda (s) (prin1-to-string s t)) (cdr error) ", "))
- "\n\n"
- "To ensure normal operation, you should investigate and remove the\n"
- "cause of the error in your initialization file. Start Emacs with\n"
- "the `--debug-init' option to view a complete error backtrace.\n\n"))
- (message "Error in init file: %s%s%s"
- (get (car error) 'error-message)
- (if (cdr error) ": " "")
- (mapconcat 'prin1-to-string (cdr error) ", "))
- (let ((pop-up-windows nil))
- (pop-to-buffer "*Messages*"))
- (setq init-file-had-error t)))))
-
- (if (and deactivate-mark transient-mark-mode)
+ (display-warning
+ 'initialization
+ (format "An error occurred while loading `%s':\n\n%s%s%s\n\n\
+To ensure normal operation, you should investigate and remove the
+cause of the error in your initialization file. Start Emacs with
+the `--debug-init' option to view a complete error backtrace."
+ user-init-file
+ (get (car error) 'error-message)
+ (if (cdr error) ": " "")
+ (mapconcat (lambda (s) (prin1-to-string s t)) (cdr error) ", "))
+ :warning)
+ (setq init-file-had-error t))))
+
+ (if (and deactivate-mark transient-mark-mode)
(with-current-buffer (window-buffer)
(deactivate-mark)))
(eq face-ignored-fonts old-face-ignored-fonts))
(clear-face-cache)))
+ (setq after-init-time (current-time))
(run-hooks 'after-init-hook)
;; Decode all default-directory.
;; If -batch, terminate after processing the command options.
(if noninteractive (kill-emacs t))
+ ;; In daemon mode, start the server to allow clients to connect.
+ ;; This is done after loading the user's init file and after
+ ;; processing all command line arguments to allow e.g. `server-name'
+ ;; to be changed before the server starts.
+ (let ((dn (daemonp)))
+ (when dn
+ (when (stringp dn) (setq server-name dn))
+ (server-start)
+ (if server-process
+ (daemon-initialized)
+ (if (stringp dn)
+ (message
+ "Unable to start daemon: Emacs server named %S already running"
+ server-name)
+ (message "Unable to start the daemon.\nAnother instance of Emacs is running the server, either as daemon or interactively.\nYou can use emacsclient to connect to that Emacs process."))
+ (kill-emacs 1))))
+
;; Run emacs-session-restore (session management) if started by
;; the session manager and we have a session manager connection.
(if (and (boundp 'x-session-previous-id)
")
"Initial message displayed in *scratch* buffer at startup.
-If this is nil, no message will be displayed.
-If `inhibit-startup-screen' is non-nil, then no message is displayed,
-regardless of the value of this variable."
+If this is nil, no message will be displayed."
:type '(choice (text :tag "Message")
(const :tag "none" nil))
:group 'initialization)
'("GNU/Linux"
(lambda (button) (browse-url "http://www.gnu.org/gnu/linux-and-gnu.html"))
"Browse http://www.gnu.org/gnu/linux-and-gnu.html")
- '("GNU" (lambda (button) (describe-project))
+ '("GNU" (lambda (button) (describe-gnu-project))
"Display info on the GNU project")))
- " operating system.\n"
- :face variable-pitch "To quit a partially entered command, type "
- :face default "Control-g"
- :face variable-pitch ".\n\n"
+ " operating system.\n\n"
+ :face variable-pitch
:link ("Emacs Tutorial" (lambda (button) (help-with-tutorial)))
"\tLearn basic keystroke commands"
(lambda ()
""
(concat " (" title ")"))))
"\n"
- :face variable-pitch
:link ("Emacs Guided Tour"
(lambda (button) (browse-url "http://www.gnu.org/software/emacs/tour/"))
"Browse http://www.gnu.org/software/emacs/tour/")
- "\tOverview of Emacs features\n"
+ "\tOverview of Emacs features at gnu.org\n"
:link ("View Emacs Manual" (lambda (button) (info-emacs-manual)))
"\tView the Emacs manual using Info\n"
:link ("Absence of Warranty" (lambda (button) (describe-no-warranty)))
'("GNU/Linux"
(lambda (button) (browse-url "http://www.gnu.org/gnu/linux-and-gnu.html"))
"Browse http://www.gnu.org/gnu/linux-and-gnu.html")
- '("GNU" (lambda (button) (describe-project))
+ '("GNU" (lambda (button) (describe-gnu-project))
"Display info on the GNU project.")))
" operating system.\n"
:face (lambda ()
"\n"
(lambda () (emacs-version))
"\n"
- :face (variable-pitch (:height 0.5))
+ :face (variable-pitch (:height 0.8))
(lambda () emacs-copyright)
"\n\n"
:face variable-pitch
(goto-char (point-min))))
"\tHow to contribute improvements to Emacs\n"
"\n"
- :link ("GNU and Freedom" (lambda (button) (describe-project)))
+ :link ("GNU and Freedom" (lambda (button) (describe-gnu-project)))
"\tWhy we developed GNU Emacs, and the GNU operating system\n"
:link ("Absence of Warranty" (lambda (button) (describe-no-warranty)))
"\tGNU Emacs comes with "
:group 'initialization)
(defcustom fancy-splash-image nil
- "*The image to show in the splash screens, or nil for defaults."
+ "The image to show in the splash screens, or nil for defaults."
:group 'fancy-splash-screen
:type '(choice (const :tag "Default" nil)
(file :tag "File")))
'help-echo (startup-echo-area-message)))))
(setq args (cdr args)))))
+(declare-function image-size "image.c" (spec &optional pixels frame))
(defun fancy-splash-head ()
"Insert the head part of the splash screen into the current buffer."
(let* ((image-file (cond ((stringp fancy-splash-image)
fancy-splash-image)
- ((and (display-color-p)
- (image-type-available-p 'xpm))
- (if (and (fboundp 'x-display-planes)
- (= (funcall 'x-display-planes) 8))
- "splash8.xpm"
- "splash.xpm"))
- (t "splash.pbm")))
+ ((display-color-p)
+ (cond ((<= (display-planes) 8)
+ (if (image-type-available-p 'xpm)
+ "splash.xpm"
+ "splash.pbm"))
+ ((image-type-available-p 'svg)
+ "splash.svg")
+ ((image-type-available-p 'png)
+ "splash.png")
+ ((image-type-available-p 'xpm)
+ "splash.xpm")
+ (t "splash.pbm")))
+ (t "splash.pbm")))
(img (create-image image-file))
(image-width (and img (car (image-size img))))
(window-width (window-width (selected-window))))
(lambda (button) (customize-group 'initialization))
"Change initialization settings including this screen")
"\n"))
+ (fancy-splash-insert
+ :face 'variable-pitch "To quit a partially entered command, type "
+ :face 'default "Control-g"
+ :face 'variable-pitch ".\n")
(fancy-splash-insert :face `(variable-pitch (:foreground ,fg))
"\nThis is "
(emacs-version)
"\n"
- :face '(variable-pitch (:height 0.5))
+ :face '(variable-pitch (:height 0.8))
emacs-copyright
"\n")
(and auto-save-list-file-prefix
(with-current-buffer splash-buffer
(let ((inhibit-read-only t))
(erase-buffer)
+ (setq default-directory command-line-default-directory)
(make-local-variable 'startup-screen-inhibit-startup-screen)
(if pure-space-overflow
(insert pure-space-overflow-message))
(> frame-height (+ image-height 19)))))))
-(defun normal-splash-screen (&optional startup)
+(defun normal-splash-screen (&optional startup concise)
"Display non-graphic splash screen.
If optional argument STARTUP is non-nil, display the startup screen
-after Emacs starts. If STARTUP is nil, display the About screen."
- (let ((prev-buffer (current-buffer)))
- (with-current-buffer (get-buffer-create "*About GNU Emacs*")
+after Emacs starts. If STARTUP is nil, display the About screen.
+If CONCISE is non-nil, display a concise version of the
+splash screen in another window."
+ (let ((splash-buffer (get-buffer-create "*About GNU Emacs*")))
+ (with-current-buffer splash-buffer
(setq buffer-read-only nil)
(erase-buffer)
+ (setq default-directory command-line-default-directory)
(set (make-local-variable 'tab-width) 8)
(if (not startup)
(set (make-local-variable 'mode-line-format)
(setq buffer-read-only t)
(if (and view-read-only (not view-mode))
(view-mode-enter nil 'kill-buffer))
- (switch-to-buffer "*About GNU Emacs*")
(if startup (rename-buffer "*GNU Emacs*" t))
- (goto-char (point-min)))))
+ (goto-char (point-min)))
+ (if concise
+ (display-buffer splash-buffer)
+ (switch-to-buffer splash-buffer))))
(defun normal-mouse-startup-screen ()
;; The user can use the mouse to activate menus
(insert "\tHow to contribute improvements to Emacs\n\n")
(insert-button "GNU and Freedom"
- 'action (lambda (button) (describe-project))
+ 'action (lambda (button) (describe-gnu-project))
'follow-link t)
(insert "\t\tWhy we developed GNU Emacs and the GNU system\n")
(insert "\tBuying printed manuals from the FSF\n"))
(defun startup-echo-area-message ()
- (if (eq (key-binding "\C-h\C-p") 'describe-project)
- "For information about GNU Emacs and the GNU system, type C-h C-a."
- (substitute-command-keys
- "For information about GNU Emacs and the GNU system, type \
-\\[about-emacs].")))
-
+ (cond ((daemonp)
+ "Starting Emacs daemon.")
+ ((eq (key-binding "\C-h\C-a") 'about-emacs)
+ "For information about GNU Emacs and the GNU system, type C-h C-a.")
+ (t
+ (substitute-command-keys
+ "For information about GNU Emacs and the GNU system, type \
+\\[about-emacs]."))))
(defun display-startup-echo-area-message ()
(let ((resize-mini-windows t))
(if (not (get-buffer "*GNU Emacs*"))
(if (use-fancy-splash-screens-p)
(fancy-startup-screen concise)
- (normal-splash-screen t))))
+ (normal-splash-screen t concise))))
(defun display-about-screen ()
"Display the *About GNU Emacs* buffer.
(defun command-line-1 (command-line-args-left)
(display-startup-echo-area-message)
-
- ;; Delay 2 seconds after an init file error message
- ;; was displayed, so user can read it.
- (when init-file-had-error
- (sit-for 2))
-
(when (and pure-space-overflow
(not noninteractive))
(display-warning
'initialization
- "Building Emacs overflowed pure space. (See the node Pure Storage in the Lisp manual for details.)"
+ "Building Emacs overflowed pure space.\
+ (See the node Pure Storage in the Lisp manual for details.)"
:warning))
(let ((file-count 0)
(if (string-match "^--" (car tem))
(push (list (car tem)) longopts)))
+ ;; Add the long NS options to longopts.
+ (dolist (tem command-line-ns-option-alist)
+ (if (string-match "^--" (car tem))
+ (push (list (car tem)) longopts)))
+
;; Loop, processing options.
(while command-line-args-left
(let* ((argi (car command-line-args-left))
(load file nil t)))
;; This is used to handle -script. It's not clear
- ;; we need to document it.
+ ;; we need to document it (it is totally internal).
((member argi '("-scriptload"))
(let* ((file (command-line-normalize-file-name
(or argval (pop command-line-args-left))))
(setq command-line-args-left
(nthcdr (nth 1 tem) command-line-args-left)))
+ ((setq tem (assoc argi command-line-ns-option-alist))
+ ;; Ignore NS-windows options and their args if not using NS.
+ (setq command-line-args-left
+ (nthcdr (nth 1 tem) command-line-args-left)))
+
((member argi '("-find-file" "-file" "-visit"))
(setq inhibit-startup-screen t)
;; An explicit option to specify visiting a file.
((stringp initial-buffer-choice)
(find-file initial-buffer-choice))))
+ ;; If *scratch* exists and is empty, insert initial-scratch-message.
+ (and initial-scratch-message
+ (get-buffer "*scratch*")
+ (with-current-buffer "*scratch*"
+ (when (zerop (buffer-size))
+ (insert initial-scratch-message)
+ (set-buffer-modified-p nil))))
+
(if (or inhibit-startup-screen
initial-buffer-choice
noninteractive
;; (with-no-warnings
;; (setq menubar-bindings-done t))
- ;; If *scratch* exists and is empty, insert initial-scratch-message.
- (and initial-scratch-message
- (get-buffer "*scratch*")
- (with-current-buffer "*scratch*"
- (when (zerop (buffer-size))
- (insert initial-scratch-message)
- (set-buffer-modified-p nil))))
-
(if (> file-count 0)
(display-startup-screen t)
(display-startup-screen nil)))))