qemacs-commit
[Top][All Lists]
Advanced

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

[Qemacs-commit] qemacs clang.c extra-modes.c markdown.c qe.c qe...


From: Charlie Gordon
Subject: [Qemacs-commit] qemacs clang.c extra-modes.c markdown.c qe.c qe...
Date: Fri, 19 Jun 2015 14:34:31 +0000

CVSROOT:        /sources/qemacs
Module name:    qemacs
Changes by:     Charlie Gordon <chqrlie>        15/06/19 14:34:31

Modified files:
        .              : clang.c extra-modes.c markdown.c qe.c qe.h 
                         swift.c 

Log message:
        improves markdown mode
        
        * made verbatim block coloring completely generic using language name 
lookup
        * removed global references to most snytax coloring modes

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/qemacs/clang.c?cvsroot=qemacs&r1=1.86&r2=1.87
http://cvs.savannah.gnu.org/viewcvs/qemacs/extra-modes.c?cvsroot=qemacs&r1=1.41&r2=1.42
http://cvs.savannah.gnu.org/viewcvs/qemacs/markdown.c?cvsroot=qemacs&r1=1.19&r2=1.20
http://cvs.savannah.gnu.org/viewcvs/qemacs/qe.c?cvsroot=qemacs&r1=1.188&r2=1.189
http://cvs.savannah.gnu.org/viewcvs/qemacs/qe.h?cvsroot=qemacs&r1=1.186&r2=1.187
http://cvs.savannah.gnu.org/viewcvs/qemacs/swift.c?cvsroot=qemacs&r1=1.1&r2=1.2

Patches:
Index: clang.c
===================================================================
RCS file: /sources/qemacs/qemacs/clang.c,v
retrieving revision 1.86
retrieving revision 1.87
diff -u -b -r1.86 -r1.87
--- clang.c     8 Jun 2015 07:40:39 -0000       1.86
+++ clang.c     19 Jun 2015 14:34:30 -0000      1.87
@@ -1753,7 +1753,7 @@
     .fallback = &c_mode,
 };
 
-ModeDef java_mode = {
+static ModeDef java_mode = {
     .name = "Java",
     .extensions = "jav|java",
     .colorize_func = c_colorize_line,
@@ -1765,7 +1765,7 @@
     .fallback = &c_mode,
 };
 
-ModeDef scala_mode = {
+static ModeDef scala_mode = {
     .name = "Scala",
     .extensions = "scala|sbt",
     .colorize_func = c_colorize_line,

Index: extra-modes.c
===================================================================
RCS file: /sources/qemacs/qemacs/extra-modes.c,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -b -r1.41 -r1.42
--- extra-modes.c       8 Jun 2015 07:24:39 -0000       1.41
+++ extra-modes.c       19 Jun 2015 14:34:30 -0000      1.42
@@ -1708,7 +1708,7 @@
     cp->colorize_state = state;
 }
 
-ModeDef lua_mode = {
+static ModeDef lua_mode = {
     .name = "Lua",
     .extensions = "lua",
     .shell_handlers = "lua",
@@ -2183,7 +2183,7 @@
     cp->colorize_state = state;
 }
 
-ModeDef haskell_mode = {
+static ModeDef haskell_mode = {
     .name = "Haskell",
     .extensions = "hs|haskell",
     .shell_handlers = "haskell",
@@ -2401,7 +2401,7 @@
     cp->colorize_state = state;
 }
 
-ModeDef python_mode = {
+static ModeDef python_mode = {
     .name = "Python",
     .extensions = "py|pyt",
     .shell_handlers = "python|python2.6|python2.7",
@@ -2882,7 +2882,7 @@
     return 1;
 }
 
-ModeDef ruby_mode = {
+static ModeDef ruby_mode = {
     .name = "Ruby",
     .extensions = "rb|gemspec",
     .keywords = ruby_keywords,

Index: markdown.c
===================================================================
RCS file: /sources/qemacs/qemacs/markdown.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -b -r1.19 -r1.20
--- markdown.c  8 Jun 2015 09:18:45 -0000       1.19
+++ markdown.c  19 Jun 2015 14:34:30 -0000      1.20
@@ -49,26 +49,12 @@
     IN_MKD_HTML_BLOCK   = 0x8000,
     IN_MKD_HTML_COMMENT = 0xC000,
     MKD_LANG_SHIFT      = 11,
-    MKD_LANG_MAX        = 16,
+    MKD_LANG_MAX        = (IN_MKD_BLOCK >> MKD_LANG_SHIFT),
     MKD_LEVEL_SHIFT     = 8,
     MKD_LEVEL_MAX       = 7,
 };
 
-ModeDef *mkd_lang_def[MKD_LANG_MAX - 1] = {
-    NULL,
-    &js_mode,
-    &java_mode,
-    &scala_mode,
-    &php_mode,
-    &csharp_mode,
-    &python_mode,
-    &ruby_mode,
-    &haskell_mode,
-    &lua_mode,
-    &swift_mode,
-    &cpp_mode,
-    &c_mode,
-};
+ModeDef *mkd_lang_def[MKD_LANG_MAX + 1];
 
 #define MKD_BULLET_STYLES  4
 static int MkdBulletStyles[MKD_BULLET_STYLES] = {
@@ -127,27 +113,6 @@
         return;
     }
 
-    if (colstate & IN_MKD_HTML_BLOCK) {
-        if (str[i] != '<' && str[i] != '\0' && !qe_isblank(str[i])) {
-            /* formating error, exit html block */
-            colstate = 0;
-        }
-    }
-
-    if ((colstate & IN_MKD_HTML_BLOCK)
-    ||  (str[i] == '<' && str[i + 1] != '/')) {
-        /* block level HTML markup */
-        colstate &= ~IN_MKD_HTML_BLOCK;
-        cp->colorize_state = colstate;
-        htmlsrc_mode.colorize_func(cp, str, n, &htmlsrc_mode);
-        colstate = cp->colorize_state;
-        colstate |= IN_MKD_HTML_BLOCK;
-        if ((str[i] & CHAR_MASK) == '<' && (str[i + 1] & CHAR_MASK) == '/')
-            colstate = 0;
-        cp->colorize_state = colstate;
-        return;
-    }
-
     if (str[i] == '>') {
         if (str[++i] == ' ')
             i++;
@@ -167,7 +132,7 @@
 
             cp->colorize_state = colstate & IN_MKD_LANG_STATE;
 
-            if (lang < countof(mkd_lang_def) && mkd_lang_def[lang]) {
+            if (mkd_lang_def[lang]) {
                 mkd_lang_def[lang]->colorize_func(cp, str + i, n - i, 
mkd_lang_def[lang]);
             } else {
                 SET_COLOR(str, i, n, MKD_STYLE_CODE);
@@ -180,6 +145,27 @@
         return;
     }
 
+    if (colstate & IN_MKD_HTML_BLOCK) {
+        if (i < n && str[i] != '<' && !qe_isblank(str[i])) {
+            /* formating error, exit html block */
+            colstate = 0;
+        }
+    }
+
+    if ((colstate & IN_MKD_HTML_BLOCK)
+    ||  (str[i] == '<' && (str[i + 1] == '!' || str[i + 1] == '?' || 
qe_isalpha(str[i + 1])))) {
+        /* block level HTML markup */
+        colstate &= ~IN_MKD_HTML_BLOCK;
+        cp->colorize_state = colstate;
+        htmlsrc_mode.colorize_func(cp, str, n, &htmlsrc_mode);
+        colstate = cp->colorize_state;
+        colstate |= IN_MKD_HTML_BLOCK;
+        if ((str[i] & CHAR_MASK) == '<' && (str[i + 1] & CHAR_MASK) == '/')
+            colstate = 0;
+        cp->colorize_state = colstate;
+        return;
+    }
+
     if (str[i] == '#') {
         /* Check for heading: initial string of '#' followed by ' ' */
         for (i++; str[i] == '#'; i++)
@@ -218,16 +204,26 @@
     if (ustrstart(str + i, "~~~", NULL)
     ||  ustrstart(str + i, "```", NULL)) {
         /* verbatim block */
-        int lang;
+        char lang_name[16];
+        int lang = MKD_LANG_MAX, len;
+        ModeDef *m;
 
         colstate &= ~(IN_MKD_BLOCK | IN_MKD_LANG_STATE);
-        for (j = i + 3; qe_isspace(str[j]); j++)
+        for (i += 3; qe_isspace(str[i]); i++)
             continue;
-        for (lang = 1; lang < countof(mkd_lang_def); lang++) {
-            if (mkd_lang_def[lang]
-            &&  ustristart(str + j, mkd_lang_def[lang]->name, NULL))
+        for (len = 0; i < n && qe_isalnum_(str[i]); i++) {
+            if (len < countof(lang_name) - 1)
+                lang_name[len++] = str[i];
+        }
+        lang_name[len] = '\0';
+        if (len > 0 && (m = qe_find_mode(lang_name, MODEF_SYNTAX)) != NULL) {
+            for (lang = 1; lang < MKD_LANG_MAX; lang++) {
+                if (mkd_lang_def[lang] == NULL)
+                    mkd_lang_def[lang] = m;
+                if (mkd_lang_def[lang] == m)
                 break;
         }
+        }
         colstate |= lang << MKD_LANG_SHIFT;
         i = n;
         SET_COLOR(str, start, i, MKD_STYLE_TILDE);

Index: qe.c
===================================================================
RCS file: /sources/qemacs/qemacs/qe.c,v
retrieving revision 1.188
retrieving revision 1.189
diff -u -b -r1.188 -r1.189
--- qe.c        8 Jun 2015 06:54:56 -0000       1.188
+++ qe.c        19 Jun 2015 14:34:31 -0000      1.189
@@ -90,6 +90,21 @@
     return 1;
 }
 
+ModeDef *qe_find_mode(const char *name, int flags)
+{
+    QEmacsState *qs = &qe_state;
+    ModeDef *m;
+
+    for (m = qs->first_mode; m; m = m->next) {
+        if ((m->flags & flags) == flags) {
+            if ((m->name && !strcasecmp(m->name, name))
+            ||  (m->mode_name && !strcasecmp(m->mode_name, name)))
+                break;
+        }
+    }
+    return m;
+}
+
 void qe_register_mode(ModeDef *m, int flags)
 {
     QEmacsState *qs = &qe_state;
@@ -183,18 +198,6 @@
     }
 }
 
-static ModeDef *find_mode(const char *name)
-{
-    QEmacsState *qs = &qe_state;
-    ModeDef *m;
-
-    for (m = qs->first_mode; m != NULL; m = m->next) {
-        if (strequal(m->mode_name, name))
-            break;
-    }
-    return m;
-}
-
 /* commands handling */
 
 CmdDef *qe_find_cmd(const char *cmd_name)
@@ -1890,7 +1893,7 @@
     ModeDef *m;
 
     /* XXX: should check if mode is appropriate */
-    m = find_mode(name);
+    m = qe_find_mode(name, 0);
     if (m)
         edit_set_mode(s, m);
     else

Index: qe.h
===================================================================
RCS file: /sources/qemacs/qemacs/qe.h,v
retrieving revision 1.186
retrieving revision 1.187
diff -u -b -r1.186 -r1.187
--- qe.h        19 Jun 2015 14:23:55 -0000      1.186
+++ qe.h        19 Jun 2015 14:34:31 -0000      1.187
@@ -1510,6 +1510,7 @@
 #define CMD_DEF_END \
     { 0, 0, NULL, { NULL }, CMD_void, 0 }
 
+ModeDef *qe_find_mode(const char *name, int flags);
 void qe_register_mode(ModeDef *m, int flags);
 void mode_completion(CompleteState *cp);
 void qe_register_cmd_table(CmdDef *cmds, ModeDef *m);
@@ -1987,18 +1988,11 @@
 extern ModeDef c_mode;
 extern ModeDef cpp_mode;
 extern ModeDef js_mode;
-extern ModeDef java_mode;
-extern ModeDef scala_mode;
 extern ModeDef php_mode;
 extern ModeDef csharp_mode;
 extern ModeDef css_mode;
-extern ModeDef swift_mode;
 extern ModeDef xml_mode;
 extern ModeDef htmlsrc_mode;
-extern ModeDef lua_mode;
-extern ModeDef haskell_mode;
-extern ModeDef python_mode;
-extern ModeDef ruby_mode;
 
 /* html.c */
 

Index: swift.c
===================================================================
RCS file: /sources/qemacs/qemacs/swift.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- swift.c     8 Jun 2014 12:59:00 -0000       1.1
+++ swift.c     19 Jun 2015 14:34:31 -0000      1.2
@@ -328,7 +328,7 @@
     "CChar32|CFloat|CDouble|"
 };
 
-ModeDef swift_mode = {
+static ModeDef swift_mode = {
     .name = "Swift",
     .extensions = "swift",
     .shell_handlers = "swift",



reply via email to

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