diff src/lread.c @ 42797:2fc2abcdc67c

(init_lread): Move the site-lisp dirs later in the path.
author Richard M. Stallman <rms@gnu.org>
date Thu, 17 Jan 2002 00:45:43 +0000
parents 87b4443a330e
children a6382f0fcb2a
line wrap: on
line diff
--- a/src/lread.c	Thu Jan 17 00:27:39 2002 +0000
+++ b/src/lread.c	Thu Jan 17 00:45:43 2002 +0000
@@ -3366,9 +3366,28 @@
 	  Vload_path = decode_env_path (0, normal);
 	  if (!NILP (Vinstallation_directory))
 	    {
+	      Lisp_Object tem, tem1, sitelisp;
+
+	      /* Remove site-lisp dirs from path temporarily and store
+		 them in sitelisp, then conc them on at the end so
+		 they're always first in path.  */
+	      sitelisp = Qnil;
+	      while (1)
+		{
+		  tem = Fcar (Vload_path);
+		  tem1 = Fstring_match (build_string ("site-lisp"),
+					tem, Qnil);
+		  if (!NILP (tem1))
+		    {
+		      Vload_path = Fcdr (Vload_path);
+		      sitelisp = Fcons (tem, sitelisp);
+		    }
+		  else
+		    break;
+		}
+
 	      /* Add to the path the lisp subdir of the
 		 installation dir, if it exists.  */
-	      Lisp_Object tem, tem1;
 	      tem = Fexpand_file_name (build_string ("lisp"),
 				       Vinstallation_directory);
 	      tem1 = Ffile_exists_p (tem);
@@ -3377,7 +3396,7 @@
 		  if (NILP (Fmember (tem, Vload_path)))
 		    {
 		      turn_off_warning = 1;
-		      Vload_path = nconc2 (Vload_path, Fcons (tem, Qnil));
+		      Vload_path = Fcons (tem, Vload_path);
 		    }
 		}
 	      else
@@ -3392,7 +3411,7 @@
 	      if (!NILP (tem1))
 		{
 		  if (NILP (Fmember (tem, Vload_path)))
-		    Vload_path = nconc2 (Vload_path, Fcons (tem, Qnil));
+		    Vload_path = Fcons (tem, Vload_path);
 		}
 
 	      /* Add site-list under the installation dir, if it exists.  */
@@ -3402,7 +3421,7 @@
 	      if (!NILP (tem1))
 		{
 		  if (NILP (Fmember (tem, Vload_path)))
-		    Vload_path = nconc2 (Vload_path, Fcons (tem, Qnil));
+		    Vload_path = Fcons (tem, Vload_path);
 		}
 
 	      /* If Emacs was not built in the source directory,
@@ -3430,21 +3449,23 @@
 					       Vsource_directory);
 
 		      if (NILP (Fmember (tem, Vload_path)))
-			Vload_path = nconc2 (Vload_path, Fcons (tem, Qnil));
+			Vload_path = Fcons (tem, Vload_path);
 
 		      tem = Fexpand_file_name (build_string ("leim"),
 					       Vsource_directory);
 
 		      if (NILP (Fmember (tem, Vload_path)))
-			Vload_path = nconc2 (Vload_path, Fcons (tem, Qnil));
+			Vload_path = Fcons (tem, Vload_path);
 
 		      tem = Fexpand_file_name (build_string ("site-lisp"),
 					       Vsource_directory);
 
 		      if (NILP (Fmember (tem, Vload_path)))
-			Vload_path = nconc2 (Vload_path, Fcons (tem, Qnil));
+			Vload_path = Fcons (tem, Vload_path);
 		    }
 		}
+	      if (!NILP (sitelisp))
+		Vload_path = nconc2 (Fnreverse (sitelisp), Vload_path);
 	    }
 	}
     }