]> git.eshelyaron.com Git - emacs.git/commitdiff
Include buffer.h
authorRichard M. Stallman <rms@gnu.org>
Thu, 23 Apr 1998 21:19:34 +0000 (21:19 +0000)
committerRichard M. Stallman <rms@gnu.org>
Thu, 23 Apr 1998 21:19:34 +0000 (21:19 +0000)
(main): Move the --unibyte code below
the most basic initializations.
Clear out *Messages* at that point.

(main): When handling --unibyte, mark all existing
buffers as unibyte; but don't handle it when dumping.

src/emacs.c

index ee38b192a1e2d2a8ff86d38bb6f90632b13910fa..26d1f519bbad996fd478ba0eeb77b35ce5b33944 100644 (file)
@@ -39,6 +39,7 @@ Boston, MA 02111-1307, USA.  */
 #include "lisp.h"
 #include "commands.h"
 #include "intervals.h"
+#include "buffer.h"
 
 #include "systty.h"
 #include "blockinput.h"
@@ -741,29 +742,6 @@ main (argc, argv, envp)
 
   inhibit_window_system = 0;
 
-  {
-    int inhibit_unibyte = 0;
-
-    /* --multibyte overrides EMACS_UNIBYTE.  */
-    if (argmatch (argv, argc, "-no-unibyte", "--no-unibyte", 4, NULL, &skip_args)
-       || argmatch (argv, argc, "-multibyte", "--multibyte", 4, NULL, &skip_args))
-      inhibit_unibyte = 1;
-  
-    /* --unibyte requests that we set up to do everything with single-byte
-       buffers and strings.  We need to handle this before calling
-       init_lread, init_editfns and other places that generate Lisp strings
-       from text in the environment.  */
-    if (argmatch (argv, argc, "-unibyte", "--unibyte", 4, NULL, &skip_args)
-       || argmatch (argv, argc, "-no-multibyte", "--no-multibyte", 4, NULL, &skip_args)
-       || (getenv ("EMACS_UNIBYTE") && !inhibit_unibyte))
-      {
-       Lisp_Object symbol;
-       symbol = intern ("default-enable-multibyte-characters");
-       Fset (symbol, Qnil);
-       Fset_default (symbol, Qnil);
-      }
-  }
-
   /* Handle the -t switch, which specifies filename to use as terminal */
   {
     char *term;
@@ -998,6 +976,59 @@ the Bugs section of the Emacs manual or the file BUGS.\n", argv[0]);
   init_data ();
   running_asynch_code = 0;
 
+  /* Handle --unibyte and the EMACS_UNIBYTE envvar,
+     but not while dumping.  */
+  if (
+#ifndef CANNOT_DUMP
+      ! noninteractive || initialized
+#else
+      1
+#endif
+      )
+    {
+      int inhibit_unibyte = 0;
+
+      /* --multibyte overrides EMACS_UNIBYTE.  */
+      if (argmatch (argv, argc, "-no-unibyte", "--no-unibyte", 4, NULL, &skip_args)
+         || argmatch (argv, argc, "-multibyte", "--multibyte", 4, NULL, &skip_args))
+       inhibit_unibyte = 1;
+
+      /* --unibyte requests that we set up to do everything with single-byte
+        buffers and strings.  We need to handle this before calling
+        init_lread, init_editfns and other places that generate Lisp strings
+        from text in the environment.  */
+      if (argmatch (argv, argc, "-unibyte", "--unibyte", 4, NULL, &skip_args)
+         || argmatch (argv, argc, "-no-multibyte", "--no-multibyte", 4, NULL, &skip_args)
+         || (getenv ("EMACS_UNIBYTE") && !inhibit_unibyte))
+       {
+         Lisp_Object old_log_max;
+         Lisp_Object symbol, tail;
+
+         symbol = intern ("default-enable-multibyte-characters");
+         Fset (symbol, Qnil);
+
+         /* Erase pre-dump messages in *Messages* now so no abort.  */
+         old_log_max = Vmessage_log_max;
+         XSETFASTINT (Vmessage_log_max, 0);
+         message_dolog ("", 0, 1, 0);
+         Vmessage_log_max = old_log_max;
+
+         for (tail = Fbuffer_list (); CONSP (tail);
+              tail = XCONS (tail)->cdr)
+           {
+             Lisp_Object buffer;
+
+             buffer = XCONS (tail)->car;
+             /* Verify that all buffers are empty now, as they
+                ought to be.  */
+             if (BUF_Z (XBUFFER (buffer)) > BUF_BEG (XBUFFER (buffer)))
+               abort ();
+             /* It is safe to do this crudely in an empty buffer.  */
+             XBUFFER (buffer)->enable_multibyte_characters = Qnil;
+           }
+       }
+    }
+
 #ifdef MSDOS
   /* Call early 'cause init_environment needs it.  */
   init_dosfns ();
@@ -1265,13 +1296,13 @@ struct standard_args standard_args[] =
 #ifdef VMS
   { "-map", "--map-data", 100, 0 },
 #endif
-  { "-no-unibyte", "--no-unibyte", 96, 0 },
-  { "-multibyte", "--multibyte", 96, 0 },
-  { "-unibyte", "--unibyte", 95, 0 },
-  { "-no-multibyte", "--no-multibyte", 95, 0 },
   { "-t", "--terminal", 90, 1 },
   { "-d", "--display", 80, 1 },
   { "-display", 0, 80, 1 },
+  { "-no-unibyte", "--no-unibyte", 76, 0 },
+  { "-multibyte", "--multibyte", 76, 0 },
+  { "-unibyte", "--unibyte", 75, 0 },
+  { "-no-multibyte", "--no-multibyte", 75, 0 },
   { "-nw", "--no-windows", 70, 0 },
   { "-batch", "--batch", 60, 0 },
   { "-q", "--no-init-file", 50, 0 },