blob: ae7e3bc6a7c08629d6a4077317aecf4d6b94ddd8 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: Vim help file
Christian Brabandte978b452023-08-13 10:33:05 +02003" Maintainer: The Vim Project <https://github.com/vim/vim>
Christian Brabandt4bfb8992024-10-16 21:58:17 +02004" Last Change: 2024 Oct 16
Christian Brabandte978b452023-08-13 10:33:05 +02005" Former Maintainer: Bram Moolenaar <Bram@vim.org>
Bram Moolenaar071d4272004-06-13 20:20:40 +00006
Bram Moolenaard857f0e2005-06-21 22:37:39 +00007" Quit when a (custom) syntax file was already loaded
8if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +00009 finish
10endif
11
Bram Moolenaar6ee8d892012-01-10 14:55:01 +010012let s:cpo_save = &cpo
13set cpo&vim
14
Bram Moolenaard13166e2022-11-18 21:49:57 +000015syn match helpHeadline "^[A-Z.][-A-Z0-9 .,()_']*?\=\ze\(\s\+\*\|$\)"
Bram Moolenaar6c35bea2012-07-25 17:49:10 +020016syn match helpSectionDelim "^===.*===$"
17syn match helpSectionDelim "^---.*--$"
Bram Moolenaardd007ed2013-07-09 15:44:17 +020018if has("conceal")
19 syn region helpExample matchgroup=helpIgnore start=" >$" start="^>$" end="^[^ \t]"me=e-1 end="^<" concealends
20else
21 syn region helpExample matchgroup=helpIgnore start=" >$" start="^>$" end="^[^ \t]"me=e-1 end="^<"
22endif
Bram Moolenaar071d4272004-06-13 20:20:40 +000023if has("ebcdic")
Bram Moolenaar18144c82006-04-12 21:52:12 +000024 syn match helpHyperTextJump "\\\@<!|[^"*|]\+|" contains=helpBar
Bram Moolenaar7fc904b2006-04-13 20:37:35 +000025 syn match helpHyperTextEntry "\*[^"*|]\+\*\s"he=e-1 contains=helpStar
26 syn match helpHyperTextEntry "\*[^"*|]\+\*$" contains=helpStar
Bram Moolenaar071d4272004-06-13 20:20:40 +000027else
Bram Moolenaar18144c82006-04-12 21:52:12 +000028 syn match helpHyperTextJump "\\\@<!|[#-)!+-~]\+|" contains=helpBar
Bram Moolenaar7fc904b2006-04-13 20:37:35 +000029 syn match helpHyperTextEntry "\*[#-)!+-~]\+\*\s"he=e-1 contains=helpStar
30 syn match helpHyperTextEntry "\*[#-)!+-~]\+\*$" contains=helpStar
Bram Moolenaar071d4272004-06-13 20:20:40 +000031endif
Bram Moolenaar97293012011-07-18 19:40:27 +020032if has("conceal")
Bram Moolenaarfa13eef2013-02-06 17:34:04 +010033 syn match helpBar contained "|" conceal
34 syn match helpBacktick contained "`" conceal
Bram Moolenaar97293012011-07-18 19:40:27 +020035 syn match helpStar contained "\*" conceal
36else
Bram Moolenaarfa13eef2013-02-06 17:34:04 +010037 syn match helpBar contained "|"
38 syn match helpBacktick contained "`"
Bram Moolenaar97293012011-07-18 19:40:27 +020039 syn match helpStar contained "\*"
40endif
Bram Moolenaar071d4272004-06-13 20:20:40 +000041syn match helpNormal "|.*====*|"
Bram Moolenaarf1568ec2011-12-14 21:17:39 +010042syn match helpNormal "|||"
Bram Moolenaar071d4272004-06-13 20:20:40 +000043syn match helpNormal ":|vim:|" " for :help modeline
Bram Moolenaar251835e2014-02-24 02:51:51 +010044syn match helpVim "\<Vim version [0-9][0-9.a-z]*"
Bram Moolenaar071d4272004-06-13 20:20:40 +000045syn match helpVim "VIM REFERENCE.*"
46syn match helpOption "'[a-z]\{2,\}'"
47syn match helpOption "'t_..'"
Bram Moolenaar9fbdbb82022-09-27 17:30:34 +010048syn match helpNormal "'ab'"
Bram Moolenaar7cba6c02013-09-05 22:13:31 +020049syn match helpCommand "`[^` \t]\+`"hs=s+1,he=e-1 contains=helpBacktick
Christian Brabandt4bfb8992024-10-16 21:58:17 +020050" doesn't allow a . directly after an ending backtick. See :helpgrep `[^`,]\+ [^`,]\+`\.
51syn match helpCommand "\(^\|[^a-z"[]\)\zs`[^`]\+`\ze\([^a-z\t."']\|[.?!]\?$\)"hs=s+1,he=e-1 contains=helpBacktick
Bram Moolenaar071d4272004-06-13 20:20:40 +000052syn match helpHeader "\s*\zs.\{-}\ze\s\=\~$" nextgroup=helpIgnore
Bram Moolenaar166af9b2010-11-16 20:34:40 +010053syn match helpGraphic ".* \ze`$" nextgroup=helpIgnore
Bram Moolenaar97293012011-07-18 19:40:27 +020054if has("conceal")
55 syn match helpIgnore "." contained conceal
56else
57 syn match helpIgnore "." contained
58endif
Bram Moolenaar071d4272004-06-13 20:20:40 +000059syn keyword helpNote note Note NOTE note: Note: NOTE: Notes Notes:
Milly6c2fc372024-10-16 22:11:17 +020060syn match helpNote "\c(note\(:\|\>\)"ms=s+1
Bram Moolenaar3ec574f2017-06-13 18:12:01 +020061syn keyword helpWarning WARNING WARNING: Warning:
62syn keyword helpDeprecated DEPRECATED DEPRECATED: Deprecated:
Bram Moolenaar071d4272004-06-13 20:20:40 +000063syn match helpSpecial "\<N\>"
64syn match helpSpecial "\<N\.$"me=e-1
65syn match helpSpecial "\<N\.\s"me=e-2
66syn match helpSpecial "(N\>"ms=s+1
Bram Moolenaar01164a62017-11-02 22:58:42 +010067
Bram Moolenaar071d4272004-06-13 20:20:40 +000068syn match helpSpecial "\[N]"
Milly89872f52024-10-05 17:16:18 +020069" avoid highlighting N N in quickref.txt
Bram Moolenaar071d4272004-06-13 20:20:40 +000070syn match helpSpecial "N N"he=s+1
71syn match helpSpecial "Nth"me=e-2
72syn match helpSpecial "N-1"me=e-2
Milly6c2fc372024-10-16 22:11:17 +020073" highlighting N for :resize in windows.txt
74syn match helpSpecial "] -N\>"ms=s+3
75syn match helpSpecial "+N\>"ms=s+1
76syn match helpSpecial "\[+-]N\>"ms=s+4
Milly89872f52024-10-05 17:16:18 +020077" highlighting N of cinoptions-values in indent.txt
78syn match helpSpecial "^\t-\?\zsNs\?\s"me=s+1
79" highlighting N of cinoptions-values in indent.txt
80syn match helpSpecial "^\t[>enf{}^L:=lbghNEpti+cC/(uUwWkmMjJ)*#P]N\s"ms=s+2,me=e-1
Bram Moolenaar071d4272004-06-13 20:20:40 +000081syn match helpSpecial "{[-a-zA-Z0-9'"*+/:%#=[\]<>.,]\+}"
82syn match helpSpecial "\s\[[-a-z^A-Z0-9_]\{2,}]"ms=s+1
83syn match helpSpecial "<[-a-zA-Z0-9_]\+>"
84syn match helpSpecial "<[SCM]-.>"
85syn match helpNormal "<---*>"
86syn match helpSpecial "\[range]"
87syn match helpSpecial "\[line]"
88syn match helpSpecial "\[count]"
89syn match helpSpecial "\[offset]"
90syn match helpSpecial "\[cmd]"
Bram Moolenaar4d8f4762021-06-27 15:18:56 +020091syn match helpNormal "vim9\[cmd]"
Bram Moolenaar071d4272004-06-13 20:20:40 +000092syn match helpSpecial "\[num]"
93syn match helpSpecial "\[+num]"
94syn match helpSpecial "\[-num]"
95syn match helpSpecial "\[+cmd]"
96syn match helpSpecial "\[++opt]"
97syn match helpSpecial "\[arg]"
98syn match helpSpecial "\[arguments]"
99syn match helpSpecial "\[ident]"
100syn match helpSpecial "\[addr]"
101syn match helpSpecial "\[group]"
Bram Moolenaar01164a62017-11-02 22:58:42 +0100102" Don't highlight [converted] and others that do not have a tag
103syn match helpNormal "\[\(readonly\|fifo\|socket\|converted\|crypted\)]"
104
Bram Moolenaar071d4272004-06-13 20:20:40 +0000105syn match helpSpecial "CTRL-."
Christian Brabandtd3b55d72024-10-08 20:20:23 +0200106syn match helpSpecial "CTRL-<\a\+>"
Bram Moolenaar0c0734d2019-11-26 21:44:46 +0100107syn match helpSpecial "CTRL-SHIFT-."
Bram Moolenaar071d4272004-06-13 20:20:40 +0000108syn match helpSpecial "CTRL-Break"
109syn match helpSpecial "CTRL-PageUp"
110syn match helpSpecial "CTRL-PageDown"
111syn match helpSpecial "CTRL-Insert"
112syn match helpSpecial "CTRL-Del"
113syn match helpSpecial "CTRL-{char}"
114syn region helpNotVi start="{Vi[: ]" start="{not" start="{only" end="}" contains=helpLeadBlank,helpHyperTextJump
115syn match helpLeadBlank "^\s\+" contained
116
117" Highlight group items in their own color.
118syn match helpComment "\t[* ]Comment\t\+[a-z].*"
119syn match helpConstant "\t[* ]Constant\t\+[a-z].*"
120syn match helpString "\t[* ]String\t\+[a-z].*"
121syn match helpCharacter "\t[* ]Character\t\+[a-z].*"
122syn match helpNumber "\t[* ]Number\t\+[a-z].*"
123syn match helpBoolean "\t[* ]Boolean\t\+[a-z].*"
124syn match helpFloat "\t[* ]Float\t\+[a-z].*"
125syn match helpIdentifier "\t[* ]Identifier\t\+[a-z].*"
126syn match helpFunction "\t[* ]Function\t\+[a-z].*"
127syn match helpStatement "\t[* ]Statement\t\+[a-z].*"
128syn match helpConditional "\t[* ]Conditional\t\+[a-z].*"
129syn match helpRepeat "\t[* ]Repeat\t\+[a-z].*"
130syn match helpLabel "\t[* ]Label\t\+[a-z].*"
131syn match helpOperator "\t[* ]Operator\t\+["a-z].*"
132syn match helpKeyword "\t[* ]Keyword\t\+[a-z].*"
133syn match helpException "\t[* ]Exception\t\+[a-z].*"
134syn match helpPreProc "\t[* ]PreProc\t\+[a-z].*"
135syn match helpInclude "\t[* ]Include\t\+[a-z].*"
136syn match helpDefine "\t[* ]Define\t\+[a-z].*"
137syn match helpMacro "\t[* ]Macro\t\+[a-z].*"
138syn match helpPreCondit "\t[* ]PreCondit\t\+[a-z].*"
139syn match helpType "\t[* ]Type\t\+[a-z].*"
140syn match helpStorageClass "\t[* ]StorageClass\t\+[a-z].*"
141syn match helpStructure "\t[* ]Structure\t\+[a-z].*"
142syn match helpTypedef "\t[* ]Typedef\t\+[Aa-z].*"
143syn match helpSpecial "\t[* ]Special\t\+[a-z].*"
144syn match helpSpecialChar "\t[* ]SpecialChar\t\+[a-z].*"
145syn match helpTag "\t[* ]Tag\t\+[a-z].*"
146syn match helpDelimiter "\t[* ]Delimiter\t\+[a-z].*"
147syn match helpSpecialComment "\t[* ]SpecialComment\t\+[a-z].*"
148syn match helpDebug "\t[* ]Debug\t\+[a-z].*"
149syn match helpUnderlined "\t[* ]Underlined\t\+[a-z].*"
150syn match helpError "\t[* ]Error\t\+[a-z].*"
151syn match helpTodo "\t[* ]Todo\t\+[a-z].*"
152
Milly6c2fc372024-10-16 22:11:17 +0200153syn match helpURL `\v<(((https?|ftp|gopher)://|(mailto|file|news):)[^'" \t<>{}]+|(www|web|w3)[a-z0-9_-]*\.[a-z0-9._-]+\.[^'" \t<>{}]+)[a-zA-Z0-9/]`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000154
Romain Lafourcade124371c2024-01-07 15:08:31 +0100155syn match helpDiffAdded "\t[* ]Added\t\+[a-z].*"
156syn match helpDiffChanged "\t[* ]Changed\t\+[a-z].*"
157syn match helpDiffRemoved "\t[* ]Removed\t\+[a-z].*"
158
Bram Moolenaar071d4272004-06-13 20:20:40 +0000159" Additionally load a language-specific syntax file "help_ab.vim".
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000160let s:i = match(expand("%"), '\.\a\ax$')
161if s:i > 0
162 exe "runtime syntax/help_" . strpart(expand("%"), s:i + 1, 2) . ".vim"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000163endif
164
165syn sync minlines=40
166
167
168" Define the default highlighting.
Bram Moolenaard857f0e2005-06-21 22:37:39 +0000169" Only used when an item doesn't have highlighting yet
Bram Moolenaard857f0e2005-06-21 22:37:39 +0000170hi def link helpIgnore Ignore
Bram Moolenaar36782082013-11-28 13:53:34 +0100171hi def link helpHyperTextJump Identifier
Bram Moolenaar18144c82006-04-12 21:52:12 +0000172hi def link helpBar Ignore
Bram Moolenaarfa13eef2013-02-06 17:34:04 +0100173hi def link helpBacktick Ignore
Bram Moolenaar7fc904b2006-04-13 20:37:35 +0000174hi def link helpStar Ignore
Bram Moolenaard857f0e2005-06-21 22:37:39 +0000175hi def link helpHyperTextEntry String
176hi def link helpHeadline Statement
177hi def link helpHeader PreProc
178hi def link helpSectionDelim PreProc
179hi def link helpVim Identifier
Bram Moolenaard38b0552012-04-25 19:07:41 +0200180hi def link helpCommand Comment
Bram Moolenaard857f0e2005-06-21 22:37:39 +0000181hi def link helpExample Comment
182hi def link helpOption Type
183hi def link helpNotVi Special
184hi def link helpSpecial Special
185hi def link helpNote Todo
Bram Moolenaar64d8e252016-09-06 22:12:34 +0200186hi def link helpWarning Todo
Bram Moolenaar3ec574f2017-06-13 18:12:01 +0200187hi def link helpDeprecated Todo
Bram Moolenaar071d4272004-06-13 20:20:40 +0000188
Bram Moolenaard857f0e2005-06-21 22:37:39 +0000189hi def link helpComment Comment
190hi def link helpConstant Constant
191hi def link helpString String
192hi def link helpCharacter Character
193hi def link helpNumber Number
194hi def link helpBoolean Boolean
195hi def link helpFloat Float
196hi def link helpIdentifier Identifier
197hi def link helpFunction Function
198hi def link helpStatement Statement
199hi def link helpConditional Conditional
200hi def link helpRepeat Repeat
201hi def link helpLabel Label
202hi def link helpOperator Operator
203hi def link helpKeyword Keyword
204hi def link helpException Exception
205hi def link helpPreProc PreProc
206hi def link helpInclude Include
207hi def link helpDefine Define
208hi def link helpMacro Macro
209hi def link helpPreCondit PreCondit
210hi def link helpType Type
211hi def link helpStorageClass StorageClass
212hi def link helpStructure Structure
213hi def link helpTypedef Typedef
214hi def link helpSpecialChar SpecialChar
215hi def link helpTag Tag
216hi def link helpDelimiter Delimiter
217hi def link helpSpecialComment SpecialComment
218hi def link helpDebug Debug
219hi def link helpUnderlined Underlined
220hi def link helpError Error
221hi def link helpTodo Todo
Bram Moolenaare344bea2005-09-01 20:46:49 +0000222hi def link helpURL String
Romain Lafourcade124371c2024-01-07 15:08:31 +0100223hi def link helpDiffAdded Added
224hi def link helpDiffChanged Changed
225hi def link helpDiffRemoved Removed
Bram Moolenaar071d4272004-06-13 20:20:40 +0000226
Bram Moolenaar2d8ed022022-05-21 13:08:16 +0100227if has('textprop') && expand('%:p') =~ '[/\\]doc[/\\]syntax.txt'
Bram Moolenaard899e512022-05-07 21:54:03 +0100228 " highlight groups with their respective color
229 import 'dist/vimhelp.vim'
230 call vimhelp.HighlightGroups()
231endif
232
Bram Moolenaar071d4272004-06-13 20:20:40 +0000233let b:current_syntax = "help"
234
Bram Moolenaar6ee8d892012-01-10 14:55:01 +0100235let &cpo = s:cpo_save
236unlet s:cpo_save
Bram Moolenaar071d4272004-06-13 20:20:40 +0000237" vim: ts=8 sw=2