[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",
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Qemacs-commit] qemacs clang.c extra-modes.c markdown.c qe.c qe...,
Charlie Gordon <=