[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemacs-commit] qemacs markdown.c
From: |
Charlie Gordon |
Subject: |
[Qemacs-commit] qemacs markdown.c |
Date: |
Mon, 15 May 2017 04:00:20 -0400 (EDT) |
CVSROOT: /sources/qemacs
Module name: qemacs
Changes by: Charlie Gordon <chqrlie> 17/05/15 04:00:20
Modified files:
. : markdown.c
Log message:
markdown: support more syntaxes for verbatim blocks
- accept :::lang syntax for verbatim block language spec
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/qemacs/markdown.c?cvsroot=qemacs&r1=1.29&r2=1.30
Patches:
Index: markdown.c
===================================================================
RCS file: /sources/qemacs/qemacs/markdown.c,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -b -r1.29 -r1.30
--- markdown.c 25 Apr 2017 17:41:27 -0000 1.29
+++ markdown.c 15 May 2017 08:00:20 -0000 1.30
@@ -57,6 +57,7 @@
};
static ModeDef *mkd_lang_def[MKD_LANG_MAX + 1];
+static char mkd_lang_char[MKD_LANG_MAX + 1];
#define MKD_BULLET_STYLES 4
static int MkdBulletStyles[MKD_BULLET_STYLES] = {
@@ -90,7 +91,7 @@
return 0;
}
-static int mkd_add_lang(const char *lang_name) {
+static int mkd_add_lang(const char *lang_name, char c) {
ModeDef *m;
int lang = 0;
@@ -98,10 +99,12 @@
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)
+ if (mkd_lang_def[lang] == m) {
+ mkd_lang_char[lang] = c;
break;
}
}
+ }
return lang;
}
@@ -151,15 +154,16 @@
}
if (colstate & IN_MKD_BLOCK) {
+ int lang = (colstate & IN_MKD_BLOCK) >> MKD_LANG_SHIFT;
+
/* Should count number of ~ to detect end of block */
if (ustrstart(str + j, "~~~", NULL)
- || ustrstart(str + j, "```", NULL)) {
+ || ustrstart(str + j, "```", NULL)
+ || (indent < 4 && mkd_lang_char[lang] == ':')) {
colstate &= ~IN_MKD_BLOCK;
i = n;
SET_COLOR(str, start, i, MKD_STYLE_TILDE);
} else {
- int lang = (colstate & IN_MKD_BLOCK) >> MKD_LANG_SHIFT;
-
if (mkd_lang_def[lang]) {
cp->colorize_state = colstate & IN_MKD_LANG_STATE;
mkd_lang_def[lang]->colorize_func(cp, str + i, n - i,
mkd_lang_def[lang]);
@@ -231,7 +235,8 @@
base_style = MKD_STYLE_TABLE;
} else
if (ustrstart(str + j, "~~~", NULL)
- || ustrstart(str + j, "```", NULL)) {
+ || ustrstart(str + j, "```", NULL)
+ || ustrstart(str + j, ":::", NULL)) {
/* verbatim block */
char lang_name[16];
int lang = syn->colorize_flags, len; // was MKD_LANG_MAX
@@ -245,7 +250,7 @@
}
lang_name[len] = '\0';
if (len) {
- lang = mkd_add_lang(lang_name);
+ lang = mkd_add_lang(lang_name, str[j]);
}
colstate |= lang << MKD_LANG_SHIFT;
i = n;
@@ -856,7 +861,7 @@
s->indent_tabs_mode = 0;
/* XXX: should come from mode.default_wrap */
s->wrap = WRAP_WORD;
- s->mode->colorize_flags = mkd_add_lang("coffee");
+ s->mode->colorize_flags = mkd_add_lang("coffee", 0);
}
return 0;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Qemacs-commit] qemacs markdown.c,
Charlie Gordon <=