diff --git a/src/clojure/clojure.ts b/src/clojure/clojure.ts index 010c6dec..5d58f315 100644 --- a/src/clojure/clojure.ts +++ b/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', ')'], - }, + comments: { + lineComment: ';;', + blockComment: ['(comment', ')'], + }, - brackets: [['(', ')'], ['{', '}'], ['[', ']']], + brackets: [['(', ')'], ['{', '}'], ['[', ']']], - autoClosingPairs: [ - { open: '{', close: '}' }, - { open: '[', close: ']' }, - { open: '(', close: ')' }, - { open: '"', close: '"' }, - ], + autoClosingPairs: [ + { open: '{', close: '}' }, + { open: '[', close: ']' }, + { open: '(', close: ')' }, + { open: '"', close: '"' }, + ], - surroundingPairs: [ - { open: '{', close: '}' }, - { open: '[', close: ']' }, - { open: '(', close: ')' }, - { open: '"', close: '"' }, - ], + surroundingPairs: [ + { open: '{', close: '}' }, + { open: '[', close: ']' }, + { open: '(', close: ')' }, + { open: '"', close: '"' }, + ], }; export const language = { - defaultToken: '', - ignoreCase: true, - tokenPostfix: '.clj', + 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' }, + brackets: [ + { open: '(', close: ')', token: 'delimiter.parenthesis' }, + { open: '{', close: '}', token: 'delimiter.curly' }, + { open: '[', close: ']', token: 'delimiter.square' }, ], - comment: [ - [/[^\(comment]+/, 'comment'], - [/\)/, 'comment', '@push'], - [/\(comment/, 'comment', '@pop'], - [/[\)]/, 'comment'], + 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', ], - whitespace: [ - [/[ \t\r\n]+/, 'white'], - [/\(comment/, 'comment', '@comment'], - [/;;.*$/, 'comment'], + constants: ['true', 'false', 'nil', 'boolean', 'str'], + + operators: [ + '=', + 'not=', + '<', + '<=', + '>', + '>=', + 'and', + 'or', + 'not', + 'inc', + 'dec', + 'max', + 'min', + 'rem', + 'bit-and', + 'bit-or', + 'bit-xor', + 'bit-not', ], - strings: [ - [/"$/, 'string', '@popall'], - [/"(?=.)/, 'string', '@multiLineString'], - ], + tokenizer: { + root: [ + [/#[xXoObB][0-9a-fA-F]+/, 'number.hex'], + [/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?/, 'number.float'], - multiLineString: [ - [/\\./, 'string.escape'], - [/"/, 'string', '@popall'], - [/.(?=.*")/, 'string'], - [/.*\\$/, 'string'], - [/.*$/, 'string', '@popall'], - ], - }, + [ + /(?:\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'], + ], + }, };