diff options
Diffstat (limited to 'mnv/runtime/syntax/tutor.mnv')
| -rw-r--r-- | mnv/runtime/syntax/tutor.mnv | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/mnv/runtime/syntax/tutor.mnv b/mnv/runtime/syntax/tutor.mnv new file mode 100644 index 0000000000..283a18ecf7 --- /dev/null +++ b/mnv/runtime/syntax/tutor.mnv @@ -0,0 +1,86 @@ +" Language: MNV Tutor +" Maintainer: MNV Project +" Last Change: 2025 Apr 16 + +if exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&mnv + +syn include @MNV syntax/mnv.mnv +unlet b:current_syntax +syn include @TUTORSHELL syntax/sh.mnv +unlet b:current_syntax +syn include @MNVNORMAL syntax/mnvnormal.mnv + +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=@MNV concealends +syn region tutorInlineCommand matchgroup=Delimiter start=/\\\@<!`\(.*`{mnv}\)\@=/ end=/\\\@<!`\({mnv}\)\@=/ nextgroup=tutorInlineType contains=@MNV concealends keepend + +syn region tutorNormal matchgroup=Delimiter start=/^\~\{3} norm\(al\?\)\?\s*$/ end=/^\~\{3}/ contains=@MNVNORMAL concealends +syn region tutorInlineNormal matchgroup=Delimiter start=/\\\@<!`\(\S*`{normal}\)\@=/ end=/\\\@<!`\({normal}\)\@=/ nextgroup=tutorInlineType contains=@MNVNORMAL concealends keepend + +syn match tutorInlineType /{\(normal\|mnv\)}/ 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" +let &cpo = s:cpo_save +unlet s:cpo_save |
