]> code.delx.au - gnu-emacs/blobdiff - lisp/startup.el
(remove, remq): New functions.
[gnu-emacs] / lisp / startup.el
index cd07db9136ccf692dc9181862632db3aea44674d..42a7dcffbcb0c31d69232118c8269d69b1c9ac84 100644 (file)
@@ -193,6 +193,7 @@ This is normally copied from `default-directory' when Emacs starts.")
     ("-font" 1 x-handle-switch font)
     ("-ib" 1 x-handle-numeric-switch internal-border-width)
     ("-g" 1 x-handle-geometry)
+    ("-lsp" 1 x-handle-numeric-switch line-spacing)
     ("-geometry" 1 x-handle-geometry)
     ("-fg" 1 x-handle-switch foreground-color)
     ("-foreground" 1 x-handle-switch foreground-color)
@@ -223,6 +224,7 @@ This is normally copied from `default-directory' when Emacs starts.")
     ("--xrm" 1 x-handle-xrm-switch)
     ("--cursor-color" 1 x-handle-switch cursor-color)
     ("--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-width))
   "Alist of X Windows options.
 Each element has the form
@@ -315,13 +317,16 @@ after your init file is read, in case it sets `mail-host-address'."
   :group 'mail)
 
 (defcustom auto-save-list-file-prefix
-  (if (eq system-type 'ms-dos)
-      "~/_s"  ; MS-DOS cannot have initial dot, and allows only 8.3 names
-    "~/.saves-")
+  (cond ((eq system-type 'ms-dos)
+        ;; MS-DOS cannot have initial dot, and allows only 8.3 names
+        "~/_emacs.d/auto-save.list/_s")
+       (t
+        "~/.emacs.d/auto-save-list/.saves-"))
   "Prefix for generating `auto-save-list-file-name'.
 This is used after reading your `.emacs' file to initialize
 `auto-save-list-file-name', by appending Emacs's pid and the system name,
 if you have not already set `auto-save-list-file-name' yourself.
+Directories in the prefix will be created if necessary.
 Set this to nil if you want to prevent `auto-save-list-file-name'
 from being initialized."
   :type '(choice (const :tag "Don't record a session's auto save list" nil)
@@ -377,11 +382,15 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
   (let ((tail load-path)
        (thisdir (directory-file-name default-directory)))
     (while (and tail
+               ;;Don't go all the way to the nil terminator.
+               (cdr tail)
                (not (equal thisdir (car tail)))
                (not (and (memq system-type '(ms-dos windows-nt))
                          (equal (downcase thisdir) (downcase (car tail))))))
       (setq tail (cdr tail)))
-    (setcdr tail (append (mapcar 'expand-file-name dirs) (cdr tail)))))
+    ;;Splice the new section in.
+    (when tail
+      (setcdr tail (append (mapcar 'expand-file-name dirs) (cdr tail))))))
 
 (defun normal-top-level ()
   (if command-line-processed
@@ -403,8 +412,9 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
          new)
       (while tail
        (setq new (cons (car tail) new))
-       (let ((default-directory (car tail)))
-         (load (expand-file-name "subdirs.el" (car tail)) t t t))
+       (condition-case nil
+           (let ((default-directory (car tail)))
+             (load (expand-file-name "subdirs.el" (car tail)) t t t)))
        (setq tail (cdr tail))))
     (if (not (eq system-type 'vax-vms))
        (progn
@@ -434,16 +444,23 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
                 (setq auto-save-list-file-name
                       ;; Under MS-DOS our PID is almost always reused between
                       ;; Emacs invocations.  We need something more unique.
-                      (if (eq system-type 'ms-dos)
-                          (concat 
-                           (make-temp-name
-                            (expand-file-name auto-save-list-file-prefix))
-                           "~")
-
-                        (expand-file-name (format "%s%d-%s~"
-                                                  auto-save-list-file-prefix
-                                                  (emacs-pid)
-                                                  (system-name)))))))
+                      (cond ((eq system-type 'ms-dos)
+                             ;; We are going to access the auto-save
+                             ;; directory, so make sure it exists.
+                             (make-directory
+                              (file-name-directory auto-save-list-file-prefix)
+                              t)
+                             (concat 
+                              (make-temp-name
+                               (expand-file-name
+                                auto-save-list-file-prefix))
+                              "~"))
+                            (t
+                             (expand-file-name
+                              (format "%s%d-%s~"
+                                      auto-save-list-file-prefix
+                                      (emacs-pid)
+                                      (system-name))))))))
        (run-hooks 'emacs-startup-hook)
        (and term-setup-hook
             (run-hooks 'term-setup-hook))
@@ -541,11 +558,11 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
        (if (memq 'file-error (get (car error) 'error-conditions))
            (format "%s: %s"
                     (nth 1 error)
-                    (mapconcat '(lambda (obj) (prin1-to-string obj t))
+                    (mapconcat (lambda (obj) (prin1-to-string obj t))
                                (cdr (cdr error)) ", "))
          (format "%s: %s"
                   (get (car error) 'error-message)
-                  (mapconcat '(lambda (obj) (prin1-to-string obj t))
+                  (mapconcat (lambda (obj) (prin1-to-string obj t))
                              (cdr error) ", "))))
       'external-debugging-output)
      (setq window-system nil)
@@ -625,10 +642,18 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
   (if (fboundp 'frame-initialize)
       (frame-initialize))
   ;; If frame was created with a menu bar, set menu-bar-mode on.
-  (if (or (not (memq window-system '(x w32)))
-         (> (cdr (assq 'menu-bar-lines (frame-parameters))) 0))
+  (if (and (not noninteractive)
+          (or (not (memq window-system '(x w32)))
+              (> (cdr (assq 'menu-bar-lines (frame-parameters))) 0)))
       (menu-bar-mode t))
 
+  ;; Can't do this init in defcustom because window-system isn't set.
+  (when (and (not noninteractive)
+            (not (eq system-type 'ms-dos))
+            (memq window-system '(x w32)))
+    (setq-default blink-cursor t)
+    (blink-cursor-mode 1))
+
   (run-hooks 'before-init-hook)
 
   ;; Run the site-start library if it exists.  The point of this file is
@@ -680,14 +705,16 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
                    ;; If we loaded a compiled file, set
                    ;; `user-init-file' to the source version if that
                    ;; exists.
-                   (if (and user-init-file
-                            (equal (file-name-extension user-init-file)
-                                   "elc"))
-                       (let ((el (concat (file-name-sans-extension
-                                          user-init-file)
-                                         ".el")))
-                         (if (file-exists-p el)
-                             (setq user-init-file el))))
+                   (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))
                    (or inhibit-default-init
                        (let ((inhibit-startup-message nil))
                          ;; Users are supposed to be told their rights.
@@ -871,13 +898,14 @@ Recover Session           recover files you were editing before a crash
 
 Important Help menu items:
 Emacs Tutorial         Learn-by-doing tutorial for using Emacs efficiently.
+Emacs FAQ              Frequently asked questions and answers
 \(Non)Warranty         GNU Emacs comes with ABSOLUTELY NO WARRANTY
 Copying Conditions     Conditions for redistributing and changing Emacs.
 Getting New Versions   How to obtain the latest version of Emacs.
 ")
                             (insert "\n\n" (emacs-version)
                                     "
-Copyright (C) 1999 Free Software Foundation, Inc."))
+Copyright (C) 2000 Free Software Foundation, Inc."))
                         ;; If keys have their default meanings,
                         ;; use precomputed string to save lots of time.
                         (if (and (eq (key-binding "\C-h") 'help-command)
@@ -921,6 +949,11 @@ Mode-specific menu   C-mouse-3 (third button, with CTRL)"))
 \(`C-' means use the CTRL key.  `M-' means use the Meta (or Alt) key.
 If you have no Meta key, you may instead type ESC followed by the character.)")
                         (and auto-save-list-file-prefix
+                             ;; Don't signal an error if the
+                             ;; directory for auto-save-list files
+                             ;; does not yet exist.
+                             (file-directory-p (file-name-directory
+                                                auto-save-list-file-prefix))
                              (directory-files
                               (file-name-directory auto-save-list-file-prefix)
                               nil
@@ -934,7 +967,7 @@ If you have no Meta key, you may instead type ESC followed by the character.)")
 
                         (insert "\n\n" (emacs-version)
                                 "
-Copyright (C) 1999 Free Software Foundation, Inc.")
+Copyright (C) 2000 Free Software Foundation, Inc.")
                         (if (and (eq (key-binding "\C-h\C-c") 'describe-copying)
                                  (eq (key-binding "\C-h\C-d") 'describe-distribution)
                                  (eq (key-binding "\C-h\C-w") 'describe-no-warranty))
@@ -974,8 +1007,8 @@ Type \\[describe-distribution] for information on getting the latest version."))
           (append '(("--funcall") ("--load") ("--insert") ("--kill")
                     ("--directory") ("--eval") ("--execute")
                     ("--find-file") ("--visit") ("--file"))
-                  (mapcar '(lambda (elt)
-                             (list (concat "-" (car elt))))
+                  (mapcar (lambda (elt)
+                            (list (concat "-" (car elt))))
                           command-switch-alist)))
          (line 0))