diff lisp/startup.el @ 83202:42acc7fa8a4f

Merged in changes from CVS trunk. Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-529 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-530 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-531 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-532 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-533 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-534 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-535 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-536 sync-tree with gnus--rel--5.10 * miles@gnu.org--gnu-2004/gnus--devo--0--patch-2 Add {arch}/=cvs-sync-make-log * miles@gnu.org--gnu-2004/gnus--rel--5.8--base-0 Import from Gnus CVS branch V5-8 * miles@gnu.org--gnu-2004/gnus--rel--5.8--patch-1 {arch}/=tagging-method: Add CVS and autoconf grot to junk regexp * miles@gnu.org--gnu-2004/gnus--rel--5.8--patch-2 Use explicit tags for autoconf input files * miles@gnu.org--gnu-2004/gnus--rel--5.8--patch-3 Remove RCS keywords * miles@gnu.org--gnu-2004/gnus--rel--5.8--patch-4 Fix copied explicit id-tags * miles@gnu.org--gnu-2004/gnus--rel--5.8--patch-5 Add {arch}/=cvs-sync-make-log * miles@gnu.org--gnu-2004/gnus--rel--5.8--patch-6 configure.in: Use ifelse instead of m4_if for arch-tag: comment * miles@gnu.org--gnu-2004/gnus--rel--5.10--base-0 tag of miles@gnu.org--gnu-2004/gnus--rel--5.8--base-0 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-1 Gnus 5.10, from CVS branch v5-10 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-2 Merge from gnus--rel--5.8 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-3 Use explicit tags for autoconf input files * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-4 sync-tree with gnus--rel--5.8 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-5 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-6 Merge from gnus--rel--5.8 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-7 Remove RCS keywords * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-8 Merge from gnus--rel--5.8 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-9 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-10 Add {arch}/=cvs-sync-make-log * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-11 Merge from gnus--rel--5.8 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-12 Update from CVS: make.bat: Fix line endings around arch-tag. * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-13 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-14 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-15 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-16 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-17 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-242
author Karoly Lorentey <lorentey@elte.hu>
date Fri, 10 Sep 2004 13:06:10 +0000
parents 8a6fd1c164cd 5ce2d0959cd2
children c06211125947
line wrap: on
line diff
--- a/lisp/startup.el	Mon Sep 06 07:53:44 2004 +0000
+++ b/lisp/startup.el	Fri Sep 10 13:06:10 2004 +0000
@@ -1485,12 +1485,19 @@
           (file-count 0)
           first-file-buffer
           tem
-          ;; The directories listed in --directory/-L options will *appear*
-          ;; at the front of `load-path' in the order they appear on the
-          ;; command-line.  We cannot do this by *placing* them at the front
-          ;; in the order they appear, so we need this variable to hold them,
-          ;; temporarily.
-          extra-load-path
+          ;; This approach loses for "-batch -L DIR --eval "(require foo)",
+          ;; if foo is intended to be found in DIR.
+          ;;
+          ;; ;; The directories listed in --directory/-L options will *appear*
+          ;; ;; at the front of `load-path' in the order they appear on the
+          ;; ;; command-line.  We cannot do this by *placing* them at the front
+          ;; ;; in the order they appear, so we need this variable to hold them,
+          ;; ;; temporarily.
+          ;; extra-load-path
+          ;;
+          ;; To DTRT we keep track of the splice point and modify `load-path'
+          ;; straight away upon any --directory/-L option.
+          splice
           just-files ;; t if this follows the magic -- option.
           ;; This includes our standard options' long versions
           ;; and long versions of what's on command-switch-alist.
@@ -1559,15 +1566,15 @@
 
                 ((member argi '("-eval" "-execute"))
                  (eval (read (or argval (pop command-line-args-left)))))
-                ;; Set the default directory as specified in -L.
 
                 ((member argi '("-L" "-directory"))
-                 (setq tem (or argval (pop command-line-args-left)))
-                 ;; We will reverse `extra-load-path' and prepend it to
-                 ;; `load-path' after all the arguments have been processed.
-                 (push
-                  (expand-file-name (command-line-normalize-file-name tem))
-                  extra-load-path))
+                 (setq tem (expand-file-name
+                            (command-line-normalize-file-name
+                             (or argval (pop command-line-args-left)))))
+                 (cond (splice (setcdr splice (cons tem (cdr splice)))
+                               (setq splice (cdr splice)))
+                       (t (setq load-path (cons tem load-path)
+                                splice load-path))))
 
                 ((member argi '("-l" "-load"))
                  (let* ((file (command-line-normalize-file-name
@@ -1648,10 +1655,6 @@
                            (move-to-column (1- column)))
                          (setq column 0))))))))
 
-      ;; See --directory/-L option above.
-      (when extra-load-path
-        (setq load-path (append (nreverse extra-load-path) load-path)))
-
       ;; If 3 or more files visited, and not all visible,
       ;; show user what they all are.  But leave the last one current.
       (and (> file-count 2)