qemacs-commit
[Top][All Lists]
Advanced

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

[Qemacs-commit] qemacs clang.c


From: Charlie Gordon
Subject: [Qemacs-commit] qemacs clang.c
Date: Mon, 08 Jun 2015 07:30:12 +0000

CVSROOT:        /sources/qemacs
Module name:    qemacs
Changes by:     Charlie Gordon <chqrlie>        15/06/08 07:30:11

Modified files:
        .              : clang.c 

Log message:
        added json specific syntax with content based auto-detection

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/qemacs/clang.c?cvsroot=qemacs&r1=1.83&r2=1.84

Patches:
Index: clang.c
===================================================================
RCS file: /sources/qemacs/qemacs/clang.c,v
retrieving revision 1.83
retrieving revision 1.84
diff -u -b -r1.83 -r1.84
--- clang.c     14 May 2015 07:21:36 -0000      1.83
+++ clang.c     8 Jun 2015 07:30:00 -0000       1.84
@@ -29,6 +29,7 @@
     CLANG_CSHARP,
     CLANG_AWK,
     CLANG_CSS,
+    CLANG_JSON,
     CLANG_JS,
     CLANG_AS,
     CLANG_JAVA,
@@ -1635,9 +1636,38 @@
     .fallback = &c_mode,
 };
 
+static int json_mode_probe(ModeDef *mode, ModeProbeData *pd)
+{
+    const char *p = cs8(pd->buf);
+
+    if (match_extension(pd->filename, mode->extensions))
+        return 80;
+
+    if (*p == '{' && p[1] == '\n') {
+        while (qe_isspace((unsigned char)*++p))
+            continue;
+        if (*p == '\"')
+            return 50;
+    }
+    return 1;
+}
+
+ModeDef json_mode = {
+    .name = "json",
+    .extensions = "json",
+    .mode_probe = json_mode_probe,
+    .colorize_func = c_colorize_line,
+    .colorize_flags = CLANG_JSON,
+    .keywords = js_keywords,
+    .types = js_types,
+    .indent_func = c_indent_line,
+    .auto_indent = 1,
+    .fallback = &c_mode,
+};
+
 ModeDef js_mode = {
     .name = "Javascript",
-    .extensions = "js|json",
+    .extensions = "js",
     .colorize_func = c_colorize_line,
     .colorize_flags = CLANG_JS | CLANG_REGEX,
     .keywords = js_keywords,
@@ -2011,6 +2041,7 @@
     qe_register_mode(&csharp_mode, MODEF_SYNTAX);
     qe_register_mode(&awk_mode, MODEF_SYNTAX);
     qe_register_mode(&css_mode, MODEF_SYNTAX);
+    qe_register_mode(&json_mode, MODEF_SYNTAX);
     qe_register_mode(&js_mode, MODEF_SYNTAX);
     qe_register_mode(&as_mode, MODEF_SYNTAX);
     qe_register_mode(&java_mode, MODEF_SYNTAX);



reply via email to

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