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: Sat, 09 Aug 2014 17:22:00 +0000

CVSROOT:        /sources/qemacs
Module name:    qemacs
Changes by:     Charlie Gordon <chqrlie>        14/08/09 17:22:00

Modified files:
        .              : clang.c 

Log message:
        extend clang with new variants
        
        * add awk and csl modes based on clang
        * select c-mode on #define and #ifndef

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

Patches:
Index: clang.c
===================================================================
RCS file: /sources/qemacs/qemacs/clang.c,v
retrieving revision 1.78
retrieving revision 1.79
diff -u -b -r1.78 -r1.79
--- clang.c     8 Jun 2014 10:56:58 -0000       1.78
+++ clang.c     9 Aug 2014 17:21:59 -0000       1.79
@@ -27,6 +27,7 @@
     CLANG_CPP,
     CLANG_OBJC,
     CLANG_CSHARP,
+    CLANG_AWK,
     CLANG_CSS,
     CLANG_JS,
     CLANG_AS,
@@ -49,6 +50,7 @@
     CLANG_QSCRIPT,
     CLANG_ELASTIC,
     CLANG_JED,
+    CLANG_CSL,  /* Peter Koch's CSL C Scripting Language */
     CLANG_SWIFT,
     CLANG_FLAVOR = 0x1F,
 };
@@ -430,6 +432,15 @@
     "variable|"
 };
 
+static const char csl_keywords[] = {
+    "const|sizeof|try|catch|throw|static|extern|resize|exists|if|else|"
+    "switch|case|default|while|do|break|continue|for|trace|true|false|"
+};
+
+static const char csl_types[] = {
+    "var|"
+};
+
 static const char c_extensions[] = {
     "c|h|i|C|H|I|"      /* C language */
     /* Other C flavors */
@@ -1417,8 +1428,10 @@
         return 50;
 
     if (p->buf[0] == '#') {
-        /* same for file starting with `#include` or `#pragma`*/
+        /* same for files starting with a preprocessor directive */
         if (strstart(cs8(p->buf), "#include", NULL)
+        ||  strstart(cs8(p->buf), "#ifndef", NULL)
+        ||  strstart(cs8(p->buf), "#define", NULL)
         ||  strstart(cs8(p->buf), "#pragma", NULL)) {
             return 50;
         }
@@ -1538,6 +1551,27 @@
     .fallback = &c_mode,
 };
 
+static const char awk_keywords[] = {
+    "BEGIN|break|case|continue|default|do|else|for|if|next|switch|while|"
+    "print|printf|split|"
+};
+
+static const char awk_types[] = {
+    "char|double|float|int|long|unsigned|short|signed|void|"
+};
+
+ModeDef awk_mode = {
+    .name = "awk",
+    .extensions = "awk",
+    .colorize_func = c_colorize_line,
+    .colorize_flags = CLANG_AWK | CLANG_REGEX,
+    .keywords = awk_keywords,
+    .types = awk_types,
+    .indent_func = c_indent_line,
+    .auto_indent = 1,
+    .fallback = &c_mode,
+};
+
 ModeDef css_mode = {
     .name = "CSS",
     .extensions = "css",
@@ -1814,6 +1848,19 @@
     .fallback = &c_mode,
 };
 
+ModeDef csl_mode = {
+    .name = "CSL",
+    .extensions = "csl",
+    .shell_handlers = "csl",
+    .colorize_func = c_colorize_line,
+    .colorize_flags = CLANG_CSL | CLANG_PREPROC,
+    .keywords = csl_keywords,
+    .types = csl_types,
+    .indent_func = c_indent_line,
+    .auto_indent = 1,
+    .fallback = &c_mode,
+};
+
 #include "swift.c"
 
 static int c_init(void)
@@ -1832,6 +1879,7 @@
     qe_register_mode(&cpp_mode, MODEF_SYNTAX);
     qe_register_mode(&objc_mode, MODEF_SYNTAX);
     qe_register_mode(&csharp_mode, MODEF_SYNTAX);
+    qe_register_mode(&awk_mode, MODEF_SYNTAX);
     qe_register_mode(&css_mode, MODEF_SYNTAX);
     qe_register_mode(&js_mode, MODEF_SYNTAX);
     qe_register_mode(&as_mode, MODEF_SYNTAX);
@@ -1854,6 +1902,7 @@
     qe_register_mode(&qscript_mode, MODEF_SYNTAX);
     qe_register_mode(&ec_mode, MODEF_SYNTAX);
     qe_register_mode(&sl_mode, MODEF_SYNTAX);
+    qe_register_mode(&csl_mode, MODEF_SYNTAX);
     swift_init();
 
     return 0;



reply via email to

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