X-Git-Url: https://git.hcoop.net/bpt/emacs.git/blobdiff_plain/1072671b5b0f1fda9f91ea99da4bf0bd275ce6eb..6ed8eeffb3a2c5cbbd8622a7ccd0726c3bf92946:/lisp/startup.el diff --git a/lisp/startup.el b/lisp/startup.el index f5b0180951..cef38411dc 100644 --- a/lisp/startup.el +++ b/lisp/startup.el @@ -47,14 +47,14 @@ The value is nil if the selected frame is on a text-only-terminal.") "Emacs start-up procedure." :group 'internal) -(defcustom inhibit-startup-message nil - "*Non-nil inhibits the initial startup message. +(defcustom inhibit-splash-screen nil + "*Non-nil inhibits the startup screen. This is for use in your personal init file, once you are familiar -with the contents of the startup message." +with the contents of the startup screen." :type 'boolean :group 'initialization) -(defvaralias 'inhibit-splash-screen 'inhibit-startup-message) +(defvaralias 'inhibit-startup-message 'inhibit-splash-screen) (defcustom inhibit-startup-echo-area-message nil "*Non-nil inhibits the initial startup echo area message. @@ -647,6 +647,24 @@ opening the first frame (e.g. open a connection to an X server).") (set-locale-environment nil) + ;; Convert preloaded file names to absolute. + (let ((lisp-dir + (file-name-directory + (locate-file "simple" load-path + load-suffixes)))) + + (setq load-history + (mapcar (lambda (elt) + (if (and (stringp (car elt)) + (not (file-name-absolute-p (car elt)))) + (cons (concat lisp-dir + (car elt) + (if (string-match "[.]el$" (car elt)) + "" ".elc")) + (cdr elt)) + elt)) + load-history))) + ;; Convert the arguments to Emacs internal representation. (let ((args (cdr command-line-args))) (while args @@ -726,6 +744,8 @@ opening the first frame (e.g. open a connection to an X server).") (and command-line-args (setcdr command-line-args args))) + (run-hooks 'before-init-hook) + ;; Under X Window, this creates the X frame and deletes the terminal frame. (when (fboundp 'frame-initialize) (frame-initialize)) @@ -756,14 +776,21 @@ opening the first frame (e.g. open a connection to an X server).") ;; Can't do this init in defcustom because the relevant variables ;; are not set. (custom-reevaluate-setting 'blink-cursor-mode) - (custom-reevaluate-setting 'normal-erase-is-backspace) (custom-reevaluate-setting 'tooltip-mode) + (custom-reevaluate-setting 'global-font-lock-mode) + (custom-reevaluate-setting 'mouse-wheel-down-event) + (custom-reevaluate-setting 'mouse-wheel-up-event) + (custom-reevaluate-setting 'file-name-shadow-mode) + (custom-reevaluate-setting 'send-mail-function) + + (normal-erase-is-backspace-setup-frame) ;; Register default TTY colors for the case the terminal hasn't a - ;; terminal init file. - ;; We do this regardles of whether the terminal supports colors - ;; or not, since they can switch that support on or off in - ;; mid-session by setting the tty-color-mode frame parameter. + ;; terminal init file. We do this regardles of whether the terminal + ;; supports colors or not and regardless the current display type, + ;; 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) ;; Record whether the tool-bar is present before the user and site @@ -782,8 +809,6 @@ opening the first frame (e.g. open a connection to an X server).") (old-font-list-limit font-list-limit) (old-face-ignored-fonts face-ignored-fonts)) - (run-hooks 'before-init-hook) - ;; Run the site-start library if it exists. The point of this file is ;; that it is run before .emacs. There is no point in doing this after ;; .emacs; that is useless. @@ -795,12 +820,18 @@ opening the first frame (e.g. open a connection to an X server).") (setq inhibit-startup-message nil) ;; Warn for invalid user name. - (and init-file-user - (not (file-directory-p (expand-file-name (concat "~" init-file-user)))) - (display-warning 'initialization - (format "User %s has no home directory" - init-file-user) - :error)) + (when init-file-user + (if (string-match "[~/:\n]" init-file-user) + (display-warning 'initialization + (format "Invalid user name %s" + init-file-user) + :error) + (if (file-directory-p (expand-file-name (concat "~" init-file-user))) + nil + (display-warning 'initialization + (format "User %s has no home directory" + init-file-user) + :error)))) ;; Load that user's init file, or the default one, or none. (let (debug-on-error-from-init-file @@ -838,14 +869,12 @@ opening the first frame (e.g. open a connection to an X server).") (when (eq user-init-file t) ;; If we did not find ~/.emacs, try - ;; ~/.emacs.d/.emacs. + ;; ~/.emacs.d/init.el. (let ((otherfile (expand-file-name - (file-name-nondirectory user-init-file-1) + "init" (file-name-as-directory - (expand-file-name - ".emacs.d" - (file-name-directory user-init-file-1)))))) + (concat "~" init-file-user "/.emacs.d"))))) (load otherfile t t) ;; If we did not find the user's init file, @@ -909,6 +938,10 @@ opening the first frame (e.g. open a connection to an X server).") (pop-to-buffer "*Messages*")) (setq init-file-had-error t))))) + (if (and deactivate-mark transient-mark-mode) + (with-current-buffer (window-buffer) + (deactivate-mark))) + ;; If the user has a file of abbrevs, read it. (if (file-exists-p abbrev-file-name) (quietly-read-abbrev-file abbrev-file-name)) @@ -946,6 +979,38 @@ opening the first frame (e.g. open a connection to an X server).") (or mail-host-address (system-name))))) + ;; Originally face attributes were specified via + ;; `font-lock-face-attributes'. Users then changed the default + ;; face attributes by setting that variable. However, we try and + ;; be back-compatible and respect its value if set except for + ;; faces where M-x customize has been used to save changes for the + ;; face. + (when (boundp 'font-lock-face-attributes) + (let ((face-attributes font-lock-face-attributes)) + (while face-attributes + (let* ((face-attribute (pop face-attributes)) + (face (car face-attribute))) + ;; Rustle up a `defface' SPEC from a + ;; `font-lock-face-attributes' entry. + (unless (get face 'saved-face) + (let ((foreground (nth 1 face-attribute)) + (background (nth 2 face-attribute)) + (bold-p (nth 3 face-attribute)) + (italic-p (nth 4 face-attribute)) + (underline-p (nth 5 face-attribute)) + face-spec) + (when foreground + (setq face-spec (cons ':foreground (cons foreground face-spec)))) + (when background + (setq face-spec (cons ':background (cons background face-spec)))) + (when bold-p + (setq face-spec (append '(:weight bold) face-spec))) + (when italic-p + (setq face-spec (append '(:slant italic) face-spec))) + (when underline-p + (setq face-spec (append '(:underline t) face-spec))) + (face-spec-set face (list (list t face-spec)) nil))))))) + ;; If parameter have been changed in the init file which influence ;; face realization, clear the face cache so that new faces will ;; be realized. @@ -1232,7 +1297,7 @@ This is an internal function used to turn off the splash screen after the user caused an input event by hitting a key or clicking with the mouse." (interactive) - (if (and (consp last-command-event) + (if (and (memq 'down (event-modifiers last-command-event)) (eq (posn-window (event-start last-command-event)) (selected-window))) ;; This is a mouse-down event in the spash screen window. @@ -1365,7 +1430,7 @@ Copyright (C) 2005 Free Software Foundation, Inc.")) ;; use precomputed string to save lots of time. (if (and (eq (key-binding "\C-h") 'help-command) (eq (key-binding "\C-xu") 'advertised-undo) - (eq (key-binding "\C-x\C-c") 'save-buffers-kill-emacs) + (eq (key-binding "\C-x\C-c") 'save-buffers-kill-terminal) (eq (key-binding "\C-ht") 'help-with-tutorial) (eq (key-binding "\C-hi") 'info) (eq (key-binding "\C-hr") 'info-emacs-manual) @@ -1382,7 +1447,7 @@ Browse manuals C-h i") Get help %s Emacs manual \\[info-emacs-manual] Emacs tutorial \\[help-with-tutorial]\tUndo changes\t\\[advertised-undo] -Buy manuals \\[view-order-manuals]\tExit Emacs\t\\[save-buffers-kill-emacs] +Buy manuals \\[view-order-manuals]\tExit Emacs\t\\[save-buffers-kill-terminal] Browse manuals \\[info]" (let ((where (where-is-internal 'help-command nil t)))