blob: 0180f35027abe569d977faed1f373bebcfede1c9 [file] [log] [blame]
Bram Moolenaar6aa57292021-08-14 21:25:52 +02001" Syntax file for scdoc files
Bram Moolenaar3f32a5f2022-05-12 20:34:15 +01002" Maintainer: Gregory Anders <contact@gpanders.com>
3" Last Updated: 2022-05-09
4" Upstream: https://github.com/gpanders/vim-scdoc
Bram Moolenaar6aa57292021-08-14 21:25:52 +02005
6if exists('b:current_syntax')
7 finish
8endif
9let b:current_syntax = 'scdoc'
10
11syntax match scdocFirstLineError "\%^.*$"
12syntax match scdocFirstLineValid "\%^\S\+(\d[0-9A-Za-z]*)\%(\s\+\"[^"]*\"\%(\s\+\"[^"]*\"\)\=\)\=$"
13
14syntax region scdocCommentError start="^;\S" end="$" keepend
15syntax region scdocComment start="^; " end="$" keepend
16
17syntax region scdocHeaderError start="^#\{3,}" end="$" keepend
18syntax region scdocHeader start="^#\{1,2}" end="$" keepend
19
20syntax match scdocIndentError "^[ ]\+"
21
22syntax match scdocLineBreak "++$"
23
Bram Moolenaar3f32a5f2022-05-12 20:34:15 +010024syntax region scdocOrderedListItem matchgroup=scdocOrderedListMarker start="^\z(\s*\)\." skip="^\z1 .*$" end="^" contains=scdocBold,scdocUnderline
25syntax region scdocListItem matchgroup=scdocListMarker start="^\z(\s*\)-" skip="^\z1 .*$" end="^" contains=scdocBold,scdocUnderline
Bram Moolenaar6aa57292021-08-14 21:25:52 +020026
Bram Moolenaar3f32a5f2022-05-12 20:34:15 +010027" Tables cannot start with a column
28syntax match scdocTableError "^:"
29
30syntax region scdocTable matchgroup=scdocTableEntry start="^[\[|\]][\[\-\]<=>]" end="^$" contains=scdocTableEntry,scdocTableError,scdocTableContinuation,scdocBold,scdocUnderline,scdocPre
31syntax match scdocTableError "^.*$" contained
32syntax match scdocTableContinuation "^ \+\S\+" contained
33syntax match scdocTableEntry "^[|:][\[\-\]<=> ]" contained
34syntax match scdocTableError "^[|:][\[\-\]<=> ]\S.*$" contained
Bram Moolenaar6aa57292021-08-14 21:25:52 +020035
36syntax region scdocBold concealends matchgroup=scdocBoldDelimiter start="\\\@<!\*" end="\\\@<!\*"
37syntax region scdocUnderline concealends matchgroup=scdocUnderlineDelimiter start="\<\\\@<!_" end="\\\@<!_\>"
38syntax region scdocPre matchgroup=scdocPreDelimiter start="^\t*```" end="^\t*```"
39
Bram Moolenaar3f32a5f2022-05-12 20:34:15 +010040syntax sync minlines=50
Bram Moolenaar6aa57292021-08-14 21:25:52 +020041
Bram Moolenaar3f32a5f2022-05-12 20:34:15 +010042hi default link scdocFirstLineValid Comment
43hi default link scdocComment Comment
44hi default link scdocHeader Title
45hi default link scdocOrderedListMarker Statement
46hi default link scdocListMarker scdocOrderedListMarker
47hi default link scdocLineBreak Special
48hi default link scdocTableSpecifier Statement
49hi default link scdocTableEntry Statement
Bram Moolenaar6aa57292021-08-14 21:25:52 +020050
Bram Moolenaar3f32a5f2022-05-12 20:34:15 +010051hi default link scdocFirstLineError Error
52hi default link scdocCommentError Error
53hi default link scdocHeaderError Error
54hi default link scdocIndentError Error
55hi default link scdocTableError Error
56hi default link scdocTableError Error
Bram Moolenaar6aa57292021-08-14 21:25:52 +020057
Bram Moolenaar3f32a5f2022-05-12 20:34:15 +010058hi default link scdocPreDelimiter Delimiter
59
60hi default scdocBold term=bold cterm=bold gui=bold
61hi default scdocUnderline term=underline cterm=underline gui=underline
62hi default link scdocBoldDelimiter scdocBold
63hi default link scdocUnderlineDelimiter scdocUnderline