masad-frost 7 年之前
父節點
當前提交
9987c4fd86
共有 1 個文件被更改,包括 214 次插入192 次删除
  1. 214 192
      src/clojure/clojure.ts

+ 214 - 192
src/clojure/clojure.ts

@@ -9,205 +9,227 @@ import IRichLanguageConfiguration = monaco.languages.LanguageConfiguration;
 import ILanguage = monaco.languages.IMonarchLanguage;
 
 export const conf: IRichLanguageConfiguration = {
-  comments: {
-    lineComment: ';;',
-    blockComment: ['(comment', ')'],
-  },
-
-  brackets: [['(', ')'], ['{', '}'], ['[', ']']],
-
-  autoClosingPairs: [
-    { open: '{', close: '}' },
-    { open: '[', close: ']' },
-    { open: '(', close: ')' },
-    { open: '"', close: '"' },
-  ],
-
-  surroundingPairs: [
-    { open: '{', close: '}' },
-    { open: '[', close: ']' },
-    { open: '(', close: ')' },
-    { open: '"', close: '"' },
-  ],
-};
-
-export const language = <ILanguage>{
-  defaultToken: '',
-  ignoreCase: true,
-  tokenPostfix: '.clj',
-
-  brackets: [
-    { open: '(', close: ')', token: 'delimiter.parenthesis' },
-    { open: '{', close: '}', token: 'delimiter.curly' },
-    { open: '[', close: ']', token: 'delimiter.square' },
-  ],
-
-  keywords: [
-    'ns',
-    'ns\-unmap',
-    'create\-ns',
-    'in\-ns',
-    'fn',
-    'def',
-    'defn',
-    'defmacro',
-    'defmulti',
-    'defonce',
-    'require',
-    'import',
-    'new',
-    'refer',
-    'pos',
-    'pos\?',
-    'filter',
-    'map',
-    'reduce',
-    'repeat',
-    'key',
-    'rest',
-    'concat',
-    'into',
-    'reverse',
-    'iterate',
-    'range',
-    'drop',
-    'drop\-while',
-    'take',
-    'take\-while',
-    'neg',
-    'neg?',
-    'bound\-fn',
-    'if',
-    'if\-not',
-    'if\-let',
-    'case,',
-    'contains',
-    'conj',
-    'disj',
-    'sort',
-    'get',
-    'assoc',
-    'merge',
-    'keys',
-    'vals',
-    'nth',
-    'first',
-    'last',
-    'count',
-    'contains?',
-    'cond',
-    'condp',
-    'cond\-\>',
-    'cond\-\>\>',
-    'when',
-    'while',
-    'when\-not',
-    'when\-let',
-    'when\-first',
-    'do',
-    'future',
-    'comment',
-    'doto',
-    'locking',
-    'proxy',
-    'println',
-    'type',
-    'meta',
-    'var',
-    'as\-\>',
-    'reify',
-    'deftype',
-    'defrecord',
-    'defprotocol',
-    'extend',
-    'extend-protocol',
-    'extend-type',
-    'specify',
-    'specify\!',
-    'try',
-    'catch',
-    'finally',
-    'let',
-    'letfn',
-    'binding',
-    'loop',
-    'for',
-    'seq',
-    'doseq',
-    'dotimes',
-    'when\-let',
-    'if\-let',
-    'when\-some',
-    'if\-some',
-    'this\-as',
-    'defmethod',
-    'testing',
-    'deftest',
-    'are',
-    'use\-fixtures',
-    'use',
-    'remove',
-    'run',
-    'run\*',
-    'fresh',
-    'alt!',
-    'alt!!',
-    'go',
-    'go\-loop',
-    'thread',
-  ],
-
-  constants: ['true', 'false', 'nil', 'boolean', 'str'],
-
-  operators: ['=', 'not=', '<', '<=', '>', '>=', 'and', 'or', 'not', 'inc', 'dec', 'max', 'min', 'rem', 'bit-and', 'bit-or', 'bit-xor', 'bit-not'],
-
-  tokenizer: {
-    root: [
-      [/#[xXoObB][0-9a-fA-F]+/, 'number.hex'],
-      [/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?/, 'number.float'],
-
-      [/(?:\b(?:(def|defn|defmacro|defmulti|defonce|ns|ns-unmap|fn))\b)(\s+)((?:\w|\-|\!|\?)*)/, ['keyword', 'white', 'variable']],
-
-      [
-        /[a-zA-Z_#][a-zA-Z0-9_\-\?\!\*]*/,
-        {
-          cases: {
-            '@keywords': 'keyword',
-            '@constants': 'constant',
-            '@operators': 'operators',
-            '@default': 'identifier',
-          },
-        },
-      ],
-
-      { include: '@whitespace' },
-      { include: '@strings' },
+    comments: {
+        lineComment: ';;',
+        blockComment: ['(comment', ')'],
+    },
+
+    brackets: [['(', ')'], ['{', '}'], ['[', ']']],
+
+    autoClosingPairs: [
+        { open: '{', close: '}' },
+        { open: '[', close: ']' },
+        { open: '(', close: ')' },
+        { open: '"', close: '"' },
     ],
 
-    comment: [
-      [/[^\(comment]+/, 'comment'],
-      [/\)/, 'comment', '@push'],
-      [/\(comment/, 'comment', '@pop'],
-      [/[\)]/, 'comment'],
+    surroundingPairs: [
+        { open: '{', close: '}' },
+        { open: '[', close: ']' },
+        { open: '(', close: ')' },
+        { open: '"', close: '"' },
     ],
+};
 
-    whitespace: [
-      [/[ \t\r\n]+/, 'white'],
-      [/\(comment/, 'comment', '@comment'],
-      [/;;.*$/, 'comment'],
+export const language = <ILanguage>{
+    defaultToken: '',
+    ignoreCase: true,
+    tokenPostfix: '.clj',
+
+    brackets: [
+        { open: '(', close: ')', token: 'delimiter.parenthesis' },
+        { open: '{', close: '}', token: 'delimiter.curly' },
+        { open: '[', close: ']', token: 'delimiter.square' },
     ],
 
-    strings: [
-      [/"$/, 'string', '@popall'],
-      [/"(?=.)/, 'string', '@multiLineString'],
+    keywords: [
+        'ns',
+        'ns-unmap',
+        'create-ns',
+        'in-ns',
+        'fn',
+        'def',
+        'defn',
+        'defmacro',
+        'defmulti',
+        'defonce',
+        'require',
+        'import',
+        'new',
+        'refer',
+        'pos',
+        'pos?',
+        'filter',
+        'map',
+        'reduce',
+        'repeat',
+        'key',
+        'rest',
+        'concat',
+        'into',
+        'reverse',
+        'iterate',
+        'range',
+        'drop',
+        'drop-while',
+        'take',
+        'take-while',
+        'neg',
+        'neg?',
+        'bound-fn',
+        'if',
+        'if-not',
+        'if-let',
+        'case,',
+        'contains',
+        'conj',
+        'disj',
+        'sort',
+        'get',
+        'assoc',
+        'merge',
+        'keys',
+        'vals',
+        'nth',
+        'first',
+        'last',
+        'count',
+        'contains?',
+        'cond',
+        'condp',
+        'cond->',
+        'cond->>',
+        'when',
+        'while',
+        'when-not',
+        'when-let',
+        'when-first',
+        'do',
+        'future',
+        'comment',
+        'doto',
+        'locking',
+        'proxy',
+        'println',
+        'type',
+        'meta',
+        'var',
+        'as->',
+        'reify',
+        'deftype',
+        'defrecord',
+        'defprotocol',
+        'extend',
+        'extend-protocol',
+        'extend-type',
+        'specify',
+        'specify!',
+        'try',
+        'catch',
+        'finally',
+        'let',
+        'letfn',
+        'binding',
+        'loop',
+        'for',
+        'seq',
+        'doseq',
+        'dotimes',
+        'when-let',
+        'if-let',
+        'when-some',
+        'if-some',
+        'this-as',
+        'defmethod',
+        'testing',
+        'deftest',
+        'are',
+        'use-fixtures',
+        'use',
+        'remove',
+        'run',
+        'run*',
+        'fresh',
+        'alt!',
+        'alt!!',
+        'go',
+        'go-loop',
+        'thread',
     ],
 
-    multiLineString: [
-      [/\\./, 'string.escape'],
-      [/"/, 'string', '@popall'],
-      [/.(?=.*")/, 'string'],
-      [/.*\\$/, 'string'],
-      [/.*$/, 'string', '@popall'],
+    constants: ['true', 'false', 'nil', 'boolean', 'str'],
+
+    operators: [
+        '=',
+        'not=',
+        '<',
+        '<=',
+        '>',
+        '>=',
+        'and',
+        'or',
+        'not',
+        'inc',
+        'dec',
+        'max',
+        'min',
+        'rem',
+        'bit-and',
+        'bit-or',
+        'bit-xor',
+        'bit-not',
     ],
-  },
+
+    tokenizer: {
+        root: [
+            [/#[xXoObB][0-9a-fA-F]+/, 'number.hex'],
+            [/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?/, 'number.float'],
+
+            [
+                /(?:\b(?:(def|defn|defmacro|defmulti|defonce|ns|ns-unmap|fn))\b)(\s+)((?:\w|\-|\!|\?)*)/,
+                ['keyword', 'white', 'variable'],
+            ],
+
+            [
+                /[a-zA-Z_#][a-zA-Z0-9_\-\?\!\*]*/,
+                {
+                    cases: {
+                        '@keywords': 'keyword',
+                        '@constants': 'constant',
+                        '@operators': 'operators',
+                        '@default': 'identifier',
+                    },
+                },
+            ],
+
+            { include: '@whitespace' },
+            { include: '@strings' },
+        ],
+
+        comment: [
+            [/[^\(comment]+/, 'comment'],
+            [/\)/, 'comment', '@push'],
+            [/\(comment/, 'comment', '@pop'],
+            [/[\)]/, 'comment'],
+        ],
+
+        whitespace: [
+            [/[ \t\r\n]+/, 'white'],
+            [/\(comment/, 'comment', '@comment'],
+            [/;;.*$/, 'comment'],
+        ],
+
+        strings: [
+            [/"$/, 'string', '@popall'],
+            [/"(?=.)/, 'string', '@multiLineString'],
+        ],
+
+        multiLineString: [
+            [/\\./, 'string.escape'],
+            [/"/, 'string', '@popall'],
+            [/.(?=.*")/, 'string'],
+            [/.*\\$/, 'string'],
+            [/.*$/, 'string', '@popall'],
+        ],
+    },
 };