summaryrefslogtreecommitdiff
path: root/runtime/syntax/j.vim
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2013-09-22 14:42:24 +0200
committerBram Moolenaar <Bram@vim.org>2013-09-22 14:42:24 +0200
commitbaca7f705babaa1caeb0bce7f63f6275feca6641 (patch)
treeab045d9c9d5f5d0287b2b002337f2a41291cd629 /runtime/syntax/j.vim
parent595cad2ea1c77c40a34a240c71290fdef6aabd3b (diff)
downloadvim-git-baca7f705babaa1caeb0bce7f63f6275feca6641.tar.gz
Update runtime files. Add support for J.
Diffstat (limited to 'runtime/syntax/j.vim')
-rw-r--r--runtime/syntax/j.vim43
1 files changed, 43 insertions, 0 deletions
diff --git a/runtime/syntax/j.vim b/runtime/syntax/j.vim
new file mode 100644
index 000000000..6ba9366a4
--- /dev/null
+++ b/runtime/syntax/j.vim
@@ -0,0 +1,43 @@
+" Vim syntax file
+" Language: J
+" Maintainer: David Bürgin <676c7473@gmail.com>
+" Last Change: 2013-09-21
+
+if exists("b:current_syntax")
+ finish
+endif
+
+syntax case match
+syntax sync minlines=50
+
+syn match jControl /\<\%(assert\|break\|case\|catch[dt]\=\|continue\|do\|else\%(if\)\=\|end\|fcase\|for\|if\|return\|select\|throw\|try\|whil\%(e\|st\)\)\./
+syn match jControl /\<\%(for\|goto\|label\)_\a\k*\./
+
+syn region jString oneline start=/'/ skip=/''/ end=/'/
+
+" Patterns for numbers in general, rational numbers, numbers with explicit
+" base, infinities, and numbers with extended precision.
+"
+" Matching J numbers is difficult. The regular expression used for the general
+" case roughly embodies this grammar sketch:
+"
+" EXP := /_?\d+(\.\d*)?([eE]_?\d+)?/
+" COMP := EXP | EXP (j|a[dr]) EXP
+" PIEU := COMP | COMP [px] COMP
+"
+" For the rest, a compromise between correctness and practicality was made.
+" See http://www.jsoftware.com/help/dictionary/dcons.htm for reference.
+syn match jNumber /\<_\=\d\+\%(\.\d*\)\=\%([eE]_\=\d\+\)\=\%(\%(j\|a[dr]\)_\=\d\+\%(\.\d*\)\=\%([eE]_\=\d\+\)\=\)\=\%([px]_\=\d\+\%(\.\d*\)\=\%([eE]_\=\d\+\)\=\%(\%(j\|a[dr]\)_\=\d\+\%(\.\d*\)\=\%([eE]_\=\d\+\)\=\)\=\)\=/
+syn match jNumber /\<_\=\d\+\%(\.\d*\)\=\%([eE]_\=\d\+\)\=r_\=\d\+\%(\.\d*\)\=\%([eE]_\=\d\+\)\=/
+syn match jNumber /\<_\=\d\+\%([eE]\d\+\)\=b_\=[0-9a-z]\+/
+syn match jNumber /\<__\=\>/
+syn match jNumber /\<_\=\d\+x\>/
+
+syn match jComment /NB\..*$/
+
+hi def link jControl Statement
+hi def link jString String
+hi def link jNumber Number
+hi def link jComment Comment
+
+let b:current_syntax = "j"