diff src/bufslots.h @ 70:131b0175ea99 r20-0b30

Import from CVS: tag r20-0b30
author cvs
date Mon, 13 Aug 2007 09:02:59 +0200
parents 376386a54a3c
children fe104dbd9147
line wrap: on
line diff
--- a/src/bufslots.h	Mon Aug 13 09:00:04 2007 +0200
+++ b/src/bufslots.h	Mon Aug 13 09:02:59 2007 +0200
@@ -94,6 +94,16 @@
     MARKED_SLOT (abbrev_table);
     /* This buffer's syntax table.  */
     MARKED_SLOT (syntax_table);
+    /* Massaged values from the syntax table, for faster lookup. */
+    MARKED_SLOT (mirror_syntax_table);
+
+#ifdef MULE
+    /* This buffer's category table. */
+    MARKED_SLOT (category_table);
+
+    /* This buffer's coding system. */
+    MARKED_SLOT (file_coding_system);
+#endif /* MULE */
 
     /* Values of several buffer-local variables.
 
@@ -122,6 +132,23 @@
     /* Char-table of equivalences for case-folding search.  */
     MARKED_SLOT (case_eqv_table);
 
+#ifdef MULE
+    /* #### The purpose of these bogos is to deal with the fact that
+       the Boyer-Moore and regex searching routines don't know how to
+       deal with translating multi-byte characters.  Fixing this is hard,
+       so instead we maintain these mirror tables that have all incorrect
+       mappings (see casetab.c) sanitized out of them.  If we don't do
+       this, we may get weird and unpredictable results in the presence
+       of extended chars and extended mappings, and it could even lead
+       to a crash.
+
+       #### Eventually we should deal with this properly. */
+    MARKED_SLOT (mirror_downcase_table);
+    MARKED_SLOT (mirror_upcase_table);
+    MARKED_SLOT (mirror_case_canon_table);
+    MARKED_SLOT (mirror_case_eqv_table);
+#endif
+
     /* #### This ought to be a specifier: */
     /* Non-nil means do not display continuation lines.  */
     MARKED_SLOT (truncate_lines);