emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Not loading the Registry settings


From: Juanma Barranquero
Subject: Re: Not loading the Registry settings
Date: Mon, 14 Sep 2009 02:34:29 +0200

This a sample patch, not nearly ready (no docs, for example), just to
check whether I'm going in the right direction. It is the simplest
patch that works on Windows.

Comments:

 - It piggybacks on -Q, as Stefan suggested. Personally I think (but
not very strongly) that a new option would be clearer.

 - It basically turns w32reg:x_get_string_resource() into a no-op.
Would the same approach for xrdb:x_get_string_resource() work? In
particular, in the ~/.Xdefaults case mentioned by Miles?

 - As defined, it is an irreversible operation. Once -Q is used,
x_get_string_resource is a no-op for the duration of the Emacs
instance. I've assumed that is the intended effect.

Thoughts?

    Juanma


diff --git a/src/emacs.c b/src/emacs.c
index 2c14be5..2f25248 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -239,6 +239,9 @@ int noninteractive;

 int noninteractive1;

+/* Nonzero means Emacs was started with --quick.  */
+int emacs_quick_startup;
+
 /* Name for the server started by the daemon.*/
 static char *daemon_name;

@@ -1472,6 +1475,16 @@ main (int argc, char **argv)
   no_loadup
     = argmatch (argv, argc, "-nl", "--no-loadup", 6, NULL, &skip_args);

+  /* Check the -quick switch, which means don't load init or site files, nor X
+     settings or Windows registry, and no splash; but pass it back
for startup.el.  */
+  if (argmatch (argv, argc, "-Q", "--quick", 5, NULL, &skip_args))
+    {
+      emacs_quick_startup = 1;
+      skip_args--;
+    }
+  else
+    emacs_quick_startup = 0;
+
 #ifdef HAVE_NS
   ns_alloc_autorelease_pool();
   if (!noninteractive)
diff --git a/src/lisp.h b/src/lisp.h
index 820c258..38e4854 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -3128,6 +3128,7 @@ extern Lisp_Object Vinvocation_name,
Vinvocation_directory;
 extern Lisp_Object Vbefore_init_time, Vafter_init_time;
 extern Lisp_Object Vinstallation_directory;
 extern Lisp_Object empty_unibyte_string, empty_multibyte_string;
+extern int emacs_quick_startup;
 EXFUN (Fkill_emacs, 1);
 #if HAVE_SETLOCALE
 void fixup_locale P_ ((void));
diff --git a/src/w32reg.c b/src/w32reg.c
index d2330e7..89294f8 100644
--- a/src/w32reg.c
+++ b/src/w32reg.c
@@ -150,6 +150,9 @@ x_get_string_resource (rdb, name, class)
      XrmDatabase rdb;
      char *name, *class;
 {
+  /* --quick was passed, so this is a no-op.  */
+  if (emacs_quick_startup) return NULL;
+
   if (rdb)
     {
       char *resource;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]