neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

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