blob: 83ca547fddbafe6d43b4f56c985ee930bc21c076 [file] [log] [blame]
Yegappan Lakshmanana54816b2024-11-03 10:49:23 +01001if exists("b:current_syntax")
2 finish
3endif
4
5syn include @VIM syntax/vim.vim
6unlet b:current_syntax
7syn include @TUTORSHELL syntax/sh.vim
8unlet b:current_syntax
9syn include @VIMNORMAL syntax/vimnormal.vim
10
11syn match tutorLink /\[.\{-}\](.\{-})/ contains=tutorInlineNormal
12syn match tutorLinkBands /\[\|\]\|(\|)/ contained containedin=tutorLink,tutorLinkAnchor conceal
13syn match tutorLinkAnchor /(.\{-})/ contained containedin=tutorLink conceal
14syn match tutorURL /\(https\?\|file\):\/\/[[:graph:]]\+\>\/\?/
15syn match tutorEmail /\<[[:graph:]]\+@[[:graph:]]\+\>/
16syn match tutorInternalAnchor /\*[[:alnum:]-]\+\*/ contained conceal containedin=tutorSection
17
18syn match tutorSection /^#\{1,6}\s.\+$/ fold contains=tutorInlineNormal
19syn match tutorSectionBullet /#/ contained containedin=tutorSection
20
21syn match tutorTOC /\ctable of contents:/
22
23syn match tutorConcealedEscapes /\\[`*!\[\]():$-]\@=/ conceal
24
25syn region tutorEmphasis matchgroup=Delimiter start=/[\*]\@<!\*\*\@!/ end=/[\*]\@<!\*\*\@!/
26 \ concealends contains=tutorInlineCommand,tutorInlineNormal
27syn region tutorBold matchgroup=Delimiter start=/\*\{2}/ end=/\*\{2}/
28 \ concealends contains=tutorInlineCommand,tutorInlineNormal
29
30syn keyword tutorMarks TODO NOTE IMPORTANT TIP ATTENTION EXERCISE
31syn keyword tutorMarks todo note tip attention exercise
32syn keyword tutorMarks Todo Note Tip Excersise
33
34syn region tutorCodeblock matchgroup=Delimiter start=/^\~\{3}.*$/ end=/^\~\{3}/
35
36syn region tutorShell matchgroup=Delimiter start=/^\~\{3} sh\s*$/ end=/^\~\{3}/ keepend contains=@TUTORSHELL concealends
37syn match tutorShellPrompt /\(^\s*\)\@<=[$#]/ contained containedin=tutorShell
38
39syn region tutorInlineCode matchgroup=Delimiter start=/\\\@<!`/ end=/\\\@<!\(`{\@!\|`\s\)/ concealends
40
41syn region tutorCommand matchgroup=Delimiter start=/^\~\{3} cmd\( :\)\?\s*$/ end=/^\~\{3}/ keepend contains=@VIM concealends
42syn region tutorInlineCommand matchgroup=Delimiter start=/\\\@<!`\(.*`{vim}\)\@=/ end=/\\\@<!`\({vim}\)\@=/ nextgroup=tutorInlineType contains=@VIM concealends keepend
43
44syn region tutorNormal matchgroup=Delimiter start=/^\~\{3} norm\(al\?\)\?\s*$/ end=/^\~\{3}/ contains=@VIMNORMAL concealends
45syn region tutorInlineNormal matchgroup=Delimiter start=/\\\@<!`\(\S*`{normal}\)\@=/ end=/\\\@<!`\({normal}\)\@=/ nextgroup=tutorInlineType contains=@VIMNORMAL concealends keepend
46
47syn match tutorInlineType /{\(normal\|vim\)}/ contained conceal
48
49syn match tutorInlineOK /✓/
50syn match tutorInlineX /✗/
51
52hi def tutorLink cterm=underline gui=underline ctermfg=lightblue guifg=#0088ff
53hi def link tutorLinkBands Delimiter
54hi def link tutorLinkAnchor Underlined
55hi def link tutorInternalAnchor Underlined
56hi def link tutorURL tutorLink
57hi def link tutorEmail tutorLink
58
59hi def link tutorSection Title
60hi def link tutorSectionBullet Delimiter
61
62hi def link tutorTOC Directory
63
64hi def tutorMarks cterm=bold gui=bold
65
66hi def tutorEmphasis gui=italic cterm=italic
67hi def tutorBold gui=bold cterm=bold
68
69hi def link tutorExpect Special
70hi def tutorOK ctermfg=green guifg=#00ff88 cterm=bold gui=bold
71hi def tutorX ctermfg=red guifg=#ff2000 cterm=bold gui=bold
72hi def link tutorInlineOK tutorOK
73hi def link tutorInlineX tutorX
74
75hi def link tutorShellPrompt Delimiter
76
77let b:current_syntax = "tutor"