qemacs-commit
[Top][All Lists]
Advanced

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

[Qemacs-commit] qemacs htmlsrc.c clang.c


From: Charlie Gordon
Subject: [Qemacs-commit] qemacs htmlsrc.c clang.c
Date: Wed, 11 Apr 2018 05:26:42 -0400 (EDT)

CVSROOT:        /sources/qemacs
Module name:    qemacs
Changes by:     Charlie Gordon <chqrlie>        18/04/11 05:26:42

Modified files:
        .              : htmlsrc.c clang.c 

Log message:
        fix flags for embedded scripts and styles in html-src

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/qemacs/htmlsrc.c?cvsroot=qemacs&r1=1.28&r2=1.29
http://cvs.savannah.gnu.org/viewcvs/qemacs/clang.c?cvsroot=qemacs&r1=1.134&r2=1.135

Patches:
Index: htmlsrc.c
===================================================================
RCS file: /sources/qemacs/qemacs/htmlsrc.c,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -b -r1.28 -r1.29
--- htmlsrc.c   19 Apr 2017 08:13:24 -0000      1.28
+++ htmlsrc.c   11 Apr 2018 09:26:42 -0000      1.29
@@ -58,20 +58,17 @@
 
 /* colorization states */
 enum {
-    IN_HTML_COMMENT    = 0x001,      /* <!-- ... --> */
-    IN_HTML_COMMENT1   = 0x002,      /* <! ... > */
-    IN_HTML_STRING     = 0x004,      /* " ... " */
-    IN_HTML_STRING1    = 0x008,      /* ' ... ' */
-    IN_HTML_ENTITY     = 0x010,      /* &name[;] / &#123[;] */
-    IN_HTML_TAG        = 0x020,      /* <tag ... > */
-    IN_HTML_SCRIPT_TAG = 0x040,      /* <script ... > */
-    IN_HTML_SCRIPT     = 0x080,      /* <script> [...] </script> */
-    IN_HTML_STYLE_TAG  = 0x100,      /* <style ... > */
-    IN_HTML_STYLE      = 0x200,      /* <style> [...] </style> */
-    IN_HTML_PHP_TAG    = 0x400,      /* <?php ... ?> */
-    IN_HTML_PHP_STRING = 0x800,      /* "<?php ... ?>" */
-    IN_HTML_ASP_TAG    = 0x1000,      /* <% ... %> */
-    IN_HTML_ASP_STRING = 0x2000,      /* "<% ... %>" */
+    IN_HTML_COMMENT    = 0x0001,      /* <!-- ... --> */
+    IN_HTML_COMMENT1   = 0x0002,      /* <! ... > */
+    IN_HTML_ENTITY     = 0x0004,      /* &name[;] / &#123[;] */
+    IN_HTML_EMBEDDED   = 0x00ff,      /* flags for embedded php, js, css, c# */
+    IN_HTML_TAG        = 0x0100,      /* <tag ... > */
+    IN_HTML_STRING     = 0x0200,      /* <tag " ... " > */
+    IN_HTML_STRING1    = 0x0400,      /* <tag ' ... ' > */
+    IN_HTML_SCRIPT     = 0x1000,      /* <script> [...] </script> */
+    IN_HTML_STYLE      = 0x2000,      /* <style> [...] </style> */
+    IN_HTML_PHP        = 0x4000,      /* <?php ... ?> */
+    IN_HTML_ASP        = 0x8000,      /* <% ... %> */
 };
 
 enum {
@@ -102,71 +99,53 @@
 static void htmlsrc_colorize_line(QEColorizeContext *cp,
                                   unsigned int *str, int n, ModeDef *syn)
 {
-    int i = 0, start = i, c, len;
+    int i = 0, start, c, len;
     int state = cp->colorize_state;
 
-    /* Kludge for preprocessed html */
-    if (str[i] == '#') {
-        i = n;
-        SET_COLOR(str, start, i, HTML_STYLE_PREPROCESS);
-        goto the_end;
-    }
-
     while (i < n) {
         start = i;
-        c = str[i];
 
-        if (state & (IN_HTML_PHP_TAG | IN_HTML_PHP_STRING)) {
+        if (state & IN_HTML_PHP) {
             for (; i < n; i++) {
                 if (str[i] == '?' && str[i + 1] == '>')
                     break;
             }
             c = str[i];     /* save char to set '\0' delimiter */
             str[i] = '\0';
-            cp->colorize_state = state & ~(IN_HTML_PHP_TAG | 
IN_HTML_PHP_STRING);
+            cp->colorize_state = state & IN_HTML_EMBEDDED;
             php_mode.colorize_func(cp, str + start, i - start, &php_mode);
-            state = cp->colorize_state |
-                    (state & (IN_HTML_PHP_TAG | IN_HTML_PHP_STRING));
+            state &= ~IN_HTML_EMBEDDED;
+            state |= cp->colorize_state & IN_HTML_EMBEDDED;
             str[i] = c;
             if (c) {
+                state &= ~(IN_HTML_EMBEDDED | IN_HTML_PHP);
                 start = i;
                 i += 2;
                 SET_COLOR(str, start, i, HTML_STYLE_PREPROCESS);
-                if (state & IN_HTML_PHP_TAG) {
-                    state = 0;
-                } else {
-                    /* XXX: should set these bits higher */
-                    state = IN_HTML_STRING | IN_HTML_TAG;
-                }
             }
             continue;
         }
-        if (state & (IN_HTML_ASP_TAG | IN_HTML_ASP_STRING)) {
+        if (state & IN_HTML_ASP) {
             for (; i < n; i++) {
                 if (str[i] == '%' && str[i + 1] == '>')
                     break;
             }
             c = str[i];     /* save char to set '\0' delimiter */
             str[i] = '\0';
-            cp->colorize_state = state & ~(IN_HTML_ASP_TAG | 
IN_HTML_ASP_STRING);
+            cp->colorize_state = state & IN_HTML_EMBEDDED;
             csharp_mode.colorize_func(cp, str + start, i - start, 
&csharp_mode);
-            state = cp->colorize_state |
-                    (state & (IN_HTML_ASP_TAG | IN_HTML_ASP_STRING));
+            state &= ~IN_HTML_EMBEDDED;
+            state |= cp->colorize_state & IN_HTML_EMBEDDED;
             str[i] = c;
             if (c) {
+                state &= ~(IN_HTML_EMBEDDED | IN_HTML_ASP);
                 start = i;
                 i += 2;
                 SET_COLOR(str, start, i, HTML_STYLE_PREPROCESS);
-                if (state & IN_HTML_ASP_TAG) {
-                    state = 0;
-                } else {
-                    /* XXX: should set these bits higher */
-                    state = IN_HTML_STRING | IN_HTML_TAG;
-                }
             }
             continue;
         }
-        if (state & IN_HTML_SCRIPT) {
+        if ((state & (IN_HTML_SCRIPT | IN_HTML_TAG)) == IN_HTML_SCRIPT) {
             for (; i < n; i++) {
                 if (str[i] == '<'
                 &&  htmlsrc_tag_match(str, i + 1, "/script", NULL)) {
@@ -175,18 +154,17 @@
             }
             c = str[i];     /* save char to set '\0' delimiter */
             str[i] = '\0';
-            state &= ~IN_HTML_SCRIPT;
-            cp->colorize_state = state;
+            cp->colorize_state = state & IN_HTML_EMBEDDED;
             js_mode.colorize_func(cp, str + start, i - start, &js_mode);
-            state = cp->colorize_state;
-            state |= IN_HTML_SCRIPT;
+            state &= ~IN_HTML_EMBEDDED;
+            state |= cp->colorize_state & IN_HTML_EMBEDDED;
             str[i] = c;
             if (c) {
-                state = 0;
+                state &= ~(IN_HTML_EMBEDDED | IN_HTML_SCRIPT);
             }
             continue;
         }
-        if (state & IN_HTML_STYLE) {
+        if ((state & (IN_HTML_STYLE | IN_HTML_TAG)) == IN_HTML_STYLE) {
             for (; i < n; i++) {
                 if (str[i] == '<'
                 &&  htmlsrc_tag_match(str, i + 1, "/style", NULL)) {
@@ -195,14 +173,13 @@
             }
             c = str[i];     /* save char to set '\0' delimiter */
             str[i] = '\0';
-            state &= ~IN_HTML_STYLE;
-            cp->colorize_state = state;
+            cp->colorize_state = state & IN_HTML_EMBEDDED;
             css_mode.colorize_func(cp, str + start, i - start, &css_mode);
-            state = cp->colorize_state;
-            state |= IN_HTML_STYLE;
+            state &= ~IN_HTML_EMBEDDED;
+            state |= cp->colorize_state & IN_HTML_EMBEDDED;
             str[i] = c;
             if (c) {
-                state = 0;
+                state &= ~(IN_HTML_EMBEDDED | IN_HTML_STYLE);
             }
             continue;
         }
@@ -256,7 +233,7 @@
                     SET_COLOR(str, i, i + 5, HTML_STYLE_PREPROCESS);
                     i += 5;
                     start = i;
-                    state = IN_HTML_PHP_STRING;
+                    state |= IN_HTML_PHP;
                     break;
                 } else
                 if (str[i] == '<' && str[i + 1] == '%') {
@@ -264,7 +241,7 @@
                     SET_COLOR(str, i, i + 2, HTML_STYLE_PREPROCESS);
                     i += 2;
                     start = i;
-                    state = IN_HTML_ASP_STRING;
+                    state |= IN_HTML_ASP;
                     break;
                 } else
                 if (str[i] == '?' && str[i + 1] == '>') {
@@ -284,7 +261,7 @@
             SET_COLOR(str, start, i, HTML_STYLE_STRING);
             continue;
         }
-        if (state & (IN_HTML_TAG | IN_HTML_SCRIPT_TAG | IN_HTML_STYLE_TAG)) {
+        if (state & IN_HTML_TAG) {
             for (; i < n; i++) {
                 c = str[i];
                 if (c == '&' && get_html_entity(str + i)) {
@@ -306,12 +283,6 @@
                 }
                 if (c == '>') {
                     i++;
-                    if (state & IN_HTML_SCRIPT_TAG)
-                        state = IN_HTML_SCRIPT;
-                    else
-                    if (state & IN_HTML_STYLE_TAG)
-                        state = IN_HTML_STYLE;
-                    else
                         state &= ~IN_HTML_TAG;
                     break;
                 }
@@ -325,43 +296,47 @@
         }
         /* Plain text stream */
         for (; i < n; i++) {
-            if (str[i] == '<'
+            start = i;
+            c = str[i];
+
+            /* Kludge for preprocessed html */
+            if (c == '#' && i == 0) {
+                i = n;
+                SET_COLOR(str, start, i, HTML_STYLE_PREPROCESS);
+                break;
+            }
+            if (c == '<'
             &&  htmlsrc_tag_match(str, i, "<?php", &i)) {
                 SET_COLOR(str, start, i, HTML_STYLE_PREPROCESS);
-                state = IN_HTML_PHP_TAG;
+                state |= IN_HTML_PHP;
                 break;
             }
-            if (str[i] == '<' && str[i + 1] == '%') {
+            if (c == '<' && str[i + 1] == '%') {
                 i += 2;
                 SET_COLOR(str, start, i, HTML_STYLE_PREPROCESS);
-                state = IN_HTML_ASP_TAG;
+                state |= IN_HTML_ASP;
                 break;
             }
-            if (str[i] == '<'
+            if (c == '<'
             &&  (qe_isalpha(str[i + 1]) || str[i + 1] == '!'
             ||   str[i + 1] == '/' || str[i + 1] == '?')) {
-                //SET_COLOR(str, start, i, HTML_STYLE_TEXT);
-                start = i;
+                state |= IN_HTML_TAG;
                 if (htmlsrc_tag_match(str, i, "<script", NULL)) {
-                    state |= IN_HTML_SCRIPT_TAG;
+                    state |= IN_HTML_SCRIPT;
                     break;
                 }
                 if (htmlsrc_tag_match(str, i, "<style", NULL)) {
-                    state |= IN_HTML_STYLE_TAG;
+                    state |= IN_HTML_STYLE;
                     break;
                 }
                 if (str[i + 1] == '!') {
-                    state |= IN_HTML_COMMENT1;
+                    state ^= IN_HTML_TAG ^ IN_HTML_COMMENT1;
                     i += 2;
                     if (str[i] == '-' && str[i + 1] == '-') {
                         i += 2;
-                        state &= ~IN_HTML_COMMENT1;
-                        state |= IN_HTML_COMMENT;
+                        state ^= IN_HTML_COMMENT ^ IN_HTML_COMMENT1;
                     }
                     SET_COLOR(str, start, i, HTML_STYLE_COMMENT);
-                    start = i;
-                } else {
-                    state |= IN_HTML_TAG;
                 }
                 break;
             }
@@ -370,9 +345,7 @@
                 break;
             }
         }
-        //SET_COLOR(str, start, i, HTML_STYLE_TEXT);
     }
- the_end:
     cp->colorize_state = state;
 }
 

Index: clang.c
===================================================================
RCS file: /sources/qemacs/qemacs/clang.c,v
retrieving revision 1.134
retrieving revision 1.135
diff -u -b -r1.134 -r1.135
--- clang.c     9 Apr 2018 05:28:57 -0000       1.134
+++ clang.c     11 Apr 2018 09:26:42 -0000      1.135
@@ -2123,6 +2123,7 @@
 
 ModeDef php_mode = {
     .name = "PHP",
+    .extensions = "php|php3|php4",
     .colorize_func = c_colorize_line,
     .colorize_flags = CLANG_PHP | CLANG_REGEX,
     .keywords = php_keywords,



reply via email to

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