xref: /vim-8.2.3635/runtime/syntax/m4.vim (revision 89bcfda6)
1" Vim syntax file
2" Language:		M4
3" Maintainer:	Claudio Fleiner ([email protected])
4" URL:			http://www.fleiner.com/vim/syntax/m4.vim
5" Last Change:	2005 Jan 15
6
7" This file will highlight user function calls if they use only
8" capital letters and have at least one argument (i.e. the '('
9" must be there). Let me know if this is a problem.
10
11" quit when a syntax file was already loaded
12if !exists("main_syntax")
13  if exists("b:current_syntax")
14	finish
15  endif
16  " we define it here so that included files can test for it
17  let main_syntax='m4'
18endif
19
20" define the m4 syntax
21syn match  m4Variable contained "\$\d\+"
22syn match  m4Special  contained "$[@*#]"
23syn match  m4Comment  "\<\(m4_\)\=dnl\>.*" contains=SpellErrors
24syn match  m4Constants "\<\(m4_\)\=__file__"
25syn match  m4Constants "\<\(m4_\)\=__line__"
26syn keyword m4Constants divnum sysval m4_divnum m4_sysval
27syn region m4Paren    matchgroup=m4Delimiter start="(" end=")" contained contains=@m4Top
28syn region m4Command  matchgroup=m4Function  start="\<\(m4_\)\=\(define\|defn\|pushdef\)(" end=")" contains=@m4Top
29syn region m4Command  matchgroup=m4Preproc   start="\<\(m4_\)\=\(include\|sinclude\)("he=e-1 end=")" contains=@m4Top
30syn region m4Command  matchgroup=m4Statement start="\<\(m4_\)\=\(syscmd\|esyscmd\|ifdef\|ifelse\|indir\|builtin\|shift\|errprint\|m4exit\|changecom\|changequote\|changeword\|m4wrap\|debugfile\|divert\|undivert\)("he=e-1 end=")" contains=@m4Top
31syn region m4Command  matchgroup=m4builtin start="\<\(m4_\)\=\(len\|index\|regexp\|substr\|translit\|patsubst\|format\|incr\|decr\|eval\|maketemp\)("he=e-1 end=")" contains=@m4Top
32syn keyword m4Statement divert undivert
33syn region m4Command  matchgroup=m4Type      start="\<\(m4_\)\=\(undefine\|popdef\)("he=e-1 end=")" contains=@m4Top
34syn region m4Function matchgroup=m4Type      start="\<[_A-Z][_A-Z0-9]*("he=e-1 end=")" contains=@m4Top
35syn region m4String   start="`" end="'" contained contains=@m4Top,@m4StringContents,SpellErrors
36syn cluster m4Top     contains=m4Comment,m4Constants,m4Special,m4Variable,m4String,m4Paren,m4Command,m4Statement,m4Function
37
38" Define the default highlighting.
39" Only when an item doesn't have highlighting yet
40command -nargs=+ HiLink hi def link <args>
41HiLink m4Delimiter Delimiter
42HiLink m4Comment   Comment
43HiLink m4Function  Function
44HiLink m4Keyword   Keyword
45HiLink m4Special   Special
46HiLink m4String    String
47HiLink m4Statement Statement
48HiLink m4Preproc   PreProc
49HiLink m4Type      Type
50HiLink m4Special   Special
51HiLink m4Variable  Special
52HiLink m4Constants Constant
53HiLink m4Builtin   Statement
54delcommand HiLink
55
56let b:current_syntax = "m4"
57
58if main_syntax == 'm4'
59  unlet main_syntax
60endif
61
62" vim: ts=4
63