| 
									
										
										
										
											2025-04-16 18:20:59 +02:00
										 |  |  | " Language:	Vim Tutor | 
					
						
							|  |  |  | " Maintainer:	Vim Project | 
					
						
							|  |  |  | " Last Change:	2025 Apr 16 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-11-03 10:49:23 +01:00
										 |  |  | if exists("b:current_syntax") | 
					
						
							|  |  |  |     finish | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-16 18:20:59 +02:00
										 |  |  | let s:cpo_save = &cpo | 
					
						
							|  |  |  | set cpo&vim | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-11-03 10:49:23 +01:00
										 |  |  | syn include @VIM syntax/vim.vim | 
					
						
							|  |  |  | unlet b:current_syntax | 
					
						
							|  |  |  | syn include @TUTORSHELL syntax/sh.vim | 
					
						
							|  |  |  | unlet b:current_syntax | 
					
						
							|  |  |  | syn include @VIMNORMAL syntax/vimnormal.vim | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syn match tutorLink /\[.\{-}\](.\{-})/ contains=tutorInlineNormal | 
					
						
							|  |  |  | syn match tutorLinkBands /\[\|\]\|(\|)/ contained containedin=tutorLink,tutorLinkAnchor conceal | 
					
						
							|  |  |  | syn match tutorLinkAnchor /(.\{-})/ contained containedin=tutorLink conceal | 
					
						
							|  |  |  | syn match tutorURL /\(https\?\|file\):\/\/[[:graph:]]\+\>\/\?/ | 
					
						
							|  |  |  | syn match tutorEmail /\<[[:graph:]]\+@[[:graph:]]\+\>/ | 
					
						
							|  |  |  | syn match tutorInternalAnchor /\*[[:alnum:]-]\+\*/ contained conceal containedin=tutorSection | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syn match tutorSection /^#\{1,6}\s.\+$/ fold contains=tutorInlineNormal | 
					
						
							|  |  |  | syn match tutorSectionBullet /#/ contained containedin=tutorSection | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syn match tutorTOC /\ctable of contents:/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syn match tutorConcealedEscapes /\\[`*!\[\]():$-]\@=/ conceal | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syn region tutorEmphasis matchgroup=Delimiter start=/[\*]\@<!\*\*\@!/ end=/[\*]\@<!\*\*\@!/ | 
					
						
							|  |  |  | 	    \ concealends contains=tutorInlineCommand,tutorInlineNormal | 
					
						
							|  |  |  | syn region tutorBold matchgroup=Delimiter start=/\*\{2}/ end=/\*\{2}/ | 
					
						
							|  |  |  | 	    \ concealends contains=tutorInlineCommand,tutorInlineNormal | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syn keyword tutorMarks TODO NOTE IMPORTANT TIP ATTENTION EXERCISE | 
					
						
							|  |  |  | syn keyword tutorMarks todo note tip attention exercise | 
					
						
							|  |  |  | syn keyword tutorMarks Todo Note Tip Excersise | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syn region tutorCodeblock matchgroup=Delimiter start=/^\~\{3}.*$/ end=/^\~\{3}/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syn region tutorShell matchgroup=Delimiter start=/^\~\{3} sh\s*$/ end=/^\~\{3}/ keepend contains=@TUTORSHELL concealends | 
					
						
							|  |  |  | syn match tutorShellPrompt /\(^\s*\)\@<=[$#]/ contained containedin=tutorShell | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syn region tutorInlineCode matchgroup=Delimiter start=/\\\@<!`/ end=/\\\@<!\(`{\@!\|`\s\)/ concealends | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syn region tutorCommand matchgroup=Delimiter start=/^\~\{3} cmd\( :\)\?\s*$/ end=/^\~\{3}/ keepend contains=@VIM concealends | 
					
						
							|  |  |  | syn region tutorInlineCommand matchgroup=Delimiter start=/\\\@<!`\(.*`{vim}\)\@=/ end=/\\\@<!`\({vim}\)\@=/ nextgroup=tutorInlineType contains=@VIM concealends keepend | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syn region tutorNormal matchgroup=Delimiter start=/^\~\{3} norm\(al\?\)\?\s*$/ end=/^\~\{3}/ contains=@VIMNORMAL concealends | 
					
						
							|  |  |  | syn region tutorInlineNormal matchgroup=Delimiter start=/\\\@<!`\(\S*`{normal}\)\@=/ end=/\\\@<!`\({normal}\)\@=/ nextgroup=tutorInlineType contains=@VIMNORMAL concealends keepend | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syn match tutorInlineType /{\(normal\|vim\)}/ contained conceal | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syn match tutorInlineOK /✓/ | 
					
						
							|  |  |  | syn match tutorInlineX /✗/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | hi def tutorLink cterm=underline gui=underline ctermfg=lightblue guifg=#0088ff | 
					
						
							|  |  |  | hi def link tutorLinkBands Delimiter | 
					
						
							|  |  |  | hi def link tutorLinkAnchor Underlined | 
					
						
							|  |  |  | hi def link tutorInternalAnchor Underlined | 
					
						
							|  |  |  | hi def link tutorURL tutorLink | 
					
						
							|  |  |  | hi def link tutorEmail tutorLink | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | hi def link tutorSection Title | 
					
						
							|  |  |  | hi def link tutorSectionBullet Delimiter | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | hi def link tutorTOC Directory | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | hi def tutorMarks cterm=bold gui=bold | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | hi def tutorEmphasis gui=italic cterm=italic | 
					
						
							|  |  |  | hi def tutorBold gui=bold cterm=bold | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | hi def link tutorExpect Special | 
					
						
							|  |  |  | hi def tutorOK ctermfg=green guifg=#00ff88 cterm=bold gui=bold | 
					
						
							|  |  |  | hi def tutorX ctermfg=red guifg=#ff2000  cterm=bold gui=bold | 
					
						
							|  |  |  | hi def link tutorInlineOK tutorOK | 
					
						
							|  |  |  | hi def link tutorInlineX tutorX | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | hi def link tutorShellPrompt Delimiter | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | let b:current_syntax = "tutor" | 
					
						
							| 
									
										
										
										
											2025-04-16 18:20:59 +02:00
										 |  |  | let &cpo = s:cpo_save | 
					
						
							|  |  |  | unlet s:cpo_save |