qemacs-commit
[Top][All Lists]
Advanced

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

[Qemacs-commit] qemacs htmlsrc.c markdown.c xml.c script.c unih...


From: Charlie Gordon
Subject: [Qemacs-commit] qemacs htmlsrc.c markdown.c xml.c script.c unih...
Date: Wed, 02 Apr 2014 12:58:25 +0000

CVSROOT:        /sources/qemacs
Module name:    qemacs
Changes by:     Charlie Gordon <chqrlie>        14/04/02 12:58:24

Modified files:
        .              : htmlsrc.c markdown.c xml.c script.c unihex.c 
                         hex.c makemode.c perl.c latex-mode.c lisp.c 
                         orgmode.c extra-modes.c 

Log message:
        improve colorizers
        
        * use mode specific namespace for colorizer states and styles
        * use enum values instead of preprocessor macros for states and styles

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/qemacs/htmlsrc.c?cvsroot=qemacs&r1=1.11&r2=1.12
http://cvs.savannah.gnu.org/viewcvs/qemacs/markdown.c?cvsroot=qemacs&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/qemacs/xml.c?cvsroot=qemacs&r1=1.16&r2=1.17
http://cvs.savannah.gnu.org/viewcvs/qemacs/script.c?cvsroot=qemacs&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/qemacs/unihex.c?cvsroot=qemacs&r1=1.22&r2=1.23
http://cvs.savannah.gnu.org/viewcvs/qemacs/hex.c?cvsroot=qemacs&r1=1.37&r2=1.38
http://cvs.savannah.gnu.org/viewcvs/qemacs/makemode.c?cvsroot=qemacs&r1=1.14&r2=1.15
http://cvs.savannah.gnu.org/viewcvs/qemacs/perl.c?cvsroot=qemacs&r1=1.15&r2=1.16
http://cvs.savannah.gnu.org/viewcvs/qemacs/latex-mode.c?cvsroot=qemacs&r1=1.44&r2=1.45
http://cvs.savannah.gnu.org/viewcvs/qemacs/lisp.c?cvsroot=qemacs&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/qemacs/orgmode.c?cvsroot=qemacs&r1=1.17&r2=1.18
http://cvs.savannah.gnu.org/viewcvs/qemacs/extra-modes.c?cvsroot=qemacs&r1=1.10&r2=1.11

Patches:
Index: htmlsrc.c
===================================================================
RCS file: /sources/qemacs/qemacs/htmlsrc.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- htmlsrc.c   24 Mar 2014 10:58:10 -0000      1.11
+++ htmlsrc.c   2 Apr 2014 12:58:12 -0000       1.12
@@ -56,14 +56,24 @@
 
 /* color colorization states */
 enum {
-    HTML_COMMENT   = 0x01,      /* <!-- <> --> */
-    HTML_COMMENT1  = 0x02,      /* <! ... > */
-    HTML_STRING    = 0x04,      /* " ... " */
-    HTML_STRING1   = 0x08,      /* ' ... ' */
-    HTML_TAG       = 0x10,      /* <tag ... > */
-    HTML_ENTITY    = 0x20,      /* &name[;] / &#123[;] */
-    HTML_SCRIPTTAG = 0x40,      /* <SCRIPT ...> */
-    HTML_SCRIPT    = 0x80,      /* <SCRIPT> [...] </SCRIPT> */
+    IN_HTML_COMMENT   = 0x01,      /* <!-- <> --> */
+    IN_HTML_COMMENT1  = 0x02,      /* <! ... > */
+    IN_HTML_STRING    = 0x04,      /* " ... " */
+    IN_HTML_STRING1   = 0x08,      /* ' ... ' */
+    IN_HTML_TAG       = 0x10,      /* <tag ... > */
+    IN_HTML_ENTITY    = 0x20,      /* &name[;] / &#123[;] */
+    IN_HTML_SCRIPTTAG = 0x40,      /* <SCRIPT ...> */
+    IN_HTML_SCRIPT    = 0x80,      /* <SCRIPT> [...] </SCRIPT> */
+};
+
+enum {
+    HTML_STYLE_PREPROCESS = QE_STYLE_PREPROCESS,
+    HTML_STYLE_SCRIPT     = QE_STYLE_HTML_SCRIPT,
+    HTML_STYLE_COMMENT    = QE_STYLE_HTML_COMMENT,
+    HTML_TYLE_ENTITY      = QE_STYLE_HTML_ENTITY,
+    HTML_STYLE_STRING     = QE_STYLE_HTML_STRING,
+    HTML_STYLE_TAG        = QE_STYLE_HTML_TAG,
+    //HTML_STYLE_TEXT       = QE_STYLE_HTML_TEXT,
 };
 
 void htmlsrc_colorize_line(unsigned int *buf, int len, int mode_flags,
@@ -80,7 +90,7 @@
     /* Kludge for preprocessed html */
     if (*p == '#') {
         p = p_end;
-        set_color(p_start, p, QE_STYLE_PREPROCESS);
+        set_color(p_start, p, HTML_STYLE_PREPROCESS);
         goto the_end;
     }
 
@@ -88,113 +98,113 @@
         p_start = p;
         c = *p;
 
-        if (state & HTML_SCRIPTTAG) {
+        if (state & IN_HTML_SCRIPTTAG) {
             while (p < p_end) {
                 if (*p++ == '>') {
-                    state = HTML_SCRIPT;
+                    state = IN_HTML_SCRIPT;
                     break;
                 }
             }
-            set_color(p_start, p, QE_STYLE_HTML_SCRIPT);
+            set_color(p_start, p, HTML_STYLE_SCRIPT);
             continue;
         }
-        if (state & HTML_SCRIPT) {
+        if (state & IN_HTML_SCRIPT) {
             for (; p < p_end; p++) {
                 if (*p == '<' && ustristart(p, "</script>", NULL))
                     break;
             }
-            js_state = state & ~HTML_SCRIPT;
+            js_state = state & ~IN_HTML_SCRIPT;
             c = *p;     /* save char to set '\0' delimiter */
             *p = '\0';
             /* XXX: should have javascript specific colorize_func */
             c_colorize_line(p_start, p - p_start, CLANG_JS | CLANG_REGEX,
                             &js_state, state_only);
             *p = c;
-            state = js_state | HTML_SCRIPT;
+            state = js_state | IN_HTML_SCRIPT;
             if (p < p_end) {
                 p_start = p;
                 p += strlen("</script>");
                 state = 0;
-                set_color(p_start, p, QE_STYLE_HTML_SCRIPT);
+                set_color(p_start, p, HTML_STYLE_SCRIPT);
             }
             continue;
         }
-        if (state & HTML_COMMENT) {
+        if (state & IN_HTML_COMMENT) {
             for (; p < p_end; p++) {
                 if (*p == '-' && p[1] == '-' && p[2] == '>') {
                     p += 2;
-                    state &= ~HTML_COMMENT;
+                    state &= ~IN_HTML_COMMENT;
                     break;
                 }
             }
-            set_color(p_start, p, QE_STYLE_HTML_COMMENT);
+            set_color(p_start, p, HTML_STYLE_COMMENT);
             continue;
         }
-        if (state & HTML_COMMENT1) {
+        if (state & IN_HTML_COMMENT1) {
             for (; p < p_end; p++) {
                 if (*p == '>') {
                     p++;
-                    state &= ~HTML_COMMENT1;
+                    state &= ~IN_HTML_COMMENT1;
                     break;
                 }
             }
-            set_color(p_start, p, QE_STYLE_HTML_COMMENT);
+            set_color(p_start, p, HTML_STYLE_COMMENT);
             continue;
         }
-        if (state & HTML_ENTITY) {
+        if (state & IN_HTML_ENTITY) {
             if ((l = get_html_entity(p)) == 0)
                 p++;
             else
                 p += l;
-            state &= ~HTML_ENTITY;
-            set_color(p_start, p, QE_STYLE_HTML_ENTITY);
+            state &= ~IN_HTML_ENTITY;
+            set_color(p_start, p, HTML_TYLE_ENTITY);
             continue;
         }
-        if (state & (HTML_STRING|HTML_STRING1)) {
-            char delim = (char)((state & HTML_STRING1) ? '\'' : '\"');
+        if (state & (IN_HTML_STRING | IN_HTML_STRING1)) {
+            char delim = (char)((state & IN_HTML_STRING1) ? '\'' : '\"');
 
             for (; p < p_end; p++) {
                 if (*p == '&' && get_html_entity(p)) {
-                    state |= HTML_ENTITY;
+                    state |= IN_HTML_ENTITY;
                     break;
                 }
                 if (*p == delim) {
                     p++;
-                    state &= ~(HTML_STRING|HTML_STRING1);
+                    state &= ~(IN_HTML_STRING | IN_HTML_STRING1);
                     break;
                 }
                 /* Premature end of string */
                 if (*p == '>') {
-                    state &= ~(HTML_STRING|HTML_STRING1);
+                    state &= ~(IN_HTML_STRING | IN_HTML_STRING1);
                     break;
                 }
             }
-            set_color(p_start, p, QE_STYLE_HTML_STRING);
+            set_color(p_start, p, HTML_STYLE_STRING);
             continue;
         }
-        if (state & HTML_TAG) {
+        if (state & IN_HTML_TAG) {
             for (; p < p_end; p++) {
                 if (*p == '&' && get_html_entity(p)) {
-                    state |= HTML_ENTITY;
+                    state |= IN_HTML_ENTITY;
                     break;
                 }
                 if (*p == '\"') {
-                    state |= HTML_STRING;
+                    state |= IN_HTML_STRING;
                     break;
                 }
                 if (*p == '\'') {
-                    state |= HTML_STRING1;
+                    state |= IN_HTML_STRING1;
                     break;
                 }
                 if (*p == '>') {
                     p++;
-                    state &= ~HTML_TAG;
+                    state &= ~IN_HTML_TAG;
                     break;
                 }
             }
-            set_color(p_start, p, QE_STYLE_HTML_TAG);
-            if (state & (HTML_STRING|HTML_STRING1)) {
-                set_color1(p, QE_STYLE_HTML_STRING);
+            set_color(p_start, p, HTML_STYLE_TAG);
+            if (state & (IN_HTML_STRING | IN_HTML_STRING1)) {
+                set_color1(p, HTML_STYLE_STRING);
                 p++;
             }
             continue;
@@ -204,31 +214,31 @@
             if (*p == '<'
             &&  (qe_isalpha(p[1])
             ||   p[1] == '!' || p[1] == '/' || p[1] == '?')) {
-                //set_color(p_start, p, QE_STYLE_HTML_TEXT);
+                //set_color(p_start, p, HTML_STYLE_TEXT);
                 p_start = p;
                 if (ustristart(p, "<script", NULL)) {
-                    state |= HTML_SCRIPTTAG;
+                    state |= IN_HTML_SCRIPTTAG;
                     break;
                 }
                 if (p[1] == '!') {
-                    state |= HTML_COMMENT1;
+                    state |= IN_HTML_COMMENT1;
                     p += 2;
                     if (*p == '-' && p[1] == '-') {
                         p += 2;
-                        state |= HTML_COMMENT;
+                        state |= IN_HTML_COMMENT;
                     }
-                    set_color(p_start, p, QE_STYLE_HTML_COMMENT);
+                    set_color(p_start, p, HTML_STYLE_COMMENT);
                     p_start = p;
                 } else
-                    state |= HTML_TAG;
+                    state |= IN_HTML_TAG;
                 break;
             }
             if (*p == '&' && get_html_entity(p)) {
-                state |= HTML_ENTITY;
+                state |= IN_HTML_ENTITY;
                 break;
             }
         }
-        //set_color(p_start, p - p_start, QE_STYLE_HTML_TEXT);
+        //set_color(p_start, p - p_start, HTML_STYLE_TEXT);
     }
  the_end:
     *colorize_state_ptr = state;

Index: markdown.c
===================================================================
RCS file: /sources/qemacs/qemacs/markdown.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- markdown.c  24 Mar 2014 10:58:10 -0000      1.9
+++ markdown.c  2 Apr 2014 12:58:13 -0000       1.10
@@ -23,59 +23,48 @@
 ModeDef mkd_mode;
 
 enum {
-    QE_STYLE_MKD_HEADING1 = QE_STYLE_FUNCTION,
-    QE_STYLE_MKD_HEADING2 = QE_STYLE_STRING,
-    QE_STYLE_MKD_HEADING3 = QE_STYLE_VARIABLE,
-    QE_STYLE_MKD_HEADING4 = QE_STYLE_TYPE,
-    QE_STYLE_MKD_TILDE = QE_STYLE_PREPROCESS,
-    QE_STYLE_MKD_COMMENT = QE_STYLE_COMMENT,
-    QE_STYLE_MKD_BLOCK_QUOTE = QE_STYLE_FUNCTION,
-    QE_STYLE_MKD_TABLE = QE_STYLE_TYPE,
-    QE_STYLE_MKD_HBAR = QE_STYLE_VARIABLE,
-    QE_STYLE_MKD_STRONG2 = QE_STYLE_FUNCTION,
-    QE_STYLE_MKD_STRONG1 = QE_STYLE_FUNCTION,
-    QE_STYLE_MKD_EMPHASIS2 = QE_STYLE_VARIABLE,
-    QE_STYLE_MKD_EMPHASIS1 = QE_STYLE_VARIABLE,
-    QE_STYLE_MKD_CODE = QE_STYLE_STRING,
-    QE_STYLE_MKD_IMAGE_LINK = QE_STYLE_KEYWORD,
-    QE_STYLE_MKD_REF_LINK = QE_STYLE_KEYWORD,
-    QE_STYLE_MKD_DLIST = QE_STYLE_NUMBER,
-    QE_STYLE_MKD_LIST = QE_STYLE_NUMBER,
-
-#if 0
-QE_STYLE_COMMENT,
-QE_STYLE_PREPROCESS,
-QE_STYLE_STRING,
-QE_STYLE_STRING_Q,
-QE_STYLE_KEYWORD,
-QE_STYLE_NUMBER,
-QE_STYLE_FUNCTION,
-QE_STYLE_VARIABLE,
-QE_STYLE_TYPE,
-QE_STYLE_TAG,
-#endif
+    /* TODO: define specific styles */
+    MKD_STYLE_HEADING1    = QE_STYLE_FUNCTION,
+    MKD_STYLE_HEADING2    = QE_STYLE_STRING,
+    MKD_STYLE_HEADING3    = QE_STYLE_VARIABLE,
+    MKD_STYLE_HEADING4    = QE_STYLE_TYPE,
+    MKD_STYLE_TILDE       = QE_STYLE_PREPROCESS,
+    MKD_STYLE_COMMENT     = QE_STYLE_COMMENT,
+    MKD_STYLE_BLOCK_QUOTE = QE_STYLE_FUNCTION,
+    MKD_STYLE_TABLE       = QE_STYLE_TYPE,
+    MKD_STYLE_HBAR        = QE_STYLE_VARIABLE,
+    MKD_STYLE_STRONG2     = QE_STYLE_FUNCTION,
+    MKD_STYLE_STRONG1     = QE_STYLE_FUNCTION,
+    MKD_STYLE_EMPHASIS2   = QE_STYLE_VARIABLE,
+    MKD_STYLE_EMPHASIS1   = QE_STYLE_VARIABLE,
+    MKD_STYLE_CODE        = QE_STYLE_STRING,
+    MKD_STYLE_IMAGE_LINK  = QE_STYLE_KEYWORD,
+    MKD_STYLE_REF_LINK    = QE_STYLE_KEYWORD,
+    MKD_STYLE_DLIST       = QE_STYLE_NUMBER,
+    MKD_STYLE_LIST        = QE_STYLE_NUMBER,
 };
 
-#define IN_HTML_BLOCK  0x8000
-#define IN_BLOCK       0x4000
-#define IN_LANG        0x3800
-#define IN_C           0x0800
-#define IN_PYTHON      0x1000
-#define IN_RUBY        0x1800
-#define IN_HASKELL     0x2000
-#define IN_LUA         0x2800
-#define IN_LEVEL       0x0700
-#define LEVEL_SHIFT  8
-
-#define MAX_LEVEL       128
-
-/* TODO: define specific styles */
-#define BULLET_STYLES 4
-static int MkdBulletStyles[BULLET_STYLES] = {
-    QE_STYLE_MKD_HEADING1,
-    QE_STYLE_MKD_HEADING2,
-    QE_STYLE_MKD_HEADING3,
-    QE_STYLE_MKD_HEADING4,
+enum {
+    IN_MKD_HTML_BLOCK = 0x8000,
+    IN_MKD_BLOCK      = 0x4000,
+    IN_MKD_LANG       = 0x3800,
+    IN_MKD_C          = 0x0800,
+    IN_MKD_PYTHON     = 0x1000,
+    IN_MKD_RUBY       = 0x1800,
+    IN_MKD_HASKELL    = 0x2000,
+    IN_MKD_LUA        = 0x2800,
+    IN_MKD_LEVEL      = 0x0700,
+};
+
+#define MKD_LEVEL_SHIFT  8
+#define MKD_MAX_LEVEL    128
+
+#define MKD_BULLET_STYLES  4
+static int MkdBulletStyles[MKD_BULLET_STYLES] = {
+    MKD_STYLE_HEADING1,
+    MKD_STYLE_HEADING2,
+    MKD_STYLE_HEADING3,
+    MKD_STYLE_HEADING4,
 };
 
 static int mkd_scan_chunk(const unsigned int *str,
@@ -108,55 +97,55 @@
     int colstate = *statep;
     int level, indent, i = 0, j = 0, base_style = 0;
 
-    if (colstate & IN_HTML_BLOCK) {
+    if (colstate & IN_MKD_HTML_BLOCK) {
         if (str[i] != '<' && str[i] != '\0' && !qe_isblank(str[i]))
-            colstate &= ~IN_HTML_BLOCK;
+            colstate &= ~IN_MKD_HTML_BLOCK;
     }
 
-    if ((colstate & IN_HTML_BLOCK)
+    if ((colstate & IN_MKD_HTML_BLOCK)
     ||  (str[i] == '<' && str[i + 1] != '/')) {
         /* block level HTML markup */
-        colstate &= ~IN_HTML_BLOCK;
+        colstate &= ~IN_MKD_HTML_BLOCK;
         htmlsrc_colorize_line(str, n, 0, &colstate, state_only);
-        colstate |= IN_HTML_BLOCK;
+        colstate |= IN_MKD_HTML_BLOCK;
         if ((str[i] & CHAR_MASK) == '<' && (str[i + 1] & CHAR_MASK) == '/')
             colstate = 0;
         *statep = colstate;
         return;
     }
 
-    if (colstate & IN_BLOCK) {
+    if (colstate & IN_MKD_BLOCK) {
         /* Should count number of ~ to detect end of block */
         if (ustrstart(str + i, "~~~", NULL)
         ||  ustrstart(str + i, "```", NULL)) {
-            colstate &= ~(IN_BLOCK | IN_LANG);
-            SET_COLOR(str, i, n, QE_STYLE_MKD_TILDE);
+            colstate &= ~(IN_MKD_BLOCK | IN_MKD_LANG);
+            SET_COLOR(str, i, n, MKD_STYLE_TILDE);
             i = n;
         } else {
-            int lang = colstate & IN_LANG;
-            colstate &= ~(IN_BLOCK | IN_LANG);
+            int lang = colstate & IN_MKD_LANG;
+            colstate &= ~(IN_MKD_BLOCK | IN_MKD_LANG);
             switch (lang) {
-            case IN_C:
+            case IN_MKD_C:
                 c_colorize_line(str, n, CLANG_C, &colstate, state_only);
                 break;
-            case IN_PYTHON:
+            case IN_MKD_PYTHON:
                 python_colorize_line(str, n, 0, &colstate, state_only);
                 break;
-            case IN_RUBY:
+            case IN_MKD_RUBY:
                 ruby_colorize_line(str, n, 0, &colstate, state_only);
                 break;
-            case IN_HASKELL:
+            case IN_MKD_HASKELL:
                 haskell_colorize_line(str, n, 0, &colstate, state_only);
                 break;
-            case IN_LUA:
+            case IN_MKD_LUA:
                 lua_colorize_line(str, n, 0, &colstate, state_only);
                 break;
             default:
-                SET_COLOR(str, i, n, QE_STYLE_MKD_CODE);
+                SET_COLOR(str, i, n, MKD_STYLE_CODE);
                 break;
             }
-            colstate &= ~(IN_BLOCK | IN_LANG);
-            colstate |= (IN_BLOCK | lang);
+            colstate &= ~(IN_MKD_BLOCK | IN_MKD_LANG);
+            colstate |= (IN_MKD_BLOCK | lang);
         }
         *statep = colstate;
         return;
@@ -168,42 +157,42 @@
             continue;
 
         if (qe_isblank(str[j])) {
-            base_style = MkdBulletStyles[(j - i - 1) % BULLET_STYLES];
+            base_style = MkdBulletStyles[(j - i - 1) % MKD_BULLET_STYLES];
             SET_COLOR(str, i, j + 1, base_style);
             i = j + 1;
         }
     } else
     if (str[i] == '%') {
         /* pandoc extension: line comment */
-        SET_COLOR(str, i, n, QE_STYLE_MKD_COMMENT);
+        SET_COLOR(str, i, n, MKD_STYLE_COMMENT);
         i = n;
     } else
     if (str[i] == '>') {
         /* block quoting */
-        SET_COLOR(str, i, n, QE_STYLE_MKD_BLOCK_QUOTE);
+        SET_COLOR(str, i, n, MKD_STYLE_BLOCK_QUOTE);
         i = n;
     } else
     if (ustrstart(str + i, "~~~", NULL)
     ||  ustrstart(str + i, "```", NULL)) {
         /* verbatim block */
-        colstate |= IN_BLOCK;
+        colstate |= IN_MKD_BLOCK;
         if (ustrstr(str + i + 3, "c")
         ||  ustrstr(str + i + 3, "java")) {
-            colstate |= IN_C;
+            colstate |= IN_MKD_C;
         } else
         if (ustrstr(str + i + 3, "haskell")) {
-            colstate |= IN_HASKELL;
+            colstate |= IN_MKD_HASKELL;
         } else
         if (ustrstr(str + i + 3, "lua")) {
-            colstate |= IN_LUA;
+            colstate |= IN_MKD_LUA;
         } else
         if (ustrstr(str + i + 3, "python")) {
-            colstate |= IN_PYTHON;
+            colstate |= IN_MKD_PYTHON;
         } else
         if (ustrstr(str + i + 3, "ruby")) {
-            colstate |= IN_RUBY;
+            colstate |= IN_MKD_RUBY;
         }
-        SET_COLOR(str, i, n, QE_STYLE_MKD_TILDE);
+        SET_COLOR(str, i, n, MKD_STYLE_TILDE);
         i = n;
     } else
     if (str[i] == '-') {
@@ -211,7 +200,7 @@
         for (j = i + 1; str[j] == '-'; j++)
             continue;
         if (j == n) {
-            SET_COLOR(str, i, n, QE_STYLE_MKD_HEADING2);
+            SET_COLOR(str, i, n, MKD_STYLE_HEADING2);
             i = n;
         }
     } else
@@ -220,12 +209,12 @@
         for (j = i + 1; str[j] == '='; j++)
             continue;
         if (j == n) {
-            SET_COLOR(str, i, n, QE_STYLE_MKD_HEADING1);
+            SET_COLOR(str, i, n, MKD_STYLE_HEADING1);
             i = n;
         }
     } else
     if (str[i] == '|') {
-        base_style = QE_STYLE_MKD_TABLE;
+        base_style = MKD_STYLE_TABLE;
     }
 
     /* [X] unordered lists: /[-*+] / */
@@ -244,7 +233,7 @@
     /* [X] litteral chars: isolate them or escape them with \ */
     /*                 \ ` * _ { } [ ] ( ) # + - . ! */
 
-    level = (colstate & IN_LEVEL) >> LEVEL_SHIFT;
+    level = (colstate & IN_MKD_LEVEL) >> MKD_LEVEL_SHIFT;
     for (indent = 0;; i++) {
         if (str[i] == ' ')
             indent++;
@@ -264,7 +253,7 @@
 
         if (indent >= 4) {
             /* Should detect sequel lines in ordered/unordered lists */
-            SET_COLOR(str, i, n, QE_STYLE_MKD_CODE);
+            SET_COLOR(str, i, n, MKD_STYLE_CODE);
             i = n;
         }
     }
@@ -281,13 +270,13 @@
         }
         if (j == n && count >= 3) {
             /* Horizontal rule */
-            SET_COLOR(str, i, n, QE_STYLE_MKD_HBAR);
+            SET_COLOR(str, i, n, MKD_STYLE_HBAR);
             i = n;
         }
     }
 
     if (level) {
-        base_style = QE_STYLE_MKD_LIST;
+        base_style = MKD_STYLE_LIST;
     }
 
     if (qe_isdigit(str[i])) {
@@ -295,7 +284,7 @@
             continue;
         if (str[j] == '.' && qe_isblank(str[j + 1])) {
             level++;
-            base_style = QE_STYLE_MKD_DLIST;
+            base_style = MKD_STYLE_DLIST;
             SET_COLOR(str, i, j, base_style);
             i = j;
         }
@@ -303,7 +292,7 @@
     if ((str[i] == '-' || str[i] == '*' || str[i] == '+')
     &&  qe_isblank(str[i + 1])) {
         level++;
-        base_style = QE_STYLE_MKD_LIST;
+        base_style = MKD_STYLE_LIST;
         SET_COLOR(str, i, j, base_style);
         i = j;
     }
@@ -321,24 +310,24 @@
             break;
         case '*':  /* bold */
             if (str[i + 1] == '*') {
-                chunk_style = QE_STYLE_MKD_STRONG2;
+                chunk_style = MKD_STYLE_STRONG2;
                 chunk = mkd_scan_chunk(str + i, "**", "**", 1);
             } else {
-                chunk_style = QE_STYLE_MKD_STRONG1;
+                chunk_style = MKD_STYLE_STRONG1;
                 chunk = mkd_scan_chunk(str + i, "*", "*", 1);
             }
             break;
         case '_':  /* emphasis */
             if (str[i + 1] == '_') {
-                chunk_style = QE_STYLE_MKD_EMPHASIS2;
+                chunk_style = MKD_STYLE_EMPHASIS2;
                 chunk = mkd_scan_chunk(str + i, "__", "__", 1);
             } else {
-                chunk_style = QE_STYLE_MKD_EMPHASIS1;
+                chunk_style = MKD_STYLE_EMPHASIS1;
                 chunk = mkd_scan_chunk(str + i, "_", "_", 1);
             }
             break;
         case '`':  /* code */
-            chunk_style = QE_STYLE_MKD_CODE;
+            chunk_style = MKD_STYLE_CODE;
             if (str[i + 1] == '`') {
                 if (str[i + 2] == ' ') {
                     chunk = mkd_scan_chunk(str + i, "`` ", " ``", 1);
@@ -350,15 +339,15 @@
             }
             break;
         case '!':  /* image link ^[...: <...>] */
-            chunk_style = QE_STYLE_MKD_IMAGE_LINK;
+            chunk_style = MKD_STYLE_IMAGE_LINK;
             chunk = mkd_scan_chunk(str + i, "![", "]", 1);
             break;
         case '[':  /* link ^[...: <...>] */
-            chunk_style = QE_STYLE_MKD_REF_LINK;
+            chunk_style = MKD_STYLE_REF_LINK;
             chunk = mkd_scan_chunk(str + i, "[", "]", 1);
             break;
         case '<':  /* automatic link <http://address> */
-            chunk_style = QE_STYLE_MKD_REF_LINK;
+            chunk_style = MKD_STYLE_REF_LINK;
             chunk = mkd_scan_chunk(str + i, "<http", ">", 1);
             if (chunk)
                 break;
@@ -392,8 +381,8 @@
         }
     }
 
-    colstate &= ~IN_LEVEL;
-    colstate |= (level << LEVEL_SHIFT) & IN_LEVEL;
+    colstate &= ~IN_MKD_LEVEL;
+    colstate |= (level << MKD_LEVEL_SHIFT) & IN_MKD_LEVEL;
     *statep = colstate;
 }
 
@@ -480,12 +469,12 @@
 
 static void do_outline_next_vsible_heading(EditState *s)
 {
-    s->offset = mkd_next_heading(s, s->offset, MAX_LEVEL, NULL);
+    s->offset = mkd_next_heading(s, s->offset, MKD_MAX_LEVEL, NULL);
 }
 
 static void do_outline_previous_vsible_heading(EditState *s)
 {
-    s->offset = mkd_prev_heading(s, s->offset, MAX_LEVEL, NULL);
+    s->offset = mkd_prev_heading(s, s->offset, MKD_MAX_LEVEL, NULL);
 }
 
 static void do_outline_up_heading(EditState *s)
@@ -572,7 +561,7 @@
     if (offset < 0)
         return;
 
-    offset1 = mkd_next_heading(s, offset, subtree ? level : MAX_LEVEL, NULL);
+    offset1 = mkd_next_heading(s, offset, subtree ? level : MKD_MAX_LEVEL, 
NULL);
 
     /* XXX: if repeating last command, add subtree to region */
     if (qs->last_cmd_func != qs->this_cmd_func)
@@ -671,7 +660,7 @@
                 return;
             }
         }
-        offset = mkd_next_heading(s, offset, MAX_LEVEL, &level1);
+        offset = mkd_next_heading(s, offset, MKD_MAX_LEVEL, &level1);
         if (level1 <= level)
             break;
     }

Index: xml.c
===================================================================
RCS file: /sources/qemacs/qemacs/xml.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- xml.c       24 Mar 2014 10:58:10 -0000      1.16
+++ xml.c       2 Apr 2014 12:58:13 -0000       1.17
@@ -22,12 +22,18 @@
 
 /* colorization states */
 enum {
-    XML_TAG = 1,
-    XML_COMMENT,
-    XML_TAG_SCRIPT,
-    XML_TAG_STYLE,
-    XML_STYLE,
-    XML_SCRIPT = 0x80, /* special mode for inside a script, ored with c mode */
+    IN_XML_TAG = 1,
+    IN_XML_COMMENT,
+    IN_XML_TAG_SCRIPT,
+    IN_XML_TAG_STYLE,
+    IN_XML_STYLE,
+    IN_XML_SCRIPT = 0x80, /* special mode for inside a script, ored with c 
mode */
+};
+
+enum {
+    XML_STYLE_COMMENT = QE_STYLE_COMMENT,
+    XML_STYLE_TAG     = QE_STYLE_TAG,
+    XML_STYLE_CSS     = QE_STYLE_CSS,
 };
 
 static void xml_colorize_line(unsigned int *buf, int len, int mode_flags,
@@ -41,15 +47,15 @@
     p_start = p;
 
     /* if already in a state, go directly in the code parsing it */
-    if (state & XML_SCRIPT)
+    if (state & IN_XML_SCRIPT)
         goto parse_script;
     switch (state) {
-    case XML_COMMENT:
+    case IN_XML_COMMENT:
         goto parse_comment;
-    case XML_TAG:
-    case XML_TAG_SCRIPT:
+    case IN_XML_TAG:
+    case IN_XML_TAG_SCRIPT:
         goto parse_tag;
-    case XML_STYLE:
+    case IN_XML_STYLE:
         goto parse_style;
     default:
         break;
@@ -66,7 +72,7 @@
             p++;
             if (p[0] == '!' && p[1] == '-' && p[2] == '-') {
                 p += 3;
-                state = XML_COMMENT;
+                state = IN_XML_COMMENT;
                 /* wait until end of comment */
             parse_comment:
                 while (*p != '\0') {
@@ -78,24 +84,24 @@
                         p++;
                     }
                 }
-                set_color(p_start, p, QE_STYLE_COMMENT);
+                set_color(p_start, p, XML_STYLE_COMMENT);
             } else {
                 /* we are in a tag */
                 if (ustristart(p, "SCRIPT", (const unsigned int **)&p)) {
-                    state = XML_TAG_SCRIPT;
+                    state = IN_XML_TAG_SCRIPT;
                 } else
                 if (ustristart(p, "STYLE", (const unsigned int **)&p)) {
-                    state = XML_TAG_STYLE;
+                    state = IN_XML_TAG_STYLE;
                 }
             parse_tag:
                 while (*p != '\0') {
                     if (*p == '>') {
                         p++;
-                        if (state == XML_TAG_SCRIPT)
-                            state = XML_SCRIPT;
+                        if (state == IN_XML_TAG_SCRIPT)
+                            state = IN_XML_SCRIPT;
                         else
-                        if (state == XML_TAG_STYLE)
-                            state = XML_STYLE;
+                        if (state == IN_XML_TAG_STYLE)
+                            state = IN_XML_STYLE;
                         else
                             state = 0;
                         break;
@@ -103,18 +109,18 @@
                         p++;
                     }
                 }
-                set_color(p_start, p, QE_STYLE_TAG);
-                if (state == XML_SCRIPT) {
+                set_color(p_start, p, XML_STYLE_TAG);
+                if (state == IN_XML_SCRIPT) {
                     /* javascript coloring */
                     p_start = p;
                 parse_script:
                     for (;;) {
                         if (*p == '\0') {
-                            state &= ~XML_SCRIPT;
+                            state &= ~IN_XML_SCRIPT;
                             /* XXX: should have javascript specific 
colorize_func */
                             c_colorize_line(p_start, p - p_start,
                                 CLANG_C | CLANG_REGEX, &state, state_only);
-                            state |= XML_SCRIPT;
+                            state |= IN_XML_SCRIPT;
                             break;
                         } else
                         if (ustristart(p, "</SCRIPT", (const unsigned int 
**)&p1)) {
@@ -122,15 +128,15 @@
                                 if (*p1++ == '>')
                                     break;
                             }
-                            state &= ~XML_SCRIPT;
+                            state &= ~IN_XML_SCRIPT;
                             c = *p;
                             *p = '\0';
                             /* XXX: should have javascript specific 
colorize_func */
                             c_colorize_line(p_start, p - p_start,
                                 CLANG_C | CLANG_REGEX, &state, state_only);
                             *p = c;
-                            state |= XML_SCRIPT;
-                            set_color(p, p1, QE_STYLE_TAG);
+                            state |= IN_XML_SCRIPT;
+                            set_color(p, p1, XML_STYLE_TAG);
                             p = p1;
                             state = 0;
                             break;
@@ -139,13 +145,13 @@
                         }
                     }
                 } else
-                if (state == XML_STYLE) {
+                if (state == IN_XML_STYLE) {
                     /* stylesheet coloring */
                     p_start = p;
                 parse_style:
                     for (;;) {
                         if (*p == '\0') {
-                            set_color(p_start, p, QE_STYLE_CSS);
+                            set_color(p_start, p, XML_STYLE_CSS);
                             break;
                         } else
                         if (ustristart(p, "</STYLE", (const unsigned int 
**)&p1)) {
@@ -153,8 +159,8 @@
                                 if (*p1++ != '>')
                                     break;
                             }
-                            set_color(p_start, p, QE_STYLE_CSS);
-                            set_color(p, p1, QE_STYLE_TAG);
+                            set_color(p_start, p, XML_STYLE_CSS);
+                            set_color(p, p1, XML_STYLE_TAG);
                             p = p1;
                             state = 0;
                             break;

Index: script.c
===================================================================
RCS file: /sources/qemacs/qemacs/script.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- script.c    24 Mar 2014 10:58:10 -0000      1.7
+++ script.c    2 Apr 2014 12:58:13 -0000       1.8
@@ -23,13 +23,13 @@
 /*---------------- Shell script colors ----------------*/
 
 enum {
-    SCRIPT_TEXT =       QE_STYLE_DEFAULT,
-    SCRIPT_COMMENT =    QE_STYLE_COMMENT,
-    SCRIPT_PREPROCESS = QE_STYLE_PREPROCESS,
-    SCRIPT_COMMAND =    QE_STYLE_FUNCTION,
-    SCRIPT_VARIABLE =   QE_STYLE_TYPE,
-    SCRIPT_STRING =     QE_STYLE_STRING,
-    SCRIPT_BACKTICK =   QE_STYLE_STRING_Q,
+    SCRIPT_STYLE_TEXT =       QE_STYLE_DEFAULT,
+    SCRIPT_STYLE_COMMENT =    QE_STYLE_COMMENT,
+    SCRIPT_STYLE_PREPROCESS = QE_STYLE_PREPROCESS,
+    SCRIPT_STYLE_COMMAND =    QE_STYLE_FUNCTION,
+    SCRIPT_STYLE_VARIABLE =   QE_STYLE_TYPE,
+    SCRIPT_STYLE_STRING =     QE_STYLE_STRING,
+    SCRIPT_STYLE_BACKTICK =   QE_STYLE_STRING_Q,
 };
 
 static int script_var(const unsigned int *str, int j, int n)
@@ -47,25 +47,25 @@
 {
     int i = 0, j, style;
 
-    style = SCRIPT_COMMAND;
+    style = SCRIPT_STYLE_COMMAND;
 
     while (i < n) {
         switch (str[i]) {
         case '#':
             if (i > 0 && str[i - 1] == '$')
                 break;
-            style = SCRIPT_COMMENT;
+            style = SCRIPT_STYLE_COMMENT;
             if (str[i + 1] == '!')
-                style = SCRIPT_PREPROCESS;
+                style = SCRIPT_STYLE_PREPROCESS;
             SET_COLOR(str, i, n, style);
             i = n;
             continue;
         case '`':
-            style = SCRIPT_BACKTICK;
+            style = SCRIPT_STYLE_BACKTICK;
             goto has_string;
         case '\'':
         case '"':
-            style = SCRIPT_STRING;
+            style = SCRIPT_STYLE_STRING;
         has_string:
             /* parse string const */
             for (j = i + 1; j < n; j++) {
@@ -86,15 +86,15 @@
                 while (qe_isblank(str[j]))
                     j++;
                 if (str[j] == '=')
-                    style = SCRIPT_VARIABLE;
+                    style = SCRIPT_STYLE_VARIABLE;
                 SET_COLOR(str, i, j, style);
-                style = SCRIPT_TEXT;
+                style = SCRIPT_STYLE_TEXT;
                 i = j;
                 continue;
             }
             // Should support << syntax
             // Should support $ syntax
-            style = SCRIPT_TEXT;
+            style = SCRIPT_STYLE_TEXT;
             break;
         }
         i++;

Index: unihex.c
===================================================================
RCS file: /sources/qemacs/qemacs/unihex.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -b -r1.22 -r1.23
--- unihex.c    10 Feb 2014 03:24:35 -0000      1.22
+++ unihex.c    2 Apr 2014 12:58:13 -0000       1.23
@@ -21,6 +21,11 @@
 
 #include "qe.h"
 
+enum {
+    UNIHEX_STYLE_OFFSET = QE_STYLE_COMMENT,
+    UNIHEX_STYLE_DUMP   = QE_STYLE_FUNCTION,
+};
+
 static int unihex_mode_init(EditState *s, ModeSavedData *saved_data)
 {
     int c, maxc, offset, max_offset;
@@ -79,7 +84,7 @@
 
     display_bol(ds);
 
-    ds->style = QE_STYLE_COMMENT;
+    ds->style = UNIHEX_STYLE_OFFSET;
     display_printf(ds, -1, -1, "%08x ", offset);
     //int charpos = eb_get_char_offset(s->b, offset);
     //display_printf(ds, -1, -1, "%08x ", charpos);
@@ -95,7 +100,7 @@
     }
     pos[len] = offset;
 
-    ds->style = QE_STYLE_FUNCTION;
+    ds->style = UNIHEX_STYLE_DUMP;
 
     for (j = 0; j < disp_width; j++) {
         display_char(ds, -1, -1, ' ');

Index: hex.c
===================================================================
RCS file: /sources/qemacs/qemacs/hex.c,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -b -r1.37 -r1.38
--- hex.c       4 Feb 2014 22:47:31 -0000       1.37
+++ hex.c       2 Apr 2014 12:58:14 -0000       1.38
@@ -21,6 +21,11 @@
 
 #include "qe.h"
 
+enum {
+    HEX_STYLE_OFFSET = QE_STYLE_COMMENT,
+    HEX_STYLE_DUMP   = QE_STYLE_FUNCTION,
+};
+
 static int to_disp(int c)
 {
 #if 1
@@ -47,7 +52,7 @@
 
     display_bol(ds);
 
-    ds->style = QE_STYLE_COMMENT;
+    ds->style = HEX_STYLE_OFFSET;
     display_printf(ds, -1, -1, "%08x ", offset);
 
     ateof = 0;
@@ -57,7 +62,7 @@
 
     if (s->mode == &hex_mode) {
 
-        ds->style = QE_STYLE_FUNCTION;
+        ds->style = HEX_STYLE_DUMP;
 
         for (j = 0; j < s->disp_width; j++) {
             display_char(ds, -1, -1, ' ');

Index: makemode.c
===================================================================
RCS file: /sources/qemacs/qemacs/makemode.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- makemode.c  24 Mar 2014 10:58:10 -0000      1.14
+++ makemode.c  2 Apr 2014 12:58:20 -0000       1.15
@@ -22,33 +22,47 @@
 
 /*---------------- Makefile colors ----------------*/
 
-#define MAKEFILE_TEXT           QE_STYLE_DEFAULT
-#define MAKEFILE_COMMENT        QE_STYLE_COMMENT
-#define MAKEFILE_STRING         QE_STYLE_STRING
-#define MAKEFILE_PREPROCESS     QE_STYLE_PREPROCESS
-#define MAKEFILE_TARGET         QE_STYLE_FUNCTION
-#define MAKEFILE_VARIABLE       QE_STYLE_VARIABLE
-#define MAKEFILE_MACRO          QE_STYLE_TYPE
+/* grab an identifier from a uint buf, stripping color.
+ * return char count.
+ */
+static int get_word_lc(char *buf, int buf_size, unsigned int *p)
+{
+    unsigned int c;
+    int i, j;
+
+    i = j = 0;
+    c = p[i] & CHAR_MASK;
+    if (qe_isalpha_(c)) {
+        do {
+            if (j < buf_size - 1)
+                buf[j++] = qe_tolower(c);
+            i++;
+            c = p[i] & CHAR_MASK;
+        } while (qe_isalnum_(c));
+    }
+    buf[j] = '\0';
+    return i;
+}
+
+enum {
+    MAKEFILE_STYLE_TEXT       = QE_STYLE_DEFAULT,
+    MAKEFILE_STYLE_COMMENT    = QE_STYLE_COMMENT,
+    MAKEFILE_STYLE_STRING     = QE_STYLE_STRING,
+    MAKEFILE_STYLE_PREPROCESS = QE_STYLE_PREPROCESS,
+    MAKEFILE_STYLE_TARGET     = QE_STYLE_FUNCTION,
+    MAKEFILE_STYLE_VARIABLE   = QE_STYLE_VARIABLE,
+    MAKEFILE_STYLE_MACRO      = QE_STYLE_TYPE,
+};
 
 static void makefile_colorize_line(unsigned int *str, int n, int mode_flags,
                                    int *statep, int state_only)
 {
-    int i, j, level;
-
-    i = j = 0;
+    char buf[32];
+    int i = 0, j = i, level;
 
-    /* CG: should check for end of word */
-    if (str[0] == 'i') {
-        if (ustristart(str, "ifeq", NULL)
-        ||  ustristart(str, "ifneq", NULL)
-        ||  ustristart(str, "ifdef", NULL)
-        ||  ustristart(str, "ifndef", NULL)
-        ||  ustristart(str, "include", NULL))
-            goto preprocess;
-    } else
-    if (str[0] == 'e') {
-        if (ustristart(str, "else", NULL)
-        ||  ustristart(str, "endif", NULL))
+    if (qe_isalnum_(str[0])) {
+        get_word_lc(buf, countof(buf), str);
+        if (strfind("ifeq|ifneq|ifdef|ifndef|include|else|endif", buf))
             goto preprocess;
     }
 
@@ -73,7 +87,7 @@
                 }
             }
             if (i < j)
-                SET_COLOR(str, i, j, MAKEFILE_MACRO);
+                SET_COLOR(str, i, j, MAKEFILE_STYLE_MACRO);
             i = j;
             continue;
         case ' ':
@@ -89,18 +103,18 @@
                 break;
             if (str[i+1] == '=')
                 goto variable;
-            SET_COLOR(str, j, i, MAKEFILE_TARGET);
+            SET_COLOR(str, j, i, MAKEFILE_STYLE_TARGET);
             break;
         case '=':
             if (j)
                 break;
         variable:
-            SET_COLOR(str, j, i, MAKEFILE_VARIABLE);
+            SET_COLOR(str, j, i, MAKEFILE_STYLE_VARIABLE);
             break;
         case '#':
             if (i > 0 && str[i - 1] == '\\')
                 break;
-            SET_COLOR(str, i, n, MAKEFILE_COMMENT);
+            SET_COLOR(str, i, n, MAKEFILE_STYLE_COMMENT);
             i = n;
             continue;
         case '!':
@@ -113,7 +127,7 @@
                 if (str[j] == '#')
                     break;
             }
-            SET_COLOR(str, i, j, MAKEFILE_PREPROCESS);
+            SET_COLOR(str, i, j, MAKEFILE_STYLE_PREPROCESS);
             i = j;
             continue;
         case '\'':
@@ -126,7 +140,7 @@
                     break;
                 }
             }
-            SET_COLOR(str, i, j, MAKEFILE_STRING);
+            SET_COLOR(str, i, j, MAKEFILE_STYLE_STRING);
             i = j;
             continue;
         default:
@@ -136,14 +150,6 @@
     }
 }
 
-#undef MAKEFILE_TEXT
-#undef MAKEFILE_COMMENT
-#undef MAKEFILE_STRING
-#undef MAKEFILE_PREPROCESS
-#undef MAKEFILE_VARIABLE
-#undef MAKEFILE_TARGET
-#undef MAKEFILE_MACRO
-
 static int makefile_mode_probe(ModeDef *mode, ModeProbeData *p)
 {
     /* check file name or extension */

Index: perl.c
===================================================================
RCS file: /sources/qemacs/qemacs/perl.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- perl.c      24 Mar 2014 10:58:10 -0000      1.15
+++ perl.c      2 Apr 2014 12:58:23 -0000       1.16
@@ -22,20 +22,24 @@
 
 /*---------------- Perl colors ----------------*/
 
-#define PERL_TEXT       QE_STYLE_DEFAULT
-#define PERL_COMMENT    QE_STYLE_COMMENT
-#define PERL_STRING     QE_STYLE_STRING
-#define PERL_REGEX      QE_STYLE_STRING
-#define PERL_DELIM      QE_STYLE_KEYWORD
-#define PERL_KEYWORD    QE_STYLE_KEYWORD
-#define PERL_VAR        QE_STYLE_VARIABLE
-#define PERL_NUMBER     QE_STYLE_NUMBER
-
-#define IN_STRING1      0x01    /* single quote */
-#define IN_STRING2      0x02    /* double quote */
-#define IN_FORMAT       0x04    /* format = ... */
-#define IN_HEREDOC      0x08
-#define IN_POD          0x10
+enum {
+    PERL_STYLE_TEXT    = QE_STYLE_DEFAULT,
+    PERL_STYLE_COMMENT = QE_STYLE_COMMENT,
+    PERL_STYLE_STRING  = QE_STYLE_STRING,
+    PERL_STYLE_REGEX   = QE_STYLE_STRING,
+    PERL_STYLE_DELIM   = QE_STYLE_KEYWORD,
+    PERL_STYLE_KEYWORD = QE_STYLE_KEYWORD,
+    PERL_STYLE_VAR     = QE_STYLE_VARIABLE,
+    PERL_STYLE_NUMBER  = QE_STYLE_NUMBER,
+};
+
+enum {
+    IN_PERL_STRING1 = 0x01,    /* single quote */
+    IN_PERL_STRING2 = 0x02,    /* double quote */
+    IN_PERL_FORMAT  = 0x04,    /* format = ... */
+    IN_PERL_HEREDOC = 0x08,
+    IN_PERL_POD     = 0x10,
+};
 
 /* CG: bogus if multiple regions are colorized, should use signature */
 /* XXX: should move this to mode data */
@@ -106,43 +110,43 @@
     int i = 0, c, c1, c2, j = i, s1, s2, delim = 0;
     int colstate = *statep;
 
-    if (colstate & (IN_STRING1|IN_STRING2)) {
-        delim = (colstate & IN_STRING1) ? '\'' : '\"';
+    if (colstate & (IN_PERL_STRING1 | IN_PERL_STRING2)) {
+        delim = (colstate & IN_PERL_STRING1) ? '\'' : '\"';
         i = perl_string(str, delim, j, n);
         if (i < n) {
             i++;
-            colstate &= ~(IN_STRING1|IN_STRING2);
+            colstate &= ~(IN_PERL_STRING1 | IN_PERL_STRING2);
         }
-        SET_COLOR(str, j, i, PERL_STRING);
+        SET_COLOR(str, j, i, PERL_STYLE_STRING);
     } else
-    if (colstate & IN_FORMAT) {
+    if (colstate & IN_PERL_FORMAT) {
         i = n;
         if (n == 1 && str[0] == '.')
-            colstate &= ~IN_FORMAT;
-        SET_COLOR(str, j, i, PERL_STRING);
+            colstate &= ~IN_PERL_FORMAT;
+        SET_COLOR(str, j, i, PERL_STYLE_STRING);
     }
-    if (colstate & IN_HEREDOC) {
+    if (colstate & IN_PERL_HEREDOC) {
         i = n;
         if (n == perl_eos_len && !umemcmp(perl_eos, str, n)) {
-            colstate &= ~IN_HEREDOC;
-            SET_COLOR(str, j, i, PERL_KEYWORD);
+            colstate &= ~IN_PERL_HEREDOC;
+            SET_COLOR(str, j, i, PERL_STYLE_KEYWORD);
         } else {
-            SET_COLOR(str, j, i, PERL_STRING);
+            SET_COLOR(str, j, i, PERL_STYLE_STRING);
         }
     }
     if (str[i] == '=' && qe_isalpha(str[i + 1])) {
-        colstate |= IN_POD;
+        colstate |= IN_PERL_POD;
     }
-    if (colstate & IN_POD) {
+    if (colstate & IN_PERL_POD) {
         if (ustrstart(str + i, "=cut", NULL)) {
-            colstate &= ~IN_POD;
+            colstate &= ~IN_PERL_POD;
         }
         if (str[i] == '=' && qe_isalpha(str[i + 1])) {
             i = n;
-            SET_COLOR(str, j, i, PERL_KEYWORD);
+            SET_COLOR(str, j, i, PERL_STYLE_KEYWORD);
         } else {
             i = n;
-            SET_COLOR(str, j, i, PERL_COMMENT);
+            SET_COLOR(str, j, i, PERL_STYLE_COMMENT);
         }
     }
 
@@ -172,7 +176,7 @@
                 break;
             s1 = perl_var(str, j, n);
             if (s1 > j) {
-                SET_COLOR(str, i, s1, PERL_VAR);
+                SET_COLOR(str, i, s1, PERL_STYLE_VAR);
                 i = s1;
                 continue;
             }
@@ -188,7 +192,7 @@
             }
             break;
         case '#':
-            SET_COLOR(str, i, n, PERL_COMMENT);
+            SET_COLOR(str, i, n, PERL_STYLE_COMMENT);
             i = n;
             continue;
         case '<':
@@ -207,7 +211,7 @@
                     perl_eos_len = min((int)(s2 - s1), countof(perl_eos) - 1);
                     umemcpy(perl_eos, str + s1, perl_eos_len);
                     perl_eos[perl_eos_len] = '\0';
-                    colstate |= IN_HEREDOC;
+                    colstate |= IN_PERL_HEREDOC;
                 }
                 i += 2;
                 continue;
@@ -221,12 +225,12 @@
             s1 = perl_string(str, c, j, n);
             if (s1 >= n)
                 break;
-            SET_COLOR1(str, i, PERL_DELIM);
-            SET_COLOR(str, i + 1, s1, PERL_REGEX);
+            SET_COLOR1(str, i, PERL_STYLE_DELIM);
+            SET_COLOR(str, i + 1, s1, PERL_STYLE_REGEX);
             i = s1;
             while (++i < n && qe_isalpha(str[i]))
                 continue;
-            SET_COLOR(str, s1, i, PERL_DELIM);
+            SET_COLOR(str, s1, i, PERL_STYLE_DELIM);
             continue;
         case '\'':
         case '`':
@@ -237,15 +241,15 @@
             s1 = perl_string(str, delim, j, n);
             if (s1 >= n) {
                 if (c == '\'') {
-                    SET_COLOR(str, i, n, PERL_STRING);
+                    SET_COLOR(str, i, n, PERL_STYLE_STRING);
                     i = n;
-                    colstate |= IN_STRING1;
+                    colstate |= IN_PERL_STRING1;
                     continue;
                 }
                 if (c == '\"') {
-                    SET_COLOR(str, i, n, PERL_STRING);
+                    SET_COLOR(str, i, n, PERL_STYLE_STRING);
                     i = n;
-                    colstate |= IN_STRING2;
+                    colstate |= IN_PERL_STRING2;
                     continue;
                 }
                 /* ` string spanning more than one line treated as
@@ -254,7 +258,7 @@
                 break;
             }
             s1++;
-            SET_COLOR(str, i, s1, PERL_STRING);
+            SET_COLOR(str, i, s1, PERL_STYLE_STRING);
             i = s1;
             continue;
         case '.':
@@ -266,7 +270,7 @@
             if (qe_isdigit(c)) {
             number:
                 j = perl_number(str, i, n);
-                SET_COLOR(str, i, j, PERL_NUMBER);
+                SET_COLOR(str, i, j, PERL_STYLE_NUMBER);
                 i = j;
                 continue;
             }
@@ -286,12 +290,12 @@
                 s1 = perl_string(str, str[j], j + 1, n);
                 if (s1 >= n)
                     goto keyword;
-                SET_COLOR(str, i, j + 1, PERL_DELIM);
-                SET_COLOR(str, j + 1, s1, PERL_REGEX);
+                SET_COLOR(str, i, j + 1, PERL_STYLE_DELIM);
+                SET_COLOR(str, j + 1, s1, PERL_STYLE_REGEX);
                 i = s1;
                 while (++i < n && qe_isalpha(str[i]))
                     continue;
-                SET_COLOR(str, s1, i, PERL_DELIM);
+                SET_COLOR(str, s1, i, PERL_STYLE_DELIM);
                 continue;
             }
             /* Should check for context */
@@ -303,14 +307,14 @@
                 s2 = perl_string(str, str[j], s1 + 1, n);
                 if (s2 >= n)
                     goto keyword;
-                SET_COLOR(str, i, j + 1, PERL_DELIM);
-                SET_COLOR(str, j + 1, s1, PERL_REGEX);
-                SET_COLOR1(str, s1, PERL_DELIM);
-                SET_COLOR(str, s1 + 1, s2, PERL_REGEX);
+                SET_COLOR(str, i, j + 1, PERL_STYLE_DELIM);
+                SET_COLOR(str, j + 1, s1, PERL_STYLE_REGEX);
+                SET_COLOR1(str, s1, PERL_STYLE_DELIM);
+                SET_COLOR(str, s1 + 1, s2, PERL_STYLE_REGEX);
                 i = s2;
                 while (++i < n && qe_isalpha(str[i]))
                     continue;
-                SET_COLOR(str, s2, i, PERL_DELIM);
+                SET_COLOR(str, s2, i, PERL_STYLE_DELIM);
                 continue;
             }
         keyword:
@@ -321,10 +325,10 @@
                 }
                 if (s1 == i) {
                     /* keyword is first on line */
-                    colstate |= IN_FORMAT;
+                    colstate |= IN_PERL_FORMAT;
                 }
             }
-            SET_COLOR(str, i, j, PERL_KEYWORD);
+            SET_COLOR(str, i, j, PERL_STYLE_KEYWORD);
             i = j;
             continue;
         }
@@ -334,21 +338,6 @@
     *statep = colstate;
 }
 
-#undef PERL_TEXT
-#undef PERL_COMMENT
-#undef PERL_STRING
-#undef PERL_REGEX
-#undef PERL_DELIM
-#undef PERL_KEYWORD
-#undef PERL_VAR
-#undef PERL_NUMBER
-
-#undef IN_STRING1
-#undef IN_STRING2
-#undef IN_FORMAT
-#undef IN_HEREDOC
-#undef IN_POD
-
 static int perl_mode_probe(ModeDef *mode, ModeProbeData *p)
 {
     /* just check file extension */

Index: latex-mode.c
===================================================================
RCS file: /sources/qemacs/qemacs/latex-mode.c,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -b -r1.44 -r1.45
--- latex-mode.c        24 Mar 2014 10:58:10 -0000      1.44
+++ latex-mode.c        2 Apr 2014 12:58:23 -0000       1.45
@@ -22,6 +22,14 @@
 
 #include "qe.h"
 
+enum {
+    LATEX_STYLE_COMMENT  = QE_STYLE_COMMENT,
+    LATEX_STYLE_STRING   = QE_STYLE_STRING,
+    LATEX_STYLE_FUNCTION = QE_STYLE_FUNCTION,
+    LATEX_STYLE_KEYWORD  = QE_STYLE_KEYWORD,
+    LATEX_STYLE_VARIABLE = QE_STYLE_VARIABLE,
+};
+
 /* TODO: add state handling to allow colorization of elements longer
  * than one line (eg, multi-line functions and strings)
  */
@@ -61,7 +69,7 @@
                         break;
                     }
                 }
-                set_color(p_start, p, QE_STYLE_STRING);
+                set_color(p_start, p, LATEX_STYLE_STRING);
             }
             break;
         case '\\':
@@ -73,7 +81,7 @@
                 while (*p != '\0' && *p != '{' && *p != '[' && *p != ' ' && *p 
!= '\\')
                     p++;
             }
-            set_color(p_start, p, QE_STYLE_FUNCTION);
+            set_color(p_start, p, LATEX_STYLE_FUNCTION);
             while (*p == ' ' || *p == '\t') {
                 /* skip space */
                 p++;
@@ -84,7 +92,7 @@
                     p_start = p;
                     while (*p != '\0' && *p != ']')
                         p++;
-                    set_color(p_start, p, QE_STYLE_KEYWORD);
+                    set_color(p_start, p, LATEX_STYLE_KEYWORD);
                     if (*p == ']')
                         p++;
                 } else {
@@ -101,7 +109,7 @@
                         }
                         p++;
                     }
-                    set_color(p_start, p, QE_STYLE_VARIABLE);
+                    set_color(p_start, p, LATEX_STYLE_VARIABLE);
                     if (*p == '}')
                         p++;
                 }
@@ -116,7 +124,7 @@
             /* line comment */
             while (*p != '\0')
                 p++;
-            set_color(p_start, p, QE_STYLE_COMMENT);
+            set_color(p_start, p, LATEX_STYLE_COMMENT);
             break;
         default:
             p++;

Index: lisp.c
===================================================================
RCS file: /sources/qemacs/qemacs/lisp.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- lisp.c      24 Mar 2014 10:58:10 -0000      1.8
+++ lisp.c      2 Apr 2014 12:58:24 -0000       1.9
@@ -24,12 +24,16 @@
 
 /*---------------- Lisp colors ----------------*/
 
-#define IN_COMMENT      0x01
-#define IN_STRING       0x02
+enum {
+    IN_LISP_COMMENT = 0x01,
+    IN_LISP_STRING  = 0x02,
+};
 
-#define LISP_TEXT       QE_STYLE_DEFAULT
-#define LISP_COMMENT    QE_STYLE_COMMENT
-#define LISP_STRING     QE_STYLE_STRING
+enum {
+    LISP_STYLE_TEXT    = QE_STYLE_DEFAULT,
+    LISP_STYLE_COMMENT = QE_STYLE_COMMENT,
+    LISP_STYLE_STRING  = QE_STYLE_STRING,
+};
 
 static void lisp_colorize_line(unsigned int *str, int n, int mode_flags,
                                int *statep, __unused__ int state_only)
@@ -37,62 +41,62 @@
     int colstate = *statep;
     int i = 0, j = 0;
 
-    if (colstate & IN_STRING) {
+    if (colstate & IN_LISP_STRING) {
         for (j = i; j < n;) {
             if (str[j] == '\\' && ++j < n) {
                 j++;
             } else
             if (str[j++] == '"') {
-                colstate &= ~IN_STRING;
+                colstate &= ~IN_LISP_STRING;
                 break;
             }
         }
-        SET_COLOR(str, i, j, LISP_STRING);
+        SET_COLOR(str, i, j, LISP_STYLE_STRING);
         i = j;
     }
-    if (colstate & IN_COMMENT) {
+    if (colstate & IN_LISP_COMMENT) {
         for (j = i; j < n; j++) {
             if (str[j] == '|' && j + 1 < n && str[j + 1] == '#') {
                 j += 2;
-                colstate &= ~IN_COMMENT;
+                colstate &= ~IN_LISP_COMMENT;
                 break;
             }
         }
-        SET_COLOR(str, i, j, LISP_COMMENT);
+        SET_COLOR(str, i, j, LISP_STYLE_COMMENT);
         i = j;
     }
     while (i < n) {
         switch (str[i]) {
         case ';':
-            SET_COLOR(str, i, n, LISP_COMMENT);
+            SET_COLOR(str, i, n, LISP_STYLE_COMMENT);
             i = n;
             continue;
         case '#':
             /* check for block comment */
             if (str[i + 1] == '|') {
-                colstate |= IN_COMMENT;
+                colstate |= IN_LISP_COMMENT;
                 for (j = i + 2; j < n; j++) {
                     if (str[j] == '|' && str[j + 1] == '#') {
                         j += 2;
-                        colstate &= ~IN_COMMENT;
+                        colstate &= ~IN_LISP_COMMENT;
                         break;
                     }
                 }
-                SET_COLOR(str, i, j, LISP_COMMENT);
+                SET_COLOR(str, i, j, LISP_STYLE_COMMENT);
                 i = j;
                 continue;
             }
             break;
         case '"':
             /* parse string const */
-            colstate |= IN_STRING;
+            colstate |= IN_LISP_STRING;
             for (j = i + 1; j < n;) {
                 if (str[j++] == '"') {
-                    colstate &= ~IN_STRING;
+                    colstate &= ~IN_LISP_STRING;
                     break;
                 }
             }
-            SET_COLOR(str, i, j, LISP_STRING);
+            SET_COLOR(str, i, j, LISP_STYLE_STRING);
             i = j;
             continue;
         default:
@@ -103,12 +107,6 @@
     *statep = colstate;
 }
 
-#undef IN_STRING
-#undef IN_COMMENT
-#undef LISP_TEXT
-#undef LISP_COMMENT
-#undef LISP_STRING
-
 static int lisp_mode_probe(ModeDef *mode, ModeProbeData *p)
 {
     /* check file name or extension */

Index: orgmode.c
===================================================================
RCS file: /sources/qemacs/qemacs/orgmode.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- orgmode.c   24 Mar 2014 10:58:10 -0000      1.17
+++ orgmode.c   2 Apr 2014 12:58:24 -0000       1.18
@@ -24,9 +24,26 @@
 
 ModeDef org_mode;
 
-#define IN_BLOCK       0x80
-#define IN_LISP        0x40
-#define IN_TABLE       0x20
+enum {
+    IN_ORG_BLOCK = 0x80,
+    IN_ORG_LISP  = 0x40,
+    IN_ORG_TABLE = 0x20,
+};
+
+enum {
+    ORG_STYLE_TODO       = QE_STYLE_STRING,
+    ORG_STYLE_DONE       = QE_STYLE_TYPE,
+    ORG_STYLE_BULLET1    = QE_STYLE_FUNCTION,
+    ORG_STYLE_BULLET2    = QE_STYLE_STRING,
+    ORG_STYLE_BULLET3    = QE_STYLE_VARIABLE,
+    ORG_STYLE_BULLET4    = QE_STYLE_TYPE,
+    ORG_STYLE_COMMENT    = QE_STYLE_COMMENT,
+    ORG_STYLE_PREPROCESS = QE_STYLE_PREPROCESS,
+    ORG_STYLE_CODE       = QE_STYLE_FUNCTION,
+    ORG_STYLE_PROPERTY   = QE_STYLE_KEYWORD,
+    ORG_STYLE_TABLE      = QE_STYLE_TYPE,
+    ORG_STYLE_EMPHASIS   = QE_STYLE_STRING,
+};
 
 #define MAX_LEVEL       128
 
@@ -35,17 +52,17 @@
     const char *keyword;
     int style;
 } OrgTodoKeywords [] = {
-    { "TODO", QE_STYLE_STRING },
-    { "DONE", QE_STYLE_TYPE },
+    { "TODO", ORG_STYLE_TODO },
+    { "DONE", ORG_STYLE_DONE },
 };
 
 /* TODO: define specific styles */
 #define BULLET_STYLES 5
 static int OrgBulletStyles[BULLET_STYLES] = {
-    QE_STYLE_FUNCTION,
-    QE_STYLE_STRING,
-    QE_STYLE_VARIABLE,
-    QE_STYLE_TYPE,
+    ORG_STYLE_BULLET1,
+    ORG_STYLE_BULLET2,
+    ORG_STYLE_BULLET3,
+    ORG_STYLE_BULLET4,
 };
 
 static int org_todo_keyword(const unsigned int *str)
@@ -90,16 +107,16 @@
     int colstate = *statep;
     int i = 0, j = 0, kw, base_style = 0, has_space;
 
-    if (colstate & IN_BLOCK) {
+    if (colstate & IN_ORG_BLOCK) {
         for (j = i; str[j] == ' '; )
             j++;
         if (ustristart(str + j, "#+end_", NULL)) {
-            colstate &= ~(IN_BLOCK | IN_LISP);
+            colstate &= ~(IN_ORG_BLOCK | IN_ORG_LISP);
         } else {
-            if (colstate & IN_LISP) {
-                colstate &= ~(IN_LISP | IN_BLOCK);
+            if (colstate & IN_ORG_LISP) {
+                colstate &= ~(IN_ORG_LISP | IN_ORG_BLOCK);
                 lisp_mode.colorize_func(str, n, 0, &colstate, state_only);
-                colstate |= IN_LISP | IN_BLOCK;
+                colstate |= IN_ORG_LISP | IN_ORG_BLOCK;
             }
             *statep = colstate;
             return;
@@ -129,7 +146,7 @@
 
         if (str[i] == '#') {
             if (str[i + 1] == ' ') {  /* [ \t]*[#][ ] -> comment */
-                SET_COLOR(str, i, n, QE_STYLE_COMMENT);
+                SET_COLOR(str, i, n, ORG_STYLE_COMMENT);
                 i = n;
             } else
             if (str[i + 1] == '+') {  /* [ \t]*[#][+] -> metadata */
@@ -139,23 +156,23 @@
                  * #+BEGIN_SRC / #+END_SRC
                  */
                 if (ustristart(str + i, "#+begin_", NULL)) {
-                    colstate |= IN_BLOCK;
+                    colstate |= IN_ORG_BLOCK;
                     if (ustristr(str + i, "lisp")) {
-                        colstate |= IN_LISP;
+                        colstate |= IN_ORG_LISP;
                     }
                 }
-                SET_COLOR(str, i, n, QE_STYLE_PREPROCESS);
+                SET_COLOR(str, i, n, ORG_STYLE_PREPROCESS);
                 i = n;
             }
         } else
         if (str[i] == ':') {
             if (str[i + 1] == ' ') {
                 /* code snipplet, should use code colorizer */
-                SET_COLOR(str, i, n, QE_STYLE_FUNCTION);
+                SET_COLOR(str, i, n, ORG_STYLE_CODE);
                 i = n;
             } else {
                 /* property */
-                SET_COLOR(str, i, n, QE_STYLE_KEYWORD);
+                SET_COLOR(str, i, n, ORG_STYLE_PROPERTY);
                 i = n;
             }
         } else
@@ -163,8 +180,8 @@
             /* five or more dashes indicate a horizontal bar */
         } else
         if (str[i] == '|') {
-            colstate |= IN_TABLE;
-            base_style = QE_STYLE_TYPE;
+            colstate |= IN_ORG_TABLE;
+            base_style = ORG_STYLE_TABLE;
         }
     }
 
@@ -258,7 +275,7 @@
             has_space = (str[i] == ' ');
         }
         if (chunk) {
-            SET_COLOR(str, i, i + chunk, QE_STYLE_STRING);
+            SET_COLOR(str, i, i + chunk, ORG_STYLE_EMPHASIS);
             i += chunk;
         } else {
             SET_COLOR1(str, i, base_style);
@@ -266,7 +283,7 @@
         }
     }
 
-    colstate &= ~IN_TABLE;
+    colstate &= ~IN_ORG_TABLE;
     *statep = colstate;
 }
 

Index: extra-modes.c
===================================================================
RCS file: /sources/qemacs/qemacs/extra-modes.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- extra-modes.c       24 Mar 2014 10:58:09 -0000      1.10
+++ extra-modes.c       2 Apr 2014 12:58:24 -0000       1.11
@@ -71,12 +71,12 @@
 /* colstate is used to store the comment character */
 
 enum {
-    ASM_TEXT =        QE_STYLE_DEFAULT,
-    ASM_PREPROCESS =  QE_STYLE_PREPROCESS,
-    ASM_COMMENT =     QE_STYLE_COMMENT,
-    ASM_STRING =      QE_STYLE_STRING,
-    ASM_NUMBER =      QE_STYLE_NUMBER,
-    ASM_IDENTIFIER =  QE_STYLE_VARIABLE,
+    ASM_STYLE_TEXT =        QE_STYLE_DEFAULT,
+    ASM_STYLE_PREPROCESS =  QE_STYLE_PREPROCESS,
+    ASM_STYLE_COMMENT =     QE_STYLE_COMMENT,
+    ASM_STYLE_STRING =      QE_STYLE_STRING,
+    ASM_STYLE_NUMBER =      QE_STYLE_NUMBER,
+    ASM_STYLE_IDENTIFIER =  QE_STYLE_VARIABLE,
 };
 
 static void asm_colorize_line(unsigned int *str, int n, int mode_flags,
@@ -97,7 +97,7 @@
                 break;
             }
         }
-        SET_COLOR(str, w, i, ASM_COMMENT);
+        SET_COLOR(str, w, i, ASM_STYLE_COMMENT);
     }
     for (w = i; i < n && qe_isspace(str[i]); i++)
         continue;
@@ -113,11 +113,11 @@
                 if (str[j] == ';')
                     break;
             }
-            SET_COLOR(str, i, j, ASM_PREPROCESS);
+            SET_COLOR(str, i, j, ASM_STYLE_PREPROCESS);
             i = j;
             continue;
         case ';':
-            SET_COLOR(str, i, n, ASM_COMMENT);
+            SET_COLOR(str, i, n, ASM_STYLE_COMMENT);
             i = n;
             continue;
         case '\'':
@@ -129,7 +129,7 @@
                     break;
                 }
             }
-            SET_COLOR(str, i, j, ASM_STRING);
+            SET_COLOR(str, i, j, ASM_STYLE_STRING);
             i = j;
             continue;
         default:
@@ -141,7 +141,7 @@
                 if (!qe_isalnum(str[j]))
                     break;
             }
-            SET_COLOR(str, i, j, ASM_NUMBER);
+            SET_COLOR(str, i, j, ASM_STYLE_NUMBER);
             i = j;
             continue;
         }
@@ -163,7 +163,7 @@
                             break;
                     }
                     colstate = str[w];
-                    SET_COLOR(str, i, w, ASM_PREPROCESS);
+                    SET_COLOR(str, i, w, ASM_STYLE_PREPROCESS);
                     i = w + 1;
                     goto comment;
                 }
@@ -172,12 +172,12 @@
             } else
             if (wn == 2) {
                 if (is_lc_keyword(str, i, j, asm_prepkeywords2)) {
-                    SET_COLOR(str, i, j, ASM_PREPROCESS);
+                    SET_COLOR(str, i, j, ASM_STYLE_PREPROCESS);
                     i = j;
                     continue;
                 }
             }
-            SET_COLOR(str, i, j, ASM_IDENTIFIER);
+            SET_COLOR(str, i, j, ASM_STYLE_IDENTIFIER);
             i = j;
             continue;
         }
@@ -238,12 +238,12 @@
 };
 
 enum {
-    BASIC_TEXT =        QE_STYLE_DEFAULT,
-    BASIC_KEYWORD =     QE_STYLE_KEYWORD,
-    BASIC_PREPROCESS =  QE_STYLE_PREPROCESS,
-    BASIC_COMMENT =     QE_STYLE_COMMENT,
-    BASIC_STRING =      QE_STYLE_STRING,
-    BASIC_IDENTIFIER =  QE_STYLE_VARIABLE,
+    BASIC_STYLE_TEXT =        QE_STYLE_DEFAULT,
+    BASIC_STYLE_KEYWORD =     QE_STYLE_KEYWORD,
+    BASIC_STYLE_PREPROCESS =  QE_STYLE_PREPROCESS,
+    BASIC_STYLE_COMMENT =     QE_STYLE_COMMENT,
+    BASIC_STYLE_STRING =      QE_STYLE_STRING,
+    BASIC_STYLE_IDENTIFIER =  QE_STYLE_VARIABLE,
 };
 
 static void basic_colorize_line(unsigned int *str, int n, int mode_flags,
@@ -255,9 +255,9 @@
         switch (str[i]) {
         case '\'':
             if (str[i + 1] == '$')
-                SET_COLOR(str, i, n, BASIC_PREPROCESS);
+                SET_COLOR(str, i, n, BASIC_STYLE_PREPROCESS);
             else
-                SET_COLOR(str, i, n, BASIC_COMMENT);
+                SET_COLOR(str, i, n, BASIC_STYLE_COMMENT);
             i = n;
             continue;
         case '\"':
@@ -268,7 +268,7 @@
                     break;
                 }
             }
-            SET_COLOR(str, i, j, BASIC_STRING);
+            SET_COLOR(str, i, j, BASIC_STYLE_STRING);
             i = j;
             continue;
         default:
@@ -280,7 +280,7 @@
                 if (!qe_isalnum(str[j]) && str[j] != '.')
                     break;
             }
-            SET_COLOR(str, i, j, BASIC_IDENTIFIER);
+            SET_COLOR(str, i, j, BASIC_STYLE_IDENTIFIER);
             i = j;
             continue;
         }
@@ -294,11 +294,11 @@
                 }
             }
             if (is_lc_keyword(str, i, j, basic_keywords)) {
-                SET_COLOR(str, i, j, BASIC_KEYWORD);
+                SET_COLOR(str, i, j, BASIC_STYLE_KEYWORD);
                 i = j;
                 continue;
             }
-            SET_COLOR(str, i, j, BASIC_IDENTIFIER);
+            SET_COLOR(str, i, j, BASIC_STYLE_IDENTIFIER);
             i = j;
             continue;
         }
@@ -352,19 +352,21 @@
     "|"
 };
 
-#define IN_COMMENT      0x01
-#define IN_COMMENT1     0x02
-#define IN_COMMENT2     0x04
+enum {
+    IN_PASCAL_COMMENT  = 0x01,
+    IN_PASCAL_COMMENT1 = 0x02,
+    IN_PASCAL_COMMENT2 = 0x04,
+};
 
 enum {
-    PAS_TEXT =        QE_STYLE_DEFAULT,
-    PAS_KEYWORD =     QE_STYLE_KEYWORD,
-    PAS_PREPROCESS =  QE_STYLE_PREPROCESS,
-    PAS_COMMENT =     QE_STYLE_COMMENT,
-    PAS_STRING =      QE_STYLE_STRING,
-    PAS_IDENTIFIER =  QE_STYLE_VARIABLE,
-    PAS_NUMBER =      QE_STYLE_NUMBER,
-    PAS_FUNCTION =    QE_STYLE_FUNCTION,
+    PASCAL_STYLE_TEXT =       QE_STYLE_DEFAULT,
+    PASCAL_STYLE_KEYWORD =    QE_STYLE_KEYWORD,
+    PASCAL_STYLE_PREPROCESS = QE_STYLE_PREPROCESS,
+    PASCAL_STYLE_COMMENT =    QE_STYLE_COMMENT,
+    PASCAL_STYLE_STRING =     QE_STYLE_STRING,
+    PASCAL_STYLE_IDENTIFIER = QE_STYLE_VARIABLE,
+    PASCAL_STYLE_NUMBER =     QE_STYLE_NUMBER,
+    PASCAL_STYLE_FUNCTION =   QE_STYLE_FUNCTION,
 };
 
 static void pascal_colorize_line(unsigned int *str, int n, int mode_flags,
@@ -373,20 +375,20 @@
     int i = 0, j = i, k;
     int colstate =  *statep;
 
-    if (colstate & IN_COMMENT)
+    if (colstate & IN_PASCAL_COMMENT)
         goto in_comment;
 
-    if (colstate & IN_COMMENT1)
+    if (colstate & IN_PASCAL_COMMENT1)
         goto in_comment1;
 
-    if (colstate & IN_COMMENT2)
+    if (colstate & IN_PASCAL_COMMENT2)
         goto in_comment2;
 
     while (i < n) {
         switch (str[i]) {
         case '/':
             if (str[i + 1] == '/') {    /* C++ comments, recent extension */
-                SET_COLOR(str, i, n, PAS_COMMENT);
+                SET_COLOR(str, i, n, PASCAL_STYLE_COMMENT);
                 i = n;
                 continue;
             }
@@ -394,7 +396,7 @@
         case '{':
             /* check for preprocessor */
             if (str[i + 1] == '$') {
-                colstate = IN_COMMENT1;
+                colstate = IN_PASCAL_COMMENT1;
                 j = i + 2;
             in_comment1:
                 for (; j < n; j++) {
@@ -404,11 +406,11 @@
                         break;
                     }
                 }
-                SET_COLOR(str, i, j, PAS_PREPROCESS);
+                SET_COLOR(str, i, j, PASCAL_STYLE_PREPROCESS);
             } else
             {
                 /* regular comment (recursive?) */
-                colstate = IN_COMMENT;
+                colstate = IN_PASCAL_COMMENT;
                 j = i + 1;
             in_comment:
                 for (; j < n; j++) {
@@ -418,7 +420,7 @@
                         break;
                     }
                 }
-                SET_COLOR(str, i, j, PAS_COMMENT);
+                SET_COLOR(str, i, j, PASCAL_STYLE_COMMENT);
             }
             i = j;
             continue;
@@ -428,7 +430,7 @@
                 break;
 
             /* regular comment (recursive?) */
-            colstate = IN_COMMENT2;
+            colstate = IN_PASCAL_COMMENT2;
             j = i + 2;
         in_comment2:
             for (; j < n; j++) {
@@ -438,7 +440,7 @@
                     break;
                 }
             }
-            SET_COLOR(str, i, j, PAS_COMMENT);
+            SET_COLOR(str, i, j, PASCAL_STYLE_COMMENT);
             i = j;
             continue;
         case '\'':
@@ -449,7 +451,7 @@
                     break;
                 }
             }
-            SET_COLOR(str, i, j, PAS_STRING);
+            SET_COLOR(str, i, j, PASCAL_STYLE_STRING);
             i = j;
             continue;
         case '#':
@@ -458,7 +460,7 @@
                 if (!qe_isdigit(str[j]))
                     break;
             }
-            SET_COLOR(str, i, j, PAS_STRING);
+            SET_COLOR(str, i, j, PASCAL_STYLE_STRING);
             i = j;
             continue;
         default:
@@ -470,7 +472,7 @@
                 if (!qe_isalnum(str[j]) && str[j] != '.')
                     break;
             }
-            SET_COLOR(str, i, j, PAS_NUMBER);
+            SET_COLOR(str, i, j, PASCAL_STYLE_NUMBER);
             i = j;
             continue;
         }
@@ -481,16 +483,17 @@
                     break;
             }
             if (is_lc_keyword(str, i, j, pascal_keywords)) {
-                SET_COLOR(str, i, j, PAS_KEYWORD);
+                SET_COLOR(str, i, j, PASCAL_STYLE_KEYWORD);
                 i = j;
                 continue;
             }
             for (k = j; k < n; k++) {
-                if (str[k] != ' ' && str[k] != '\t')
+                if (!qe_isblank(str[k]))
                     break;
             }
             SET_COLOR(str, i, j,
-                      str[k] == '(' ? PAS_FUNCTION : PAS_IDENTIFIER);
+                      str[k] == '(' ? PASCAL_STYLE_FUNCTION :
+                      PASCAL_STYLE_IDENTIFIER);
             i = j;
             continue;
         }
@@ -500,10 +503,6 @@
     *statep = colstate;
 }
 
-#undef IN_COMMENT2
-#undef IN_COMMENT1
-#undef IN_COMMENT
-
 static int pascal_mode_probe(ModeDef *mode, ModeProbeData *p)
 {
     if (match_extension(p->filename, mode->extensions))
@@ -536,13 +535,13 @@
 /*---------------- Ini file (and similar) coloring ----------------*/
 
 enum {
-    INI_TEXT =        QE_STYLE_DEFAULT,
-    INI_COMMENT =     QE_STYLE_COMMENT,
-    INI_STRING =      QE_STYLE_STRING,
-    INI_FUNCTION =    QE_STYLE_FUNCTION,
-    INI_NUMBER =      QE_STYLE_NUMBER,
-    INI_IDENTIFIER =  QE_STYLE_VARIABLE,
-    INI_PREPROCESS =  QE_STYLE_PREPROCESS,
+    INI_STYLE_TEXT =       QE_STYLE_DEFAULT,
+    INI_STYLE_COMMENT =    QE_STYLE_COMMENT,
+    INI_STYLE_STRING =     QE_STYLE_STRING,
+    INI_STYLE_FUNCTION =   QE_STYLE_FUNCTION,
+    INI_STYLE_NUMBER =     QE_STYLE_NUMBER,
+    INI_STYLE_IDENTIFIER = QE_STYLE_VARIABLE,
+    INI_STYLE_PREPROCESS = QE_STYLE_PREPROCESS,
 };
 
 static void ini_colorize_line(unsigned int *str, int n, int mode_flags,
@@ -556,18 +555,18 @@
         case ';':
             if (!bol)
                 break;
-            SET_COLOR(str, i, n, INI_COMMENT);
+            SET_COLOR(str, i, n, INI_STYLE_COMMENT);
             i = n;
             continue;
         case '#':
             if (!bol)
                 break;
-            SET_COLOR(str, i, n, INI_PREPROCESS);
+            SET_COLOR(str, i, n, INI_STYLE_PREPROCESS);
             i = n;
             continue;
         case '[':
             if (i == 0) {
-                SET_COLOR(str, i, n, INI_FUNCTION);
+                SET_COLOR(str, i, n, INI_STYLE_FUNCTION);
                 i = n;
                 continue;
             }
@@ -580,7 +579,7 @@
                     break;
                 }
             }
-            SET_COLOR(str, i, j, INI_STRING);
+            SET_COLOR(str, i, j, INI_STYLE_STRING);
             i = j;
             continue;
         default:
@@ -597,7 +596,7 @@
                 if (!qe_isalnum(str[j]))
                     break;
             }
-            SET_COLOR(str, i, j, INI_NUMBER);
+            SET_COLOR(str, i, j, INI_STYLE_NUMBER);
             i = j;
             continue;
         }
@@ -610,7 +609,7 @@
                     break;
             }
             if (j < n) {
-                SET_COLOR(str, i, j, INI_IDENTIFIER);
+                SET_COLOR(str, i, j, INI_STYLE_IDENTIFIER);
                 i = j;
                 continue;
             } else {
@@ -680,15 +679,17 @@
 
 /*---------------- PostScript colors ----------------*/
 
-#define IN_STRING       0x0F            /* ( ... ) level */
-#define IN_COMMENT      0x10
+enum {
+    IN_PS_STRING  = 0x0F            /* ( ... ) level */,
+    IN_PS_COMMENT = 0x10,
+};
 
 enum {
-    PS_TEXT =         QE_STYLE_DEFAULT,
-    PS_COMMENT =      QE_STYLE_COMMENT,
-    PS_STRING =       QE_STYLE_STRING,
-    PS_NUMBER =       QE_STYLE_DEFAULT,
-    PS_IDENTIFIER =   QE_STYLE_FUNCTION,
+    PS_STYLE_TEXT =       QE_STYLE_DEFAULT,
+    PS_STYLE_COMMENT =    QE_STYLE_COMMENT,
+    PS_STYLE_STRING =     QE_STYLE_STRING,
+    PS_STYLE_NUMBER =     QE_STYLE_DEFAULT,
+    PS_STYLE_IDENTIFIER = QE_STYLE_FUNCTION,
 };
 
 #define ispssep(c)      (qe_findchar(" \t\r\n,()<>[]{}/", c))
@@ -700,10 +701,10 @@
     int i = 0, j;
     int colstate = *statep;
 
-    if (colstate & IN_COMMENT)
+    if (colstate & IN_PS_COMMENT)
         goto in_comment;
 
-    if (colstate & IN_STRING)
+    if (colstate & IN_PS_STRING)
         goto in_string;
 
     colstate = 0;
@@ -714,10 +715,10 @@
         case '%':
         in_comment:
             if (wrap)
-                colstate |= IN_COMMENT;
+                colstate |= IN_PS_COMMENT;
             else
-                colstate &= ~IN_COMMENT;
-            SET_COLOR(str, i, n, PS_COMMENT);
+                colstate &= ~IN_PS_COMMENT;
+            SET_COLOR(str, i, n, PS_STYLE_COMMENT);
             i = n;
             continue;
         case '(':
@@ -730,7 +731,7 @@
                     continue;
                 case ')':
                     colstate--;
-                    if (!(colstate & IN_STRING))
+                    if (!(colstate & IN_PS_STRING))
                         break;
                     continue;
                 case '\\':
@@ -743,7 +744,7 @@
                 }
                 break;
             }
-            SET_COLOR(str, i, j, PS_STRING);
+            SET_COLOR(str, i, j, PS_STYLE_STRING);
             i = j;
             continue;
         default:
@@ -755,7 +756,7 @@
                 if (!qe_isalnum(str[j]) && str[j] != '.')
                     break;
             }
-            SET_COLOR(str, i, j, PS_NUMBER);
+            SET_COLOR(str, i, j, PS_STYLE_NUMBER);
             i = j;
             continue;
         }
@@ -765,7 +766,7 @@
                 if (ispssep(str[j]))
                     break;
             }
-            SET_COLOR(str, i, j, PS_IDENTIFIER);
+            SET_COLOR(str, i, j, PS_STYLE_IDENTIFIER);
             i = j;
             continue;
         }
@@ -775,9 +776,6 @@
     *statep = colstate;
 }
 
-#undef IN_STRING
-#undef IN_COMMENT
-
 static int ps_mode_probe(ModeDef *mode, ModeProbeData *p)
 {
     if (match_extension(p->filename, mode->extensions))
@@ -812,14 +810,16 @@
 
 /*---------------- SQL script coloring ----------------*/
 
-#define IN_COMMENT  1
+enum {
+    IN_SQL_COMMENT = 1,
+};
 
 enum {
-    SQL_TEXT =         QE_STYLE_DEFAULT,
-    SQL_COMMENT =      QE_STYLE_COMMENT,
-    SQL_STRING =       QE_STYLE_STRING,
-    SQL_IDENTIFIER =   QE_STYLE_KEYWORD,
-    SQL_PREPROCESS =   QE_STYLE_PREPROCESS,
+    SQL_STYLE_TEXT =       QE_STYLE_DEFAULT,
+    SQL_STYLE_COMMENT =    QE_STYLE_COMMENT,
+    SQL_STYLE_STRING =     QE_STYLE_STRING,
+    SQL_STYLE_IDENTIFIER = QE_STYLE_KEYWORD,
+    SQL_STYLE_PREPROCESS = QE_STYLE_PREPROCESS,
 };
 
 static void sql_colorize_line(unsigned int *str, int n, int mode_flags,
@@ -828,7 +828,7 @@
     int i = 0, j = i;
     int state = *statep;
 
-    if (state & IN_COMMENT)
+    if (state & IN_SQL_COMMENT)
         goto parse_c_comment;
 
     while (i < n) {
@@ -840,11 +840,11 @@
                 /* normal comment */
                 j = i + 2;
             parse_c_comment:
-                state |= IN_COMMENT;
+                state |= IN_SQL_COMMENT;
                 while (j < n) {
                     if (str[j] == '*' && str[j + 1] == '/') {
                         j += 2;
-                        state &= ~IN_COMMENT;
+                        state &= ~IN_SQL_COMMENT;
                         break;
                     } else {
                         j++;
@@ -861,7 +861,7 @@
         line_comment:
             j = n;
         comment:
-            SET_COLOR(str, i, j, SQL_COMMENT);
+            SET_COLOR(str, i, j, SQL_STYLE_COMMENT);
             i = j;
             continue;
         case '\'':
@@ -879,7 +879,8 @@
                     break;
                 }
             }
-            SET_COLOR(str, i, j, str[i] == '`' ? SQL_IDENTIFIER : SQL_STRING);
+            SET_COLOR(str, i, j,
+                      str[i] == '`' ? SQL_STYLE_IDENTIFIER : SQL_STYLE_STRING);
             i = j;
             continue;
         default:
@@ -891,8 +892,6 @@
     *statep = state;
 }
 
-#undef IN_COMMENT
-
 static int sql_mode_probe(ModeDef *mode, ModeProbeData *p)
 {
     if (match_extension(p->filename, mode->extensions))
@@ -936,20 +935,22 @@
 };
 #endif
 
-#define IN_COMMENT   0x10
-#define IN_STRING    0x20
-#define IN_STRING2   0x40
-#define IN_LONGLIT   0x80
-#define IN_LEVEL     0x0F
+enum {
+    IN_LUA_COMMENT = 0x10,
+    IN_LUA_STRING  = 0x20,
+    IN_LUA_STRING2 = 0x40,
+    IN_LUA_LONGLIT = 0x80,
+    IN_LUA_LEVEL   = 0x0F,
+};
 
 enum {
-    LUA_TEXT =         QE_STYLE_DEFAULT,
-    LUA_COMMENT =      QE_STYLE_COMMENT,
-    LUA_STRING =       QE_STYLE_STRING,
-    LUA_LONGLIT =      QE_STYLE_STRING,
-    LUA_NUMBER =       QE_STYLE_NUMBER,
-    LUA_KEYWORD =      QE_STYLE_KEYWORD,
-    LUA_FUNCTION =     QE_STYLE_FUNCTION,
+    LUA_STYLE_TEXT =     QE_STYLE_DEFAULT,
+    LUA_STYLE_COMMENT =  QE_STYLE_COMMENT,
+    LUA_STYLE_STRING =   QE_STYLE_STRING,
+    LUA_STYLE_LONGLIT =  QE_STYLE_STRING,
+    LUA_STYLE_NUMBER =   QE_STYLE_NUMBER,
+    LUA_STYLE_KEYWORD =  QE_STYLE_KEYWORD,
+    LUA_STYLE_FUNCTION = QE_STYLE_FUNCTION,
 };
 
 static int lua_long_bracket(unsigned int *str, int *level)
@@ -973,18 +974,18 @@
     int state = *statep;
     char kbuf[32];
 
-    if (state & IN_LONGLIT) {
+    if (state & IN_LUA_LONGLIT) {
         /* either a comment or a string */
-        level = state & IN_LEVEL;
+        level = state & IN_LUA_LEVEL;
         goto parse_longlit;
     }
 
-    if (state & IN_STRING) {
+    if (state & IN_LUA_STRING) {
         sep = '\'';
         state = 0;
         goto parse_string;
     }
-    if (state & IN_STRING2) {
+    if (state & IN_LUA_STRING2) {
         sep = '\"';
         state = 0;
         goto parse_string;
@@ -996,10 +997,10 @@
             if (str[i + 1] == '-') {
                 if (str[i + 2] == '['
                 &&  lua_long_bracket(str + i + 2, &level)) {
-                    state = IN_COMMENT | IN_LONGLIT | (level & IN_LEVEL);
+                    state = IN_LUA_COMMENT | IN_LUA_LONGLIT | (level & 
IN_LUA_LEVEL);
                     goto parse_longlit;
                 }
-                SET_COLOR(str, i, n, LUA_COMMENT);
+                SET_COLOR(str, i, n, LUA_STYLE_COMMENT);
                 i = n;
                 continue;
             }
@@ -1015,11 +1016,11 @@
                 if (c == '\\') {
                     if (str[j] == 'z' && j + 1 == n) {
                         /* XXX: partial support for \z */
-                        state = (sep == '\'') ? IN_STRING : IN_STRING2;
+                        state = (sep == '\'') ? IN_LUA_STRING : IN_LUA_STRING2;
                         j += 1;
                     } else
                     if (j == n) {
-                        state = (sep == '\'') ? IN_STRING : IN_STRING2;
+                        state = (sep == '\'') ? IN_LUA_STRING : IN_LUA_STRING2;
                     } else {
                         j += 1;
                     }
@@ -1028,17 +1029,18 @@
                     break;
                 }
             }
-            SET_COLOR(str, i, j, LUA_STRING);
+            SET_COLOR(str, i, j, LUA_STYLE_STRING);
             i = j;
             continue;
         case '[':
             if (lua_long_bracket(str + i, &level)) {
-                state = IN_LONGLIT | (level & IN_LEVEL);
+                state = IN_LUA_LONGLIT | (level & IN_LUA_LEVEL);
                 goto parse_longlit;
             }
             break;
         parse_longlit:
-            style = (state & IN_COMMENT) ? LUA_COMMENT : LUA_LONGLIT;
+            style = (state & IN_LUA_COMMENT) ?
+                    LUA_STYLE_COMMENT : LUA_STYLE_LONGLIT;
             for (j = i; j < n; j++) {
                 if (str[j] != ']')
                     continue;
@@ -1058,7 +1060,7 @@
                     if (!qe_isalnum(str[j] && str[j] != '.'))
                         break;
                 }
-                SET_COLOR(str, i, j, LUA_NUMBER);
+                SET_COLOR(str, i, j, LUA_STYLE_NUMBER);
                 i = j;
                 continue;
             }
@@ -1070,14 +1072,14 @@
                 kbuf[klen] = '\0';
 
                 if (strfind(lua_keywords, kbuf)) {
-                    SET_COLOR(str, i, j, LUA_KEYWORD);
+                    SET_COLOR(str, i, j, LUA_STYLE_KEYWORD);
                     i = j;
                     continue;
                 }
                 while (qe_isblank(str[j]))
                     j++;
                 if (str[j] == '(') {
-                    SET_COLOR(str, i, j, LUA_FUNCTION);
+                    SET_COLOR(str, i, j, LUA_STYLE_FUNCTION);
                     i = j;
                     continue;
                 }
@@ -1092,12 +1094,6 @@
     *statep = state;
 }
 
-#undef IN_COMMENT
-#undef IN_STRING
-#undef IN_STRING2
-#undef IN_LONGLIT
-#undef IN_LEVEL
-
 static int lua_mode_probe(ModeDef *mode, ModeProbeData *p)
 {
     if (match_extension(p->filename, mode->extensions))
@@ -1136,18 +1132,20 @@
     "|"
 };
 
-#define IN_COMMENT   0x10
-#define IN_STRING    0x20
-#define IN_LEVEL     0x0F
+enum {
+    IN_HASKELL_COMMENT = 0x10,
+    IN_HASKELL_STRING  = 0x20,
+    IN_HASKELL_LEVEL   = 0x0F,
+};
 
 enum {
-    HASKELL_TEXT =         QE_STYLE_DEFAULT,
-    HASKELL_COMMENT =      QE_STYLE_COMMENT,
-    HASKELL_STRING =       QE_STYLE_STRING,
-    HASKELL_NUMBER =       QE_STYLE_NUMBER,
-    HASKELL_KEYWORD =      QE_STYLE_KEYWORD,
-    HASKELL_FUNCTION =     QE_STYLE_FUNCTION,
-    HASKELL_SYMBOL =       QE_STYLE_NUMBER,
+    HASKELL_STYLE_TEXT =     QE_STYLE_DEFAULT,
+    HASKELL_STYLE_COMMENT =  QE_STYLE_COMMENT,
+    HASKELL_STYLE_STRING =   QE_STYLE_STRING,
+    HASKELL_STYLE_NUMBER =   QE_STYLE_NUMBER,
+    HASKELL_STYLE_KEYWORD =  QE_STYLE_KEYWORD,
+    HASKELL_STYLE_FUNCTION = QE_STYLE_FUNCTION,
+    HASKELL_STYLE_SYMBOL =   QE_STYLE_NUMBER,
 };
 
 static inline int haskell_is_symbol(int c)
@@ -1162,10 +1160,10 @@
     int state = *statep;
     char kbuf[32];
 
-    if (state & IN_COMMENT)
+    if (state & IN_HASKELL_COMMENT)
         goto parse_comment;
 
-    if (state & IN_STRING) {
+    if (state & IN_HASKELL_STRING) {
         sep = '\"';
         state = 0;
         while (qe_isspace(str[j]))
@@ -1179,14 +1177,14 @@
         switch (c = str[i]) {
         case '-':
             if (str[i + 1] == '-' && !haskell_is_symbol(str[i + 2])) {
-                SET_COLOR(str, i, n, HASKELL_COMMENT);
+                SET_COLOR(str, i, n, HASKELL_STYLE_COMMENT);
                 i = n;
                 continue;
             }
             goto parse_symbol;
         case '{':
             if (str[i + 1] == '-') {
-                state |= IN_COMMENT;
+                state |= IN_HASKELL_COMMENT;
                 goto parse_comment;
             }
             /* FALL THRU */
@@ -1202,7 +1200,7 @@
             break;
             
         parse_comment:
-            level = state & IN_LEVEL;
+            level = state & IN_HASKELL_LEVEL;
             for (j = i; j < n; j++) {
                 if (str[i] == '{' && str[i + 1] == '-') {
                     level++;
@@ -1214,14 +1212,14 @@
                     level--;
                     if (level == 0) {
                         j++;
-                        state &= ~IN_COMMENT;
+                        state &= ~IN_HASKELL_COMMENT;
                         break;
                     }
                 }
             }
-            state &= ~IN_COMMENT;
-            state |= level & IN_COMMENT;
-            SET_COLOR(str, i, j, HASKELL_COMMENT);
+            state &= ~IN_HASKELL_COMMENT;
+            state |= level & IN_HASKELL_COMMENT;
+            SET_COLOR(str, i, j, HASKELL_STYLE_COMMENT);
             i = j;
             continue;
 
@@ -1237,7 +1235,7 @@
                     if (j == n) {
                         if (sep == '\"') {
                             /* XXX: should ignore whitespace */
-                            state = IN_STRING;
+                            state = IN_HASKELL_STRING;
                         }
                     } else
                     if (str[j] == '^' && j + 1 < n && str[j + 1] != sep) {
@@ -1250,7 +1248,7 @@
                     break;
                 }
             }
-            SET_COLOR(str, i, j, HASKELL_STRING);
+            SET_COLOR(str, i, j, HASKELL_STYLE_STRING);
             i = j;
             continue;
 
@@ -1286,7 +1284,7 @@
                     }
                 }
                 /* XXX: should detect malformed number constants */
-                SET_COLOR(str, i, j, HASKELL_NUMBER);
+                SET_COLOR(str, i, j, HASKELL_STYLE_NUMBER);
                 i = j;
                 continue;
             }
@@ -1300,14 +1298,14 @@
                 kbuf[klen] = '\0';
 
                 if (strfind(haskell_keywords, kbuf)) {
-                    SET_COLOR(str, i, j, HASKELL_KEYWORD);
+                    SET_COLOR(str, i, j, HASKELL_STYLE_KEYWORD);
                     i = j;
                     continue;
                 }
                 while (qe_isblank(str[j]))
                     j++;
                 if (str[j] == '(') {
-                    SET_COLOR(str, i, j, HASKELL_FUNCTION);
+                    SET_COLOR(str, i, j, HASKELL_STYLE_FUNCTION);
                     i = j;
                     continue;
                 }
@@ -1318,7 +1316,7 @@
             if (haskell_is_symbol(c)) {
                 for (j = i + 1; haskell_is_symbol(str[j]); j++)
                     continue;
-                SET_COLOR(str, i, j, HASKELL_SYMBOL);
+                SET_COLOR(str, i, j, HASKELL_STYLE_SYMBOL);
                 i = j;
                 continue;
             }
@@ -1330,10 +1328,6 @@
     *statep = state;
 }
 
-#undef IN_COMMENT
-#undef IN_STRING
-#undef IN_LEVEL
-
 static int haskell_mode_probe(ModeDef *mode, ModeProbeData *p)
 {
     if (match_extension(p->filename, mode->extensions))
@@ -1373,20 +1367,22 @@
     "|"
 };
 
-#define IN_COMMENT       0x80
-#define IN_STRING        0x40
-#define IN_STRING2       0x20
-#define IN_LONG_STRING   0x10
-#define IN_LONG_STRING2  0x08
-#define IN_RAW_STRING    0x04
+enum {
+    IN_PYTHON_COMMENT      = 0x80,
+    IN_PYTHON_STRING       = 0x40,
+    IN_PYTHON_STRING2      = 0x20,
+    IN_PYTHON_LONG_STRING  = 0x10,
+    IN_PYTHON_LONG_STRING2 = 0x08,
+    IN_PYTHON_RAW_STRING   = 0x04,
+};
 
 enum {
-    PYTHON_TEXT =         QE_STYLE_DEFAULT,
-    PYTHON_COMMENT =      QE_STYLE_COMMENT,
-    PYTHON_STRING =       QE_STYLE_STRING,
-    PYTHON_NUMBER =       QE_STYLE_NUMBER,
-    PYTHON_KEYWORD =      QE_STYLE_KEYWORD,
-    PYTHON_FUNCTION =     QE_STYLE_FUNCTION,
+    PYTHON_STYLE_TEXT =     QE_STYLE_DEFAULT,
+    PYTHON_STYLE_COMMENT =  QE_STYLE_COMMENT,
+    PYTHON_STYLE_STRING =   QE_STYLE_STRING,
+    PYTHON_STYLE_NUMBER =   QE_STYLE_NUMBER,
+    PYTHON_STYLE_KEYWORD =  QE_STYLE_KEYWORD,
+    PYTHON_STYLE_FUNCTION = QE_STYLE_FUNCTION,
 };
 
 void python_colorize_line(unsigned int *str, int n, int mode_flags,
@@ -1396,19 +1392,19 @@
     int state = *statep;
     char kbuf[32];
 
-    if (state & IN_STRING) {
+    if (state & IN_PYTHON_STRING) {
         sep = '\'';
         goto parse_string;
     }
-    if (state & IN_STRING2) {
+    if (state & IN_PYTHON_STRING2) {
         sep = '\"';
         goto parse_string;
     }
-    if (state & IN_LONG_STRING) {
+    if (state & IN_PYTHON_LONG_STRING) {
         sep = '\'';
         goto parse_long_string;
     }
-    if (state & IN_LONG_STRING2) {
+    if (state & IN_PYTHON_LONG_STRING2) {
         sep = '\"';
         goto parse_long_string;
     }
@@ -1417,7 +1413,7 @@
         switch (c = str[i]) {
         case '#':
             j = n;
-            SET_COLOR(str, i, j, PYTHON_COMMENT);
+            SET_COLOR(str, i, j, PYTHON_STYLE_COMMENT);
             i = j;
             continue;
             
@@ -1429,12 +1425,13 @@
             sep = str[j++];
             if (str[j] == sep && str[j + 1] == sep) {
                 /* long string */
-                state = (sep == '\"') ? IN_LONG_STRING2 : IN_LONG_STRING;
+                state = (sep == '\"') ? IN_PYTHON_LONG_STRING2 :
+                        IN_PYTHON_LONG_STRING;
                 j += 2;
             parse_long_string:
                 while (j < n) {
                     c = str[j++];
-                    if (!(state & IN_RAW_STRING) && c == '\\') {
+                    if (!(state & IN_PYTHON_RAW_STRING) && c == '\\') {
                         if (j < n) {
                             j += 1;
                         }
@@ -1446,11 +1443,11 @@
                     }
                 }
             } else {
-                state = (sep == '\"') ? IN_STRING2 : IN_STRING;
+                state = (sep == '\"') ? IN_PYTHON_STRING2 : IN_PYTHON_STRING;
             parse_string:
                 while (j < n) {
                     c = str[j++];
-                    if (!(state & IN_RAW_STRING) && c == '\\') {
+                    if (!(state & IN_PYTHON_RAW_STRING) && c == '\\') {
                         if (j < n) {
                             j += 1;
                         }
@@ -1461,7 +1458,7 @@
                     }
                 }
             }
-            SET_COLOR(str, i, j, PYTHON_STRING);
+            SET_COLOR(str, i, j, PYTHON_STYLE_STRING);
             i = j;
             continue;
 
@@ -1476,7 +1473,7 @@
         case 'B':
             if (qe_tolower(str[i + 1]) == 'r'
             &&  (str[i + 2] == '\'' || str[i + 2] == '\"')) {
-                state |= IN_RAW_STRING;
+                state |= IN_PYTHON_RAW_STRING;
                 j = i + 2;
                 goto has_quote;
             }
@@ -1486,12 +1483,12 @@
         case 'R':
             if (qe_tolower(str[i + 1]) == 'b'
             &&  (str[i + 2] == '\'' || str[i + 2] == '\"')) {
-                state |= IN_RAW_STRING;
+                state |= IN_PYTHON_RAW_STRING;
                 j = i + 2;
                 goto has_quote;
             }
             if ((str[i + 1] == '\'' || str[i + 1] == '\"')) {
-                state |= IN_RAW_STRING;
+                state |= IN_PYTHON_RAW_STRING;
                 j = i + 1;
                 goto has_quote;
             }
@@ -1539,7 +1536,7 @@
                 }
                     
                 /* XXX: should detect malformed number constants */
-                SET_COLOR(str, i, j, PYTHON_NUMBER);
+                SET_COLOR(str, i, j, PYTHON_STYLE_NUMBER);
                 i = j;
                 continue;
             }
@@ -1552,14 +1549,14 @@
                 kbuf[klen] = '\0';
 
                 if (strfind(python_keywords, kbuf)) {
-                    SET_COLOR(str, i, j, PYTHON_KEYWORD);
+                    SET_COLOR(str, i, j, PYTHON_STYLE_KEYWORD);
                     i = j;
                     continue;
                 }
                 while (qe_isblank(str[j]))
                     j++;
                 if (str[j] == '(') {
-                    SET_COLOR(str, i, j, PYTHON_FUNCTION);
+                    SET_COLOR(str, i, j, PYTHON_STYLE_FUNCTION);
                     i = j;
                     continue;
                 }
@@ -1574,13 +1571,6 @@
     *statep = state;
 }
 
-#undef IN_COMMENT
-#undef IN_STRING
-#undef IN_STRING2
-#undef IN_LONG_STRING
-#undef IN_LONG_STRING2
-#undef IN_RAW_STRING
-
 static int python_mode_probe(ModeDef *mode, ModeProbeData *p)
 {
     if (match_extension(p->filename, mode->extensions))
@@ -1630,30 +1620,32 @@
  *  ==  ===  <=>  []  []=  **  !  ~  !=  !~  =~  &  |  ^
  */
 
-#define IN_HEREDOC    0x80
-#define IN_HD_INDENT  0x40
-#define IN_HD_SIG     0x3f
-#define IN_COMMENT    0x40
-#define IN_STRING     0x20      /* single quote */
-#define IN_STRING2    0x10      /* double quote */
-#define IN_STRING3    0x08      /* back quote */
-#define IN_STRING4    0x04      /* %q{...} */
-#define IN_REGEX      0x02
-#define IN_POD        0x01
+enum {
+    IN_RUBY_HEREDOC   = 0x80,
+    IN_RUBY_HD_INDENT = 0x40,
+    IN_RUBY_HD_SIG    = 0x3f,
+    IN_RUBY_COMMENT   = 0x40,
+    IN_RUBY_STRING    = 0x20      /* single quote */,
+    IN_RUBY_STRING2   = 0x10      /* double quote */,
+    IN_RUBY_STRING3   = 0x08      /* back quote */,
+    IN_RUBY_STRING4   = 0x04      /* %q{...} */,
+    IN_RUBY_REGEX     = 0x02,
+    IN_RUBY_POD       = 0x01,
+};
 
 enum {
-    RUBY_TEXT =         QE_STYLE_DEFAULT,
-    RUBY_COMMENT =      QE_STYLE_COMMENT,
-    RUBY_STRING =       QE_STYLE_STRING,
-    RUBY_STRING2 =      QE_STYLE_STRING,
-    RUBY_STRING3 =      QE_STYLE_STRING,
-    RUBY_STRING4 =      QE_STYLE_STRING,
-    RUBY_REGEX =        QE_STYLE_STRING_Q,
-    RUBY_NUMBER =       QE_STYLE_NUMBER,
-    RUBY_KEYWORD =      QE_STYLE_KEYWORD,
-    RUBY_FUNCTION =     QE_STYLE_FUNCTION,
-    RUBY_MEMBER =       QE_STYLE_VARIABLE,
-    RUBY_HEREDOC =      QE_STYLE_PREPROCESS,
+    RUBY_STYLE_TEXT =     QE_STYLE_DEFAULT,
+    RUBY_STYLE_COMMENT =  QE_STYLE_COMMENT,
+    RUBY_STYLE_STRING =   QE_STYLE_STRING,
+    RUBY_STYLE_STRING2 =  QE_STYLE_STRING,
+    RUBY_STYLE_STRING3 =  QE_STYLE_STRING,
+    RUBY_STYLE_STRING4 =  QE_STYLE_STRING,
+    RUBY_STYLE_REGEX =    QE_STYLE_STRING_Q,
+    RUBY_STYLE_NUMBER =   QE_STYLE_NUMBER,
+    RUBY_STYLE_KEYWORD =  QE_STYLE_KEYWORD,
+    RUBY_STYLE_FUNCTION = QE_STYLE_FUNCTION,
+    RUBY_STYLE_MEMBER =   QE_STYLE_VARIABLE,
+    RUBY_STYLE_HEREDOC =  QE_STYLE_PREPROCESS,
 };
 
 static int ruby_get_name(char *buf, int size, unsigned int *str)
@@ -1686,8 +1678,8 @@
     for (indent = 0; qe_isspace(str[indent]); indent++)
         continue;
 
-    if (state & IN_HEREDOC) {
-        if (state & IN_HD_INDENT) {
+    if (state & IN_RUBY_HEREDOC) {
+        if (state & IN_RUBY_HD_INDENT) {
             while (qe_isspace(str[j]))
                 j++;
         }
@@ -1700,40 +1692,40 @@
         }
         for (; qe_isspace(str[j]); j++)
             continue;
-        SET_COLOR(str, i, n, RUBY_HEREDOC);
+        SET_COLOR(str, i, n, RUBY_STYLE_HEREDOC);
         i = n;
-        if (j > 0 && j == n && (state & IN_HD_SIG) == (sig & IN_HD_SIG))
-            state &= ~(IN_HEREDOC | IN_HD_INDENT | IN_HD_SIG);
+        if (j > 0 && j == n && (state & IN_RUBY_HD_SIG) == (sig & 
IN_RUBY_HD_SIG))
+            state &= ~(IN_RUBY_HEREDOC | IN_RUBY_HD_INDENT | IN_RUBY_HD_SIG);
     } else {
-        if (state & IN_COMMENT)
+        if (state & IN_RUBY_COMMENT)
             goto parse_c_comment;
 
-        if (state & IN_REGEX)
+        if (state & IN_RUBY_REGEX)
             goto parse_regex;
 
-        if (state & IN_STRING)
+        if (state & IN_RUBY_STRING)
             goto parse_string;
 
-        if (state & IN_STRING2)
+        if (state & IN_RUBY_STRING2)
             goto parse_string2;
 
-        if (state & IN_STRING3)
+        if (state & IN_RUBY_STRING3)
             goto parse_string3;
 
-        if (state & IN_STRING4)
+        if (state & IN_RUBY_STRING4)
             goto parse_string4;
 
         if (str[i] == '=' && qe_isalpha(str[i + 1])) {
-            state |= IN_POD;
+            state |= IN_RUBY_POD;
         }
-        if (state & IN_POD) {
+        if (state & IN_RUBY_POD) {
             if (ustrstart(str + i, "=end", NULL)) {
-                state &= ~IN_POD;
+                state &= ~IN_RUBY_POD;
             }
             if (str[i] == '=' && qe_isalpha(str[i + 1])) {
-                SET_COLOR(str, i, n, RUBY_KEYWORD);
+                SET_COLOR(str, i, n, RUBY_STYLE_KEYWORD);
             } else {
-                SET_COLOR(str, i, n, RUBY_COMMENT);
+                SET_COLOR(str, i, n, RUBY_STYLE_COMMENT);
             }
             i = n;
         }
@@ -1751,11 +1743,11 @@
                 /* C comment */
                 j = i + 2;
             parse_c_comment:
-                state = IN_COMMENT;
+                state = IN_RUBY_COMMENT;
                 for (; j < n; j++) {
                     if (str[j] == '*' && str[j + 1] == '/') {
                         j += 2;
-                        state &= ~IN_COMMENT;
+                        state &= ~IN_RUBY_COMMENT;
                         break;
                     }
                 }
@@ -1768,7 +1760,7 @@
                 /* XXX: should use context to tell regex from divide */
                 /* parse regex */
                 j = i + 1;
-                state = IN_REGEX;
+                state = IN_RUBY_REGEX;
             parse_regex:
                 while (j < n) {
                     /* XXX: should ignore / inside char classes */
@@ -1791,7 +1783,7 @@
                         break;
                     }
                 }
-                SET_COLOR(str, i, j, RUBY_REGEX);
+                SET_COLOR(str, i, j, RUBY_STYLE_REGEX);
                 i = j;
                 continue;
             }
@@ -1800,7 +1792,7 @@
         case '#':
             j = n;
         comment:
-            SET_COLOR(str, i, j, RUBY_COMMENT);
+            SET_COLOR(str, i, j, RUBY_STYLE_COMMENT);
             i = j;
             continue;
             
@@ -1822,7 +1814,7 @@
                 if (sep == '[') sep = ']';
                 if (sep == '<') sep = '>';
                 /* parse special string const */
-                state = IN_STRING4;
+                state = IN_RUBY_STRING4;
             parse_string4:
                 while (j < n) {
                     c = str[j++];
@@ -1848,7 +1840,7 @@
                         }
                     }
                 }
-                SET_COLOR(str, i, j, RUBY_STRING4);
+                SET_COLOR(str, i, j, RUBY_STYLE_STRING4);
                 i = j;
                 continue;
             }
@@ -1857,7 +1849,7 @@
         case '\'':
             /* parse single quoted string const */
             j = i + 1;
-            state = IN_STRING;
+            state = IN_RUBY_STRING;
         parse_string:
             while (j < n) {
                 c = str[j++];
@@ -1869,14 +1861,14 @@
                     break;
                 }
             }
-            SET_COLOR(str, i, j, RUBY_STRING);
+            SET_COLOR(str, i, j, RUBY_STYLE_STRING);
             i = j;
             continue;
 
         case '`':
             /* parse single quoted string const */
             j = i + 1;
-            state = IN_STRING3;
+            state = IN_RUBY_STRING3;
         parse_string3:
             while (j < n) {
                 c = str[j++];
@@ -1893,7 +1885,7 @@
                     break;
                 }
             }
-            SET_COLOR(str, i, j, RUBY_STRING3);
+            SET_COLOR(str, i, j, RUBY_STYLE_STRING3);
             i = j;
             continue;
 
@@ -1919,13 +1911,13 @@
                 }
             }
             if (c == '\"') {
-                if (state == IN_STRING2)
+                if (state == IN_RUBY_STRING2)
                     state = 0;
             } else {
                 if (state == 0)
-                    state = IN_STRING2;
+                    state = IN_RUBY_STRING2;
             }
-            SET_COLOR(str, i, j, RUBY_STRING2);
+            SET_COLOR(str, i, j, RUBY_STYLE_STRING2);
             i = j;
             continue;
 
@@ -1969,13 +1961,13 @@
                      * start on the line after the << operator.  This
                      * is a bug due to limited state bits.
                      */
-                    state &= ~(IN_HEREDOC | IN_HD_INDENT | IN_HD_SIG);
-                    state |= IN_HEREDOC;
+                    state &= ~(IN_RUBY_HEREDOC | IN_RUBY_HD_INDENT | 
IN_RUBY_HD_SIG);
+                    state |= IN_RUBY_HEREDOC;
                     if (str[i + 2] == '-') {
-                        state |= IN_HD_INDENT;
+                        state |= IN_RUBY_HD_INDENT;
                     }
-                    state |= (sig & IN_HD_SIG);
-                    SET_COLOR(str, i, j, RUBY_HEREDOC);
+                    state |= (sig & IN_RUBY_HD_SIG);
+                    SET_COLOR(str, i, j, RUBY_STYLE_HEREDOC);
                     i = j;
                 }
             }
@@ -2007,7 +1999,7 @@
         case '@':
             j = i + 1;
             j += ruby_get_name(kbuf, countof(kbuf), str + j);
-            SET_COLOR(str, i, j, RUBY_MEMBER);
+            SET_COLOR(str, i, j, RUBY_STYLE_MEMBER);
             i = j;
             continue;
 
@@ -2054,7 +2046,7 @@
                 }
                     
                 /* XXX: should detect malformed number constants */
-                SET_COLOR(str, i, j, RUBY_NUMBER);
+                SET_COLOR(str, i, j, RUBY_STYLE_NUMBER);
                 i = j;
                 continue;
             }
@@ -2063,14 +2055,14 @@
                 j += ruby_get_name(kbuf, countof(kbuf), str + j);
 
                 if (strfind(ruby_keywords, kbuf)) {
-                    SET_COLOR(str, i, j, RUBY_KEYWORD);
+                    SET_COLOR(str, i, j, RUBY_STYLE_KEYWORD);
                     i = j;
                     continue;
                 }
                 while (qe_isblank(str[j]))
                     j++;
                 if (str[j] == '(') {
-                    SET_COLOR(str, i, j, RUBY_FUNCTION);
+                    SET_COLOR(str, i, j, RUBY_STYLE_FUNCTION);
                     i = j;
                     continue;
                 }
@@ -2085,17 +2077,6 @@
     *statep = state;
 }
 
-#undef IN_HEREDOC
-#undef IN_HD_INDENT
-#undef IN_HD_SIG
-#undef IN_COMMENT
-#undef IN_STRING
-#undef IN_STRING2
-#undef IN_STRING3
-#undef IN_STRING4
-#undef IN_REGEX
-#undef IN_POD
-
 static int ruby_mode_probe(ModeDef *mode, ModeProbeData *p)
 {
     if (match_extension(p->filename, mode->extensions)



reply via email to

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