summaryrefslogtreecommitdiffstats
path: root/genvim.txr
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2021-05-27 20:47:15 -0700
committerKaz Kylheku <kaz@kylheku.com>2021-05-27 20:47:15 -0700
commitb2bedb3c0eae02198678732578db4fa0c0a89fd7 (patch)
treeabedee9471f340e5610d96cecfe0b5db7ab6cc9d /genvim.txr
parent29072ef92ec1f91a22bbfcda024af7395154b1ed (diff)
downloadtxr-b2bedb3c0eae02198678732578db4fa0c0a89fd7.tar.gz
txr-b2bedb3c0eae02198678732578db4fa0c0a89fd7.tar.bz2
txr-b2bedb3c0eae02198678732578db4fa0c0a89fd7.zip
vim: syntax highlighting for #J syntax.
* genvim.txr (dig19, bvar, dir, list): New variables. (txr_bracevar, tl_bracevar, tl_directive, txr_list, txr_bracket, txr_mlist_txr_mbracket): Use variable to specify common contents. JSON stuff added. (txr_ign_tok): Specify contents using @list. (txr_jkeyword, txr_jerr, txr_jpunc, txr_jesc, txr_juesc, txr_jnum): New matches. (txr_junqlist, txr_jstring, txr_jarray, txr_jhash): New regions.
Diffstat (limited to 'genvim.txr')
-rw-r--r--genvim.txr54
1 files changed, 46 insertions, 8 deletions
diff --git a/genvim.txr b/genvim.txr
index eaa44ecb..ae6394a0 100644
--- a/genvim.txr
+++ b/genvim.txr
@@ -43,6 +43,7 @@ static void dir_tables_init(void)
@(bind alpha "A-Za-z_")
@(bind alnum "A-Za-z_0-9")
@(bind dig "0-9")
+@(bind dig19 "1-9")
@(bind oct "0-7")
@(bind chesc `abtnvfre@bs \\n`)
@(bind glyph `!$%&*+\\-<=>?@{bs}_~`)
@@ -60,6 +61,22 @@ static void dir_tables_init(void)
meth umeth usl))
(list text)))))
@(bind comments #"\\;\\;\\; \\;\\; \\;")
+@(bind bvar "txr_num,txr_pnum,tl_ident,tl_splice,tl_metanum,\
+ txr_metaat,txr_circ,txr_braced_ident,txr_dot,\
+ txr_dotdot,txr_string,txr_list,txr_bracket,\
+ txr_mlist,txr_mbracket,txr_regex,txr_quasilit,\
+ txr_chr,txr_nested_error")
+@(bind dir "txr_keyword,txr_string,txr_list,txr_bracket,\
+ txr_mlist,txr_mbracket,txr_quasilit,txr_num,txr_pnum,\
+ txr_badnum,tl_ident,tl_regex,txr_string,txr_chr,\
+ txr_quote,txr_unquote,txr_splice,txr_dot,txr_dotdot,\
+ txr_metaat,txr_circ,txr_ncomment,txr_nested_error")
+@(bind list "tl_keyword,txr_string,tl_regex,txr_num,txr_pnum,\
+ txr_badnum,tl_ident,txr_metanum,txr_ign_par,txr_ign_bkt,\
+ txr_ign_tok,txr_list,txr_bracket,txr_mlist,txr_mbracket,\
+ txr_quasilit,txr_chr,txr_buf,txr_quote,txr_unquote,\
+ txr_splice,txr_dot,txr_dotdot,txr_metaat,txr_circ,txr_jhash,\
+ txr_jarray,txr_ncomment,txr_nested_error")
@(define generate (txr-p))
@ (output @(if txr-p "txr.vim" "tl.vim"))
" VIM Syntax file for txr
@@ -144,27 +161,40 @@ syn match txr_circ "#[0-9]\+[#=]"
syn match txr_buf_error "[^']" contained
syn match txr_buf_interior "\([@hex][\n\t ]*[@hex]\|[\n\t ]\+\)" contained
-syn region txr_bracevar matchgroup=Delimiter start="@@[ \t]*[*]\?{" matchgroup=Delimiter end="}" contains=txr_num,txr_pnum,tl_ident,tl_splice,tl_metanum,txr_metaat,txr_circ,txr_braced_ident,txr_dot,txr_dotdot,txr_string,txr_list,txr_bracket,txr_mlist,txr_mbracket,txr_regex,txr_quasilit,txr_chr,txr_nested_error
-syn region tl_bracevar contained matchgroup=Delimiter start="@@[ \t]*[*]\?{" matchgroup=Delimiter end="}" contains=txr_num,txr_pnum,tl_ident,tl_splice,tl_metanum,txr_metaat,txr_circ,txr_braced_ident,txr_dot,txr_dotdot,txr_string,txr_list,txr_bracket,txr_mlist,txr_mbracket,tl_regex,txr_quasilit,txr_chr,txr_nested_error
+syn region txr_bracevar matchgroup=Delimiter start="@@[ \t]*[*]\?{" matchgroup=Delimiter end="}" contains=@bvar
+syn region tl_bracevar contained matchgroup=Delimiter start="@@[ \t]*[*]\?{" matchgroup=Delimiter end="}" contains=@bvar
@ (if txr-p)
-syn region txr_directive matchgroup=Delimiter start="@@[ \t]*(" matchgroup=Delimiter end=")" contains=txr_keyword,txr_string,txr_list,txr_bracket,txr_mlist,txr_mbracket,txr_quasilit,txr_num,txr_pnum,txr_badnum,tl_ident,tl_regex,txr_string,txr_chr,txr_quote,txr_unquote,txr_splice,txr_dot,txr_dotdot,txr_metaat,txr_circ,txr_ncomment,txr_nested_error
+syn region txr_directive matchgroup=Delimiter start="@@[ \t]*(" matchgroup=Delimiter end=")" contains=@dir
@ (end)
-syn region txr_list @(if txr-p "contained ")matchgroup=Delimiter start="\(#[HSRTN]\?\)\?(" matchgroup=Delimiter end=")" contains=tl_keyword,txr_string,tl_regex,txr_num,txr_pnum,txr_badnum,tl_ident,txr_metanum,txr_ign_par,txr_ign_bkt,txr_ign_tok,txr_list,txr_bracket,txr_mlist,txr_mbracket,txr_quasilit,txr_chr,txr_buf,txr_quote,txr_unquote,txr_splice,txr_dot,txr_dotdot,txr_metaat,txr_circ,txr_ncomment,txr_nested_error
-syn region txr_bracket @(if txr-p "contained ")matchgroup=Delimiter start="\[" matchgroup=Delimiter end="\]" contains=tl_keyword,txr_string,tl_regex,txr_num,txr_pnum,txr_badnum,tl_ident,txr_metanum,txr_ign_par,txr_ign_bkt,txr_ign_tok,txr_list,txr_bracket,txr_mlist,txr_mbracket,txr_quasilit,txr_chr,txr_buf,txr_quote,txr_unquote,txr_splice,txr_dot,txr_dotdot,txr_metaat,txr_circ,txr_ncomment,txr_nested_error
-syn region txr_mlist @(if txr-p "contained ")matchgroup=Delimiter start="@@[ \t^',]*(" matchgroup=Delimiter end=")" contains=tl_keyword,txr_string,tl_regex,txr_num,txr_pnum,txr_badnum,tl_ident,txr_metanum,txr_ign_par,txr_ign_bkt,txr_ign_tok,txr_list,txr_bracket,txr_mlist,txr_mbracket,txr_quasilit,txr_chr,txr_buf,txr_quote,txr_unquote,txr_splice,txr_dot,txr_dotdot,txr_metaat,txr_circ,txr_ncomment,txr_nested_error
-syn region txr_mbracket matchgroup=Delimiter start="@@[ \t^',]*\[" matchgroup=Delimiter end="\]" contains=tl_keyword,txr_string,tl_regex,txr_num,txr_pnum,txr_badnum,tl_ident,txr_metanum,txr_ign_par,txr_ign_bkt,txr_ign_tok,txr_list,txr_bracket,txr_mlist,txr_mbracket,txr_quasilit,txr_chr,txr_buf,txr_quote,txr_unquote,txr_splice,txr_dot,txr_dotdot,txr_metaat,txr_circ,txr_ncomment,txr_nested_error
+syn region txr_list @(if txr-p "contained ")matchgroup=Delimiter start="\(#[HSRTN]\?\)\?(" matchgroup=Delimiter end=")" contains=@list
+syn region txr_bracket @(if txr-p "contained ")matchgroup=Delimiter start="\[" matchgroup=Delimiter end="\]" contains=@list
+syn region txr_mlist @(if txr-p "contained ")matchgroup=Delimiter start="@@[ \t^',]*(" matchgroup=Delimiter end=")" contains=@list
+syn region txr_mbracket matchgroup=Delimiter start="@@[ \t^',]*\[" matchgroup=Delimiter end="\]" contains=@list
syn region txr_string @(if txr-p "contained ")start=+#\?\*\?"+ end=+["\n]+ contains=txr_stresc,txr_numesc,txr_badesc
syn region txr_quasilit @(if txr-p "contained ")start=+#\?\*\?`+ end=+[`\n]+ contains=txr_splicevar,txr_metanum,tl_bracevar,txr_mlist,txr_mbracket,txr_escat,txr_stresc,txr_numesc,txr_badesc
syn region txr_regex @(if txr-p "contained ")start="/" end="[/\n]" contains=txr_regesc,txr_numesc,txr_badesc
syn region tl_regex @(if txr-p "contained ")start="#/" end="[/\n]" contains=txr_regesc,txr_numesc,txr_badesc
syn region txr_buf @(if txr-p "contained ")matchgroup=txr_buf start="#b'" end="'" contains=txr_buf_interior,txr_buf_error
-syn region txr_ign_tok @(if txr-p "contained ")matchgroup=Comment start="#;" end="[ \(\)\[\]]"me=e contains=txr_string,tl_regex,txr_num,txr_pnum,tl_ident,txr_metanum,txr_quasilit,txr_chr,txr_buf,txr_quote,txr_unquote,txr_splice,txr_dot,txr_dotdot,txr_metaat,txr_circ,txr_ncomment
+syn region txr_ign_tok @(if txr-p "contained ")matchgroup=Comment start="#;" end="[ \(\)\[\]]"me=e contains=@list
syn region txr_ign_par @(if txr-p "contained ")matchgroup=Comment start="#;[ \t',]*\(#[HSRTN]\?\)\?(" matchgroup=Comment end=")" contains=txr_ign_par_interior,txr_ign_bkt_interior
syn region txr_ign_bkt @(if txr-p "contained ")matchgroup=Comment start="#;[ \t',]*\(#[HSRTN]\?\)\?\[" matchgroup=Comment end="\]" contains=txr_ign_par_interior,txr_ign_bkt_interior
syn region txr_ign_bkt @(if txr-p "contained ")matchgroup=Comment start="#;[ \t',]*\(#[HSRTN]\?\)\?\[" matchgroup=Comment end="\]" contains=txr_ign_par_interior,txr_ign_bkt_interior
syn region txr_ign_par_interior contained matchgroup=Comment start="(" matchgroup=Comment end=")" contains=txr_ign_par_interior,txr_ign_bkt_interior
syn region txr_ign_bkt_interior contained matchgroup=Comment start="\[" matchgroup=Comment end="\]" contains=txr_ign_par_interior,txr_ign_bkt_interior
+syn keyword txr_jkeyword contained true false
+
+syn match txr_jerr "." contained
+syn match txr_jpunc "[,: \t\n]" contained
+syn match txr_jesc "\\[bfnrt"\\/]" contained
+syn match txr_juesc "\\u[@hex][@hex][@hex][@hex]" contained
+syn match txr_jnum "-\?\(0\|[@dig19][@dig]*\)\([.][@dig]\+\)\?\([Ee][+-][@dig]\+\)\?" contained
+
+syn region txr_junqlist @(if txr-p "contained ")matchgroup=Delimiter start="\~\*\?(" end=")" contains=@list
+syn region txr_jstring @(if txr-p "contained ")matchgroup=Delimiter start=+"+ end=+["\n]+ contains=txr_jesc,txr_juesc,txr_badesc
+syn region txr_jarray @(if txr-p "contained ")matchgroup=Delimiter start="#J\^\?\[" matchgroup=Delimiter end="\]" contains=tl_jkeyword,txr_jstring,txr_jnum,txr_jpunc,txr_junqlist,txr_jerr
+syn region txr_jhash @(if txr-p "contained ")matchgroup=Delimiter start="#J\^\?{" matchgroup=Delimiter end="}" contains=tl_jkeyword,txr_jstring,txr_jnum,txr_jpunc,txr_junqlist,txr_jerr
+
hi def link txr_at Special
hi def link txr_atstar Special
hi def link txr_atat Special
@@ -219,6 +249,14 @@ hi def link txr_ign_par_interior Comment
hi def link txr_ign_bkt Comment
hi def link txr_ign_tok Comment
+hi def link txr_jkeyword Type
+hi def link txr_jnum Number
+hi def link txr_jstring String
+hi def link txr_jesc Special
+hi def link txr_juesc Special
+hi def link txr_jpunc Special
+hi def link txr_jerr Error
+
let b:current_syntax = "lisp"
set lispwords=@{lispwords ","},:method,:function,:init,:postinit,:fini