]> code.delx.au - gnu-emacs/blobdiff - lisp/startup.el
(mouse-choose-completion): New function.
[gnu-emacs] / lisp / startup.el
index f13aefec1a4d88aa0679bda95145e8e70af36b55..49a423f8a7aeabd26ce95bdd6303b0bd69ebe50c 100644 (file)
@@ -47,7 +47,6 @@
 ; -funcall function    same
 ; -l file              load file
 ; -load file           same
-; -i file              insert file into buffer
 ; -insert file         same
 ; file                 visit file
 ; -kill                        kill (exit) emacs
@@ -126,24 +125,29 @@ directory name of the directory where the `.emacs' file was looked for.")
   (if command-line-processed
       (message "Back to top level.")
     (setq command-line-processed t)
-    ;; In presence of symlinks, switch to cleaner form of default directory.
     (if (not (eq system-type 'vax-vms))
-       (mapcar (function
-                (lambda (var)
-                  (let ((value (getenv var)))
-                    (if (and value
-                             (< (length value) (length default-directory))
-                             (equal (file-attributes default-directory)
-                                    (file-attributes value)))
-                        (setq default-directory
-                              (file-name-as-directory value))))))
-               '("PWD" "HOME")))
+       (progn
+         ;; 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))
     (unwind-protect
        (command-line)
       (run-hooks 'emacs-startup-hook)
       (and term-setup-hook
           (run-hooks 'term-setup-hook))
+      (if (fboundp 'frame-notice-user-settings)
+         (frame-notice-user-settings))
       (and window-setup-hook
           (run-hooks 'window-setup-hook)))))
 
@@ -209,6 +213,12 @@ directory name of the directory where the `.emacs' file was looked for.")
     ;; Re-attach the program name to the front of the arg list.
     (setcdr command-line-args args))
 
+  ;; Under X Windows, this creates the X frame and deletes the terminal frame.
+  (if (fboundp 'frame-initialize)
+      (frame-initialize))
+  (if (fboundp 'face-initialize)
+      (face-initialize))
+
   (run-hooks 'before-init-hook)
 
   ;; Run the site-start library if it exists.  The point of this file is
@@ -284,6 +294,14 @@ directory name of the directory where the `.emacs' file was looked for.")
                  (run-hooks 'term-setup-hook))
             ;; Don't let the hook be run twice.
             (setq term-setup-hook nil)
+
+            ;; It's important to notice the user settings before we
+            ;; display the startup message; otherwise, the settings
+            ;; won't take effect until the user gives the first
+            ;; keystroke, and that's distracting.
+            (if (fboundp 'frame-notice-user-settings)
+                (frame-notice-user-settings))
+
             (and window-setup-hook
                  (run-hooks 'window-setup-hook))
             (setq window-setup-hook nil)
@@ -291,7 +309,7 @@ directory name of the directory where the `.emacs' file was looked for.")
                 (progn
                   (insert (emacs-version)
                           "
-Copyright (C) 1991 Free Software Foundation, Inc.\n\n")
+Copyright (C) 1993 Free Software Foundation, Inc.\n\n")
                   ;; If keys have their default meanings,
                   ;; use precomputed string to save lots of time.
                   (if (and (eq (key-binding "\C-h") 'help-command)
@@ -352,10 +370,9 @@ Type \\[describe-distribution] for information on getting the latest version."))
                       (setq file (expand-file-name file)))
                   (load file nil t))
                 (setq command-line-args-left (cdr command-line-args-left)))
-               ((or (string-equal argi "-i")
-                    (string-equal argi "-insert"))
+               ((string-equal argi "-insert")
                 (or (stringp (car command-line-args-left))
-                    (error "filename omitted from `-i' option"))
+                    (error "filename omitted from `-insert' option"))
                 (insert-file-contents (car command-line-args-left))
                 (setq command-line-args-left (cdr command-line-args-left)))
                ((string-equal argi "-kill")
@@ -386,7 +403,7 @@ Type \\[describe-distribution] for information on getting the latest version."))
       ;; show user what they all are.
       (if (> file-count 2)
          (or (get-buffer-window first-file-buffer)
-             (progn (other-window)
+             (progn (other-window 1)
                     (buffer-menu)))))))
 
 ;;; startup.el ends here