mirror of
https://github.com/ascii-boxes/boxes.git
synced 2025-06-20 17:58:56 +02:00
Improve Vim syntax file DELIM statement #63
Where DELIM is used to change the escape character for strings, Vim now colors the strings correctly.
This commit is contained in:
parent
9e56dec538
commit
53d8b3ce05
138
boxes.vim
138
boxes.vim
@ -12,8 +12,9 @@
|
||||
" ---------------
|
||||
" Latest version available from:
|
||||
" https://github.com/ascii-boxes/boxes/blob/master/boxes.vim
|
||||
" Status: This syntax file is not officially part of a boxes release, and simply intended to be downloaded via the link
|
||||
" above, but we think it's great when it gets packaged and installed with boxes!
|
||||
" Status: Stable
|
||||
" Notes: - Vim requires this file to have system-dependent line endings (CR/LF on Windows, just LF otherwise)
|
||||
" - To activate, copy this file to $VIMRUNTIME/syntax/, for example /usr/share/vim/vim81/syntax/.
|
||||
" Known Issues:
|
||||
" https://github.com/ascii-boxes/boxes/issues?q=is%3Aissue+is%3Aopen+Vim+Syntax
|
||||
" _____________________________________________________________________________________________________________________
|
||||
@ -39,9 +40,9 @@ syntax iskeyword a-z,A-Z
|
||||
"
|
||||
" Key Words
|
||||
"
|
||||
syntax keyword boxesClassicKeywords author designer revision created revdate tags indent skipwhite skipempty nextgroup=boxesString
|
||||
syntax keyword boxesBlocks elastic replace reverse padding shapes skipwhite skipempty
|
||||
syntax keyword boxesRegStuff with to once global skipwhite skipempty
|
||||
syntax keyword boxesClassicKeywords author designer revision created revdate tags indent
|
||||
syntax keyword boxesBlocks elastic replace reverse padding shapes
|
||||
syntax keyword boxesRegStuff with to once global
|
||||
syntax keyword boxesParent parent skipwhite nextgroup=boxesParentPath,boxesParentGlobal
|
||||
syntax keyword boxesEnd end skipwhite skipempty nextgroup=boxesNameAtEnd
|
||||
|
||||
@ -53,9 +54,6 @@ syntax keyword boxesShapes se sse s ssw sw wsw w wnw
|
||||
syntax keyword boxesPads a[ll] l[eft] r[ight] t top
|
||||
syntax keyword boxesPads b[ottom] h[orizontal] v[ertical]
|
||||
|
||||
" Delimiter statement
|
||||
syntax keyword boxesDelim delim delimiter skipwhite skipempty nextgroup=boxesDelSpec
|
||||
|
||||
|
||||
"
|
||||
" Error - this is matched when the others don't match
|
||||
@ -63,24 +61,82 @@ syntax keyword boxesDelim delim delimiter skipwhite skipempty nextgroup=boxesDe
|
||||
syntax match boxesError /\S/
|
||||
|
||||
|
||||
"
|
||||
" Main syntax definition part
|
||||
"
|
||||
" Delim Regions
|
||||
" Within these regions, a different special character is used as escape character in strings.
|
||||
syntax region delimRegion01 matchgroup=boxesString start=/[ \t\r\n]\+"[~'`!@%&*=:;<>?/|.\\][ \t\r\n]/ end=/\<end\>\|\<delim\>\|\<delimiter\>/he=s-1 contains=boxesString01,boxesList01,@boxesDelimContained
|
||||
syntax region delimRegion02 matchgroup=boxesString start=/[ \t\r\n]\+\~["'`!@%&*=:;<>?/|.\\][ \t\r\n]/ end=/\<end\>\|\<delim\>\|\<delimiter\>/he=s-1 contains=boxesString02,boxesList02,@boxesDelimContained
|
||||
syntax region delimRegion03 matchgroup=boxesString start=/[ \t\r\n]\+'["~`!@%&*=:;<>?/|.\\][ \t\r\n]/ end=/\<end\>\|\<delim\>\|\<delimiter\>/he=s-1 contains=boxesString03,boxesList03,@boxesDelimContained
|
||||
syntax region delimRegion04 matchgroup=boxesString start=/[ \t\r\n]\+`["~'!@%&*=:;<>?/|.\\][ \t\r\n]/ end=/\<end\>\|\<delim\>\|\<delimiter\>/he=s-1 contains=boxesString04,boxesList04,@boxesDelimContained
|
||||
syntax region delimRegion05 matchgroup=boxesString start=/[ \t\r\n]\+!["~'`@%&*=:;<>?/|.\\][ \t\r\n]/ end=/\<end\>\|\<delim\>\|\<delimiter\>/he=s-1 contains=boxesString05,boxesList05,@boxesDelimContained
|
||||
syntax region delimRegion06 matchgroup=boxesString start=/[ \t\r\n]\+@["~'`!%&*=:;<>?/|.\\][ \t\r\n]/ end=/\<end\>\|\<delim\>\|\<delimiter\>/he=s-1 contains=boxesString06,boxesList06,@boxesDelimContained
|
||||
syntax region delimRegion07 matchgroup=boxesString start=/[ \t\r\n]\+%["~'`!@&*=:;<>?/|.\\][ \t\r\n]/ end=/\<end\>\|\<delim\>\|\<delimiter\>/he=s-1 contains=boxesString07,boxesList07,@boxesDelimContained
|
||||
syntax region delimRegion08 matchgroup=boxesString start=/[ \t\r\n]\+&["~'`!@%*=:;<>?/|.\\][ \t\r\n]/ end=/\<end\>\|\<delim\>\|\<delimiter\>/he=s-1 contains=boxesString08,boxesList08,@boxesDelimContained
|
||||
syntax region delimRegion09 matchgroup=boxesString start=/[ \t\r\n]\+\*["~'`!@%&=:;<>?/|.\\][ \t\r\n]/ end=/\<end\>\|\<delim\>\|\<delimiter\>/he=s-1 contains=boxesString09,boxesList09,@boxesDelimContained
|
||||
syntax region delimRegion10 matchgroup=boxesString start=/[ \t\r\n]\+=["~'`!@%&*:;<>?/|.\\][ \t\r\n]/ end=/\<end\>\|\<delim\>\|\<delimiter\>/he=s-1 contains=boxesString10,boxesList10,@boxesDelimContained
|
||||
syntax region delimRegion11 matchgroup=boxesString start=/[ \t\r\n]\+:["~'`!@%&*=;<>?/|.\\][ \t\r\n]/ end=/\<end\>\|\<delim\>\|\<delimiter\>/he=s-1 contains=boxesString11,boxesList11,@boxesDelimContained
|
||||
syntax region delimRegion12 matchgroup=boxesString start=/[ \t\r\n]\+;["~'`!@%&*=:<>?/|.\\][ \t\r\n]/ end=/\<end\>\|\<delim\>\|\<delimiter\>/he=s-1 contains=boxesString12,boxesList12,@boxesDelimContained
|
||||
syntax region delimRegion13 matchgroup=boxesString start=/[ \t\r\n]\+<["~'`!@%&*=:;>?/|.\\][ \t\r\n]/ end=/\<end\>\|\<delim\>\|\<delimiter\>/he=s-1 contains=boxesString13,boxesList13,@boxesDelimContained
|
||||
syntax region delimRegion14 matchgroup=boxesString start=/[ \t\r\n]\+>["~'`!@%&*=:;<?/|.\\][ \t\r\n]/ end=/\<end\>\|\<delim\>\|\<delimiter\>/he=s-1 contains=boxesString14,boxesList14,@boxesDelimContained
|
||||
syntax region delimRegion15 matchgroup=boxesString start=/[ \t\r\n]\+?["~'`!@%&*=:;<>/|.\\][ \t\r\n]/ end=/\<end\>\|\<delim\>\|\<delimiter\>/he=s-1 contains=boxesString15,boxesList15,@boxesDelimContained
|
||||
syntax region delimRegion16 matchgroup=boxesString start=/[ \t\r\n]\+\/["~'`!@%&*=:;<>?|.\\][ \t\r\n]/ end=/\<end\>\|\<delim\>\|\<delimiter\>/he=s-1 contains=boxesString16,boxesList16,@boxesDelimContained
|
||||
syntax region delimRegion17 matchgroup=boxesString start=/[ \t\r\n]\+|["~'`!@%&*=:;<>?/.\\][ \t\r\n]/ end=/\<end\>\|\<delim\>\|\<delimiter\>/he=s-1 contains=boxesString17,boxesList17,@boxesDelimContained
|
||||
syntax region delimRegion18 matchgroup=boxesString start=/[ \t\r\n]\+\.["~'`!@%&*=:;<>?/|\\][ \t\r\n]/ end=/\<end\>\|\<delim\>\|\<delimiter\>/he=s-1 contains=boxesString18,boxesList18,@boxesDelimContained
|
||||
syntax region delimRegion matchgroup=boxesString start=/[ \t\r\n]\+\\["~'`!@%&*=:;<>?/|.][ \t\r\n]/ end=/\<end\>\|\<delim\>\|\<delimiter\>/he=s-1 contains=boxesString,boxesList,@boxesDelimContained
|
||||
|
||||
" Trivial elements such as words, numbers, braces
|
||||
syntax match boxesComma contained display /,/
|
||||
syntax match boxesBraces display /[{}]/
|
||||
syntax match boxesDelSpec contained display /[^ \t\r]\+/
|
||||
syntax match boxesNameAtEnd display /[a-zA-ZäöüÄÖÜ][a-zA-Z0-9_\-üäöÜÄÖß]*/ skipwhite skipempty
|
||||
syntax match boxesWord display /[a-zA-ZäöüÄÖÜ][a-zA-Z0-9_\-üäöÜÄÖß]*/
|
||||
syntax match boxesNameAtEnd display /[a-zA-Z][a-zA-Z0-9_-]*/
|
||||
syntax match boxesWord display /[a-zA-Z][a-zA-Z0-9_-]*/
|
||||
syntax match boxesNumber display /[-+]\=\d\+/
|
||||
|
||||
" TODO Introduce a region between delim and delim|end which exists multiple times to cover all escape characters
|
||||
" with specialized string definitions
|
||||
" These items may appear inside a DELIM region
|
||||
syntax cluster boxesDelimContained contains=boxesComment,boxesWord,boxesElasticList
|
||||
syntax cluster boxesDelimContained add=boxesError,boxesBlocks,boxesSample,boxesPads,boxesNumber,boxesBraces
|
||||
syntax cluster boxesDelimContained add=boxesClassicKeywords,boxesRegStuff,boxesShapes
|
||||
|
||||
" a list, used inside shape blocks and for the elastic list
|
||||
syntax region boxesList matchgroup=Normal start="(" end=")" contains=boxesString,boxesShapes,boxesComma,boxesError,boxesComment
|
||||
syntax cluster boxesListContained contains=boxesShapes,boxesComma,boxesError,boxesComment
|
||||
syntax region boxesList01 contained matchgroup=Normal start="(" end=")" contains=boxesString01,@boxesListContained
|
||||
syntax region boxesList02 contained matchgroup=Normal start="(" end=")" contains=boxesString02,@boxesListContained
|
||||
syntax region boxesList03 contained matchgroup=Normal start="(" end=")" contains=boxesString03,@boxesListContained
|
||||
syntax region boxesList04 contained matchgroup=Normal start="(" end=")" contains=boxesString04,@boxesListContained
|
||||
syntax region boxesList05 contained matchgroup=Normal start="(" end=")" contains=boxesString05,@boxesListContained
|
||||
syntax region boxesList06 contained matchgroup=Normal start="(" end=")" contains=boxesString06,@boxesListContained
|
||||
syntax region boxesList07 contained matchgroup=Normal start="(" end=")" contains=boxesString07,@boxesListContained
|
||||
syntax region boxesList08 contained matchgroup=Normal start="(" end=")" contains=boxesString08,@boxesListContained
|
||||
syntax region boxesList09 contained matchgroup=Normal start="(" end=")" contains=boxesString09,@boxesListContained
|
||||
syntax region boxesList10 contained matchgroup=Normal start="(" end=")" contains=boxesString10,@boxesListContained
|
||||
syntax region boxesList11 contained matchgroup=Normal start="(" end=")" contains=boxesString11,@boxesListContained
|
||||
syntax region boxesList12 contained matchgroup=Normal start="(" end=")" contains=boxesString12,@boxesListContained
|
||||
syntax region boxesList13 contained matchgroup=Normal start="(" end=")" contains=boxesString13,@boxesListContained
|
||||
syntax region boxesList14 contained matchgroup=Normal start="(" end=")" contains=boxesString14,@boxesListContained
|
||||
syntax region boxesList15 contained matchgroup=Normal start="(" end=")" contains=boxesString15,@boxesListContained
|
||||
syntax region boxesList16 contained matchgroup=Normal start="(" end=")" contains=boxesString16,@boxesListContained
|
||||
syntax region boxesList17 contained matchgroup=Normal start="(" end=")" contains=boxesString17,@boxesListContained
|
||||
syntax region boxesList18 contained matchgroup=Normal start="(" end=")" contains=boxesString18,@boxesListContained
|
||||
syntax region boxesList matchgroup=Normal start="(" end=")" contains=boxesString,@boxesListContained
|
||||
|
||||
" Strings
|
||||
syntax region boxesString display start=/\z\(["~'`!@%&*=:;<>?/|.\\]\)/ skip=/\\\\\|\\\z1/ end=/\z1/ oneline
|
||||
syntax region boxesString01 contained display start=/\z\([~'`!@%&*=:;<>?/|.\\]\)/ skip=/""\|"\z1/ end=/\z1/ oneline
|
||||
syntax region boxesString02 contained display start=/\z\(["'`!@%&*=:;<>?/|.\\]\)/ skip=/\~\~\|\~\z1/ end=/\z1/ oneline
|
||||
syntax region boxesString03 contained display start=/\z\(["~`!@%&*=:;<>?/|.\\]\)/ skip=/''\|'\z1/ end=/\z1/ oneline
|
||||
syntax region boxesString04 contained display start=/\z\(["~'!@%&*=:;<>?/|.\\]\)/ skip=/``\|`\z1/ end=/\z1/ oneline
|
||||
syntax region boxesString05 contained display start=/\z\(["~'`@%&*=:;<>?/|.\\]\)/ skip=/!!\|!\z1/ end=/\z1/ oneline
|
||||
syntax region boxesString06 contained display start=/\z\(["~'`!%&*=:;<>?/|.\\]\)/ skip=/@@\|@\z1/ end=/\z1/ oneline
|
||||
syntax region boxesString07 contained display start=/\z\(["~'`!@&*=:;<>?/|.\\]\)/ skip=/%%\|%\z1/ end=/\z1/ oneline
|
||||
syntax region boxesString08 contained display start=/\z\(["~'`!@%*=:;<>?/|.\\]\)/ skip=/&&\|&\z1/ end=/\z1/ oneline
|
||||
syntax region boxesString09 contained display start=/\z\(["~'`!@%&=:;<>?/|.\\]\)/ skip=/\*\*\|\*\z1/ end=/\z1/ oneline
|
||||
syntax region boxesString10 contained display start=/\z\(["~'`!@%&*:;<>?/|.\\]\)/ skip=/==\|=\z1/ end=/\z1/ oneline
|
||||
syntax region boxesString11 contained display start=/\z\(["~'`!@%&*=;<>?/|.\\]\)/ skip=/::\|:\z1/ end=/\z1/ oneline
|
||||
syntax region boxesString12 contained display start=/\z\(["~'`!@%&*=:<>?/|.\\]\)/ skip=/;;\|;\z1/ end=/\z1/ oneline
|
||||
syntax region boxesString13 contained display start=/\z\(["~'`!@%&*=:;>?/|.\\]\)/ skip=/<<\|<\z1/ end=/\z1/ oneline
|
||||
syntax region boxesString14 contained display start=/\z\(["~'`!@%&*=:;<?/|.\\]\)/ skip=/>>\|>\z1/ end=/\z1/ oneline
|
||||
syntax region boxesString15 contained display start=/\z\(["~'`!@%&*=:;<>/|.\\]\)/ skip=/??\|?\z1/ end=/\z1/ oneline
|
||||
syntax region boxesString16 contained display start=/\z\(["~'`!@%&*=:;<>?|.\\]\)/ skip=/\/\/\|\/\z1/ end=/\z1/ oneline
|
||||
syntax region boxesString17 contained display start=/\z\(["~'`!@%&*=:;<>?/.\\]\)/ skip=/||\||\z1/ end=/\z1/ oneline
|
||||
syntax region boxesString18 contained display start=/\z\(["~'`!@%&*=:;<>?/|\\]\)/ skip=/\.\.\|\.\z1/ end=/\z1/ oneline
|
||||
syntax region boxesString display start=/\z\(["~'`!@%&*=:;<>?/|.]\)/ skip=/\\\\\|\\\z1/ end=/\z1/ oneline
|
||||
|
||||
" File path of a 'parent' definition
|
||||
syntax match boxesParentGlobal display "\s:global:\s*$"
|
||||
@ -89,14 +145,15 @@ syntax match boxesParentPath contained display "[^:]\{-}$"
|
||||
" a BOX definition with aliases
|
||||
syntax region boxesNames matchgroup=boxesBoxStmt start=/\<box\s\+/ end=/\>[ \t\r\n]\+\</re=s,he=s keepend contains=boxesComma
|
||||
|
||||
" a DELIM statement starts a delim region
|
||||
syntax match boxesDelim display /\<delim\%(iter\)\?\>/ nextgroup=delimRegion15,delimRegion06,delimRegion03,delimRegion04,delimRegion05,delimRegion02,delimRegion07,delimRegion08,delimRegion09,delimRegion10,delimRegion11,delimRegion12,delimRegion13,delimRegion14,delimRegion01,delimRegion16,delimRegion17,delimRegion18,delimRegion
|
||||
|
||||
" Comments may appear anywhere in the file
|
||||
syntax match boxesComment display /#.*$/
|
||||
|
||||
" The SAMPLE block
|
||||
syntax region boxesSample matchgroup=boxesBlocks start="sample" end=+^[ \t]*ends[ \t\r]*$+ keepend
|
||||
|
||||
|
||||
|
||||
"
|
||||
" Synchronisation
|
||||
"
|
||||
@ -112,24 +169,47 @@ syntax sync minlines=40 maxlines=200
|
||||
if !exists("did_boxes_syntax_inits")
|
||||
let did_boxes_syntax_inits = 1
|
||||
|
||||
hi link boxesNames Special
|
||||
hi link boxesNameAtEnd Special
|
||||
hi link boxesString01 String
|
||||
hi link boxesString02 String
|
||||
hi link boxesString03 String
|
||||
hi link boxesString04 String
|
||||
hi link boxesString05 String
|
||||
hi link boxesString06 String
|
||||
hi link boxesString07 String
|
||||
hi link boxesString08 String
|
||||
hi link boxesString09 String
|
||||
hi link boxesString10 String
|
||||
hi link boxesString11 String
|
||||
hi link boxesString12 String
|
||||
hi link boxesString13 String
|
||||
hi link boxesString14 String
|
||||
hi link boxesString15 String
|
||||
hi link boxesString16 String
|
||||
hi link boxesString17 String
|
||||
hi link boxesString18 String
|
||||
hi link boxesString String
|
||||
|
||||
hi link boxesBoxStmt PreProc
|
||||
hi link boxesEnd PreProc
|
||||
hi link boxesNumber Number
|
||||
hi link boxesString String
|
||||
hi link boxesDelSpec boxesString
|
||||
hi link boxesComment Comment
|
||||
hi link boxesError Error
|
||||
hi link boxesClassicKeywords Keyword
|
||||
hi link boxesNames Special
|
||||
hi link boxesNameAtEnd Special
|
||||
|
||||
hi link boxesParent PreProc
|
||||
hi link boxesParentGlobal PreProc
|
||||
hi link boxesParentPath String
|
||||
hi link boxesBlocks Statement
|
||||
|
||||
hi link boxesClassicKeywords Keyword
|
||||
hi link boxesDelim Keyword
|
||||
hi link boxesBlocks Statement
|
||||
hi link boxesRegStuff Label
|
||||
|
||||
hi link boxesShapes Type
|
||||
hi link boxesPads Type
|
||||
hi link boxesNumber Number
|
||||
|
||||
hi link boxesComment Comment
|
||||
hi link boxesError Error
|
||||
|
||||
hi clear boxesSample
|
||||
hi clear boxesWord
|
||||
hi clear boxesBraces
|
||||
|
Loading…
x
Reference in New Issue
Block a user