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