]> code.delx.au - gnu-emacs/blobdiff - lisp/startup.el
(custom-face-attributes): Handle mapping `nil' and `unspecified' to
[gnu-emacs] / lisp / startup.el
index 40075d82bfe00b44cd85427f16747240c3cf6af5..f4550310a871cef0c7a3b41a1c7b3cd3cb194963 100644 (file)
@@ -621,8 +621,6 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
               (string= vc "simple"))
           (setq version-control 'never))))
 
-  (set-locale-environment nil)
-
   ;;! This has been commented out; I currently find the behavior when
   ;;! split-window-keep-point is nil disturbing, but if I can get used
   ;;! to it, then it would be better to eliminate the option.
@@ -673,6 +671,8 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
             (not noninteractive))
     (setq command-line-args (tty-handle-args command-line-args)))
 
+  (set-locale-environment nil)
+
   (let ((done nil)
        (args (cdr command-line-args)))
 
@@ -765,6 +765,12 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
     (setq-default blink-cursor t)
     (blink-cursor-mode 1))
 
+  (when (and (not noninteractive)
+            (display-graphic-p)
+            (fboundp 'x-show-tip))
+    (setq-default tooltip-mode t)
+    (tooltip-mode 1))
+
   ;; Register default TTY colors for the case the terminal hasn't a
   ;; terminal init file.
   (or (memq window-system '(x w32))
@@ -822,24 +828,31 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
                    ;; into user-init-file.
                    (setq user-init-file t)
                    (load user-init-file-1 t t)
+
                    ;; If we did not find the user's init file,
                    ;; set user-init-file conclusively to nil;
                    ;; don't let it be set from default.el.
                    (if (eq user-init-file t)
                        (setq user-init-file nil))
+
                    ;; If we loaded a compiled file, set
                    ;; `user-init-file' to the source version if that
                    ;; exists.
                    (when (and user-init-file
                               (equal (file-name-extension user-init-file)
-                                     "elc")
-                              (file-exists-p user-init-file-1))
-                     (when (file-newer-than-file-p
-                            user-init-file-1 user-init-file)
-                       (message "Warning: %s is newer than %s"
-                                user-init-file-1 user-init-file)
-                       (sit-for 1))
-                     (setq user-init-file user-init-file-1))
+                                     "elc"))
+                     (let* ((source (file-name-sans-extension user-init-file))
+                            (alt (concat source ".el")))
+                       (setq source (cond ((file-exists-p alt) alt)
+                                          ((file-exists-p source) source)
+                                          (t nil)))
+                       (when source
+                         (when (file-newer-than-file-p source user-init-file)
+                           (message "Warning: %s is newer than %s"
+                                    source user-init-file)
+                           (sit-for 1))
+                         (setq user-init-file source))))
+
                    (or inhibit-default-init
                        (let ((inhibit-startup-message nil))
                          ;; Users are supposed to be told their rights.
@@ -985,12 +998,19 @@ Each element in the list should be a list of strings or pairs
   :group 'initialization)
 
 
-(defcustom fancy-splash-delay 5
+(defcustom fancy-splash-delay 10
   "*Delay in seconds between splash screens."
   :group 'fancy-splash-screen
   :type 'integer)
 
 
+(defcustom fancy-splash-max-time 60
+  "*Show splash screens for at most this number of seconds.
+Values less than 60 seconds are ignored."
+  :group 'fancy-splash-screen
+  :type 'integer)
+
+
 (defcustom fancy-splash-image nil
   "*The image to show in the splash screens, or nil for defaults."
   :group 'fancy-splash-screen
@@ -1002,6 +1022,7 @@ Each element in the list should be a list of strings or pairs
 
 (defvar fancy-current-text nil)
 (defvar fancy-splash-help-echo nil)
+(defvar fancy-splash-stop-time nil)
 
 
 (defun fancy-splash-insert (&rest args)
@@ -1076,6 +1097,8 @@ where FACE is a valid face specification, as it can be used with
 
 (defun fancy-splash-screens-1 (buffer)
   "Timer function displaying a splash screen."
+  (when (> (float-time) fancy-splash-stop-time)
+    (throw 'stop-splashing nil))
   (unless fancy-current-text
     (setq fancy-current-text fancy-splash-text))
   (let ((text (car fancy-current-text)))
@@ -1107,24 +1130,27 @@ where FACE is a valid face specification, as it can be used with
   (let ((old-busy-cursor display-busy-cursor)
        (splash-buffer (current-buffer))
        timer)
-    (unwind-protect
-       (let ((map (make-sparse-keymap))
-             (show-help-function nil))
-         (use-local-map map)
-         (define-key map [t] 'fancy-splash-default-action)
-         (define-key map [mouse-movement] 'ignore)
-         (setq cursor-type nil
-               display-busy-cursor nil
-               buffer-undo-list t
-               mode-line-format
-               (propertize "---- %b %-" 'face '(:weight bold))
-               timer (run-with-timer 0 fancy-splash-delay
-                                     #'fancy-splash-screens-1
-                                     splash-buffer))
-         (recursive-edit))
-      (cancel-timer timer)
-      (setq display-busy-cursor old-busy-cursor)
-      (kill-buffer splash-buffer))))
+    (catch 'stop-splashing
+      (unwind-protect
+         (let ((map (make-sparse-keymap))
+               (show-help-function nil))
+           (use-local-map map)
+           (define-key map [t] 'fancy-splash-default-action)
+           (define-key map [mouse-movement] 'ignore)
+           (setq cursor-type nil
+                 display-busy-cursor nil
+                 buffer-undo-list t
+                 mode-line-format
+                 (propertize "---- %b %-" 'face '(:weight bold))
+                 fancy-splash-stop-time (+ (float-time)
+                                           (max 60 fancy-splash-max-time))
+                 timer (run-with-timer 0 fancy-splash-delay
+                                       #'fancy-splash-screens-1
+                                       splash-buffer))
+           (recursive-edit))
+         (cancel-timer timer)
+         (setq display-busy-cursor old-busy-cursor)
+         (kill-buffer splash-buffer)))))
 
 
 (defun startup-echo-area-message ()