summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog10
-rw-r--r--src/emacs.c30
-rw-r--r--src/lisp.h7
-rw-r--r--src/lread.c4
4 files changed, 45 insertions, 6 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index a32e7a28dc3..12768f3578b 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,13 @@
+2011-01-07 Glenn Morris <rgm@gnu.org>
+
+ * emacs.c (no_site_lisp): New int.
+ (USAGE1): Add --no-site-lisp, mention -Q uses it.
+ (main): Set no_site_lisp.
+ (standard_args): Add --no-site-lisp.
+ * lisp.h (no_site_lisp): New int.
+ * lread.c (init_lread): If no_site_lisp, don't re-add site-lisp
+ directories to Vload_path.
+
2011-01-05 Andreas Schwab <schwab@linux-m68k.org>
* alloc.c (mark_stack): Use __builtin_unwind_init if available.
diff --git a/src/emacs.c b/src/emacs.c
index 59223336d45..2388146105b 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -231,6 +231,9 @@ int noninteractive1;
/* Nonzero means Emacs was run in --quick mode. */
int inhibit_x_resources;
+/* Nonzero means remove site-lisp directories from load-path. */
+int no_site_lisp;
+
/* Name for the server started by the daemon.*/
static char *daemon_name;
@@ -268,9 +271,11 @@ Initialization options:\n\
--no-init-file, -q load neither ~/.emacs nor default.el\n\
--no-shared-memory, -nl do not use shared memory\n\
--no-site-file do not load site-start.el\n\
+--no-site-lisp, -nsl do not add site-lisp directories to load-path\n\
--no-splash do not display a splash screen on startup\n\
--no-window-system, -nw do not communicate with X, ignoring $DISPLAY\n\
---quick, -Q equivalent to -q --no-site-file --no-splash\n\
+--quick, -Q equivalent to:\n\
+ -q --no-site-file --no-site-lisp --no-splash\n\
--script FILE run FILE as an Emacs Lisp script\n\
--terminal, -t DEVICE use DEVICE for terminal I/O\n\
--user, -u USER load ~USER/.emacs instead of your own\n\
@@ -1341,6 +1346,9 @@ main (int argc, char **argv)
no_loadup
= argmatch (argv, argc, "-nl", "--no-loadup", 6, NULL, &skip_args);
+ no_site_lisp
+ = argmatch (argv, argc, "-nsl", "--no-site-lisp", 11, NULL, &skip_args);
+
#ifdef HAVE_NS
ns_alloc_autorelease_pool();
if (!noninteractive)
@@ -1409,9 +1417,27 @@ main (int argc, char **argv)
&& argv[count_before + 1][1] == '-')
argv[count_before + 1] = "-d";
+ if (! no_site_lisp)
+ {
+ if (argmatch (argv, argc, "-Q", "--quick", 3, NULL, &skip_args)
+ || argmatch (argv, argc, "-quick", 0, 2, NULL, &skip_args))
+ no_site_lisp = 1;
+ }
+
/* Don't actually discard this arg. */
skip_args = count_before;
}
+#else /* !HAVE_X_WINDOWS */
+ if (! no_site_lisp)
+ {
+ int count_before = skip_args;
+
+ if (argmatch (argv, argc, "-Q", "--quick", 3, NULL, &skip_args)
+ || argmatch (argv, argc, "-quick", 0, 2, NULL, &skip_args))
+ no_site_lisp = 1;
+
+ skip_args = count_before;
+ }
#endif
/* argmatch must not be used after here,
@@ -1743,10 +1769,12 @@ const struct standard_args standard_args[] =
{ "-daemon", "--daemon", 99, 0 },
{ "-help", "--help", 90, 0 },
{ "-nl", "--no-loadup", 70, 0 },
+ { "-nsl", "--no-site-lisp", 65, 0 },
/* -d must come last before the options handled in startup.el. */
{ "-d", "--display", 60, 1 },
{ "-display", 0, 60, 1 },
/* Now for the options handled in `command-line' (startup.el). */
+ /* (Note that to imply -nsl, -Q is partially handled here.) */
{ "-Q", "--quick", 55, 0 },
{ "-quick", 0, 55, 0 },
{ "-q", "--no-init-file", 50, 0 },
diff --git a/src/lisp.h b/src/lisp.h
index e02d559512c..eadbbacbff4 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -1,6 +1,6 @@
/* Fundamental definitions for GNU Emacs Lisp interpreter.
Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -3225,6 +3225,9 @@ extern int noninteractive;
/* Nonzero means don't load X resources or Windows Registry settings. */
extern int inhibit_x_resources;
+/* Nonzero means remove site-lisp directories from load-path. */
+extern int no_site_lisp;
+
/* Pipe used to send exit notification to the daemon parent at
startup. */
extern int daemon_pipe[2];
@@ -3668,5 +3671,3 @@ extern Lisp_Object safe_alloca_unwind (Lisp_Object);
#endif /* EMACS_LISP_H */
-/* arch-tag: 9b2ed020-70eb-47ac-94ee-e1c2a5107d5e
- (do not change this comment) */
diff --git a/src/lread.c b/src/lread.c
index ea8c0416518..bc371fc02b0 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -2,7 +2,7 @@
Copyright (C) 1985, 1986, 1987, 1988, 1989, 1993, 1994, 1995, 1997,
1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
- 2009, 2010 Free Software Foundation, Inc.
+ 2009, 2010, 2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -4086,7 +4086,7 @@ init_lread (void)
Vload_path = Fcons (tem, Vload_path);
}
}
- if (!NILP (sitelisp))
+ if (!NILP (sitelisp) && !no_site_lisp)
Vload_path = nconc2 (Fnreverse (sitelisp), Vload_path);
}
}