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