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: Fri, 30 May 2014 17:37:32 +0000

CVSROOT:        /sources/qemacs
Module name:    qemacs
Changes by:     Charlie Gordon <chqrlie>        14/05/30 17:37:32

Modified files:
        .              : clang.c 

Log message:
        add C flavors for elastiC and Jed slang languages

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

Patches:
Index: clang.c
===================================================================
RCS file: /sources/qemacs/qemacs/clang.c,v
retrieving revision 1.73
retrieving revision 1.74
diff -u -b -r1.73 -r1.74
--- clang.c     30 May 2014 17:18:13 -0000      1.73
+++ clang.c     30 May 2014 17:37:31 -0000      1.74
@@ -47,6 +47,8 @@
     CLANG_CALC,
     CLANG_ENSCRIPT,
     CLANG_QSCRIPT,
+    CLANG_ELASTIC,
+    CLANG_JED,
     CLANG_FLAVOR = 0x1F,
 };
 
@@ -401,6 +403,26 @@
     "char|int|var|void|Array|Char|Function|Number|Object|String|"
 };
 
+static const char ec_keywords[] = {
+    "@false|@nil|@true|new|self|"
+    "break|catch|class|continue|do|else|extends|for|from|function|goto|if|"
+    "import|in|local|method|package|private|public|return|static|super|"
+    "throw|try|while|"
+};
+
+static const char ec_types[] = {
+    "none|short|ushort|int|uint|long|ulong|char|uchar|float|double|bool|"
+    "string|static_string|array|callback|symbol|"
+};
+
+static const char sl_keywords[] = {
+    "define|if|else|return|static|while|break|do|"
+};
+
+static const char sl_types[] = {
+    "variable|"
+};
+
 static const char c_extensions[] = {
     "c|h|i|C|H|I|"      /* C language */
     /* Other C flavors */
@@ -618,6 +640,11 @@
                 continue;
             }
             break;
+        case '%':
+            if (flavor == CLANG_JED) {
+                goto parse_comment1;
+            }
+            break;
         case '#':       /* preprocessor */
             if (mode_flags & CLANG_PREPROC) {
                 state = IN_C_PREPROCESS;
@@ -1379,7 +1406,6 @@
             return 50;
         }
     }
-
     return 1;
 }
 
@@ -1711,6 +1737,28 @@
     .auto_indent = 1,
 };
 
+ModeDef ec_mode = {
+    .name = "elastiC",
+    .extensions = "ec",
+    .colorize_func = c_colorize_line,
+    .colorize_flags = CLANG_ELASTIC,
+    .keywords = ec_keywords,
+    .types = ec_types,
+    .indent_func = c_indent_line,
+    .auto_indent = 1,
+};
+
+ModeDef sl_mode = {
+    .name = "Jed",  /* S-Lang */
+    .extensions = "sl",
+    .colorize_func = c_colorize_line,
+    .colorize_flags = CLANG_JED | CLANG_PREPROC,
+    .keywords = sl_keywords,
+    .types = sl_types,
+    .indent_func = c_indent_line,
+    .auto_indent = 1,
+};
+
 static int c_init(void)
 {
     const char *p;
@@ -1747,6 +1795,8 @@
     qe_register_mode(&calc_mode, MODEF_SYNTAX);
     qe_register_mode(&enscript_mode, MODEF_SYNTAX);
     qe_register_mode(&qscript_mode, MODEF_SYNTAX);
+    qe_register_mode(&ec_mode, MODEF_SYNTAX);
+    qe_register_mode(&sl_mode, MODEF_SYNTAX);
 
     return 0;
 }



reply via email to

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