| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | " Vim syntax file | 
					
						
							|  |  |  | " Language:	Makefile | 
					
						
							| 
									
										
										
										
											2020-01-21 22:33:58 +01:00
										 |  |  | " Maintainer:	Roland Hieber <rohieb+vim-iR0jGdkV@rohieb.name>, <https://github.com/rohieb> | 
					
						
							| 
									
										
										
										
											2019-02-17 21:18:32 +01:00
										 |  |  | " Previous Maintainer:	Claudio Fleiner <claudio@fleiner.com> | 
					
						
							| 
									
										
										
										
											2020-01-21 22:33:58 +01:00
										 |  |  | " URL:		https://github.com/vim/vim/blob/master/runtime/syntax/make.vim | 
					
						
							| 
									
										
										
										
											2022-11-09 21:21:04 +00:00
										 |  |  | " Last Change:	2022 Nov 06 | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-30 23:26:57 +02:00
										 |  |  | " quit when a syntax file was already loaded | 
					
						
							|  |  |  | if exists("b:current_syntax") | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  |   finish | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-05 22:26:30 +02:00
										 |  |  | let s:cpo_save = &cpo | 
					
						
							|  |  |  | set cpo&vim | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | " some special characters | 
					
						
							| 
									
										
										
										
											2006-04-06 20:18:50 +00:00
										 |  |  | syn match makeSpecial	"^\s*[@+-]\+" | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | syn match makeNextLine	"\\\n\s*" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-05 22:26:30 +02:00
										 |  |  | " catch unmatched define/endef keywords.  endef only matches it is by itself on a line, possibly followed by a commend | 
					
						
							| 
									
										
										
										
											2020-03-14 08:19:51 +01:00
										 |  |  | syn region makeDefine start="^\s*define\s" end="^\s*endef\s*\(#.*\)\?$" | 
					
						
							|  |  |  | 	\ contains=makeStatement,makeIdent,makePreCondit,makeDefine | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | " Microsoft Makefile specials | 
					
						
							|  |  |  | syn case ignore | 
					
						
							| 
									
										
										
										
											2019-12-04 20:43:03 +01:00
										 |  |  | syn match makeInclude	"^!\s*include\s.*$" | 
					
						
							| 
									
										
										
										
											2019-04-04 13:11:03 +02:00
										 |  |  | syn match makePreCondit "^!\s*\(cmdswitches\|error\|message\|include\|if\|ifdef\|ifndef\|else\|else\s*if\|else\s*ifdef\|else\s*ifndef\|endif\|undef\)\>" | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | syn case match | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " identifiers | 
					
						
							| 
									
										
										
										
											2024-07-25 21:07:13 +02:00
										 |  |  | if exists("b:make_microsoft") || exists("make_microsoft") | 
					
						
							|  |  |  |   syn region makeIdent	start="\$(" end=")" contains=makeStatement,makeIdent | 
					
						
							|  |  |  |   syn region makeIdent	start="\${" end="}" contains=makeStatement,makeIdent | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |   syn region makeIdent	start="\$(" skip="\\)\|\\\\" end=")" contains=makeStatement,makeIdent | 
					
						
							|  |  |  |   syn region makeIdent	start="\${" skip="\\}\|\\\\" end="}" contains=makeStatement,makeIdent | 
					
						
							|  |  |  | endif | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | syn match makeIdent	"\$\$\w*" | 
					
						
							|  |  |  | syn match makeIdent	"\$[^({]" | 
					
						
							| 
									
										
										
										
											2015-02-28 13:11:45 +01:00
										 |  |  | syn match makeIdent	"^ *[^:#= \t]*\s*[:+?!*]="me=e-2 | 
					
						
							| 
									
										
										
										
											2020-01-21 22:33:58 +01:00
										 |  |  | syn match makeIdent	"^ *[^:#= \t]*\s*::="me=e-3 | 
					
						
							| 
									
										
										
										
											2015-02-28 13:11:45 +01:00
										 |  |  | syn match makeIdent	"^ *[^:#= \t]*\s*="me=e-1 | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | syn match makeIdent	"%" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Makefile.in variables | 
					
						
							|  |  |  | syn match makeConfig "@[A-Za-z0-9_]\+@" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " make targets | 
					
						
							| 
									
										
										
										
											2019-12-04 20:43:03 +01:00
										 |  |  | syn match makeImplicit		"^\.[A-Za-z0-9_./\t -]\+\s*:$"me=e-1 | 
					
						
							|  |  |  | syn match makeImplicit		"^\.[A-Za-z0-9_./\t -]\+\s*:[^=]"me=e-2 | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-14 08:19:51 +01:00
										 |  |  | syn region makeTarget transparent matchgroup=makeTarget | 
					
						
							| 
									
										
										
										
											2022-11-09 21:21:04 +00:00
										 |  |  | 	\ start="^[~A-Za-z0-9_./$(){}%-][A-Za-z0-9_./\t ${}()%-]*&\?:\?:\{1,2}[^:=]"rs=e-1 | 
					
						
							| 
									
										
										
										
											2022-07-25 15:42:07 +01:00
										 |  |  | 	\ end="[^\\]$" | 
					
						
							| 
									
										
										
										
											2020-03-14 08:19:51 +01:00
										 |  |  | 	\ keepend contains=makeIdent,makeSpecTarget,makeNextLine,makeComment,makeDString | 
					
						
							|  |  |  | 	\ skipnl nextGroup=makeCommands | 
					
						
							| 
									
										
										
										
											2022-11-09 21:21:04 +00:00
										 |  |  | syn match makeTarget           "^[~A-Za-z0-9_./$(){}%*@-][A-Za-z0-9_./\t $(){}%*@-]*&\?::\=\s*$" | 
					
						
							| 
									
										
										
										
											2020-03-14 08:19:51 +01:00
										 |  |  | 	\ contains=makeIdent,makeSpecTarget,makeComment | 
					
						
							|  |  |  | 	\ skipnl nextgroup=makeCommands,makeCommandError | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syn region makeSpecTarget	transparent matchgroup=makeSpecTarget | 
					
						
							| 
									
										
										
										
											2022-07-25 15:42:07 +01:00
										 |  |  | 	\ start="^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\|ONESHELL\)\>\s*:\{1,2}[^:=]"rs=e-1 | 
					
						
							| 
									
										
										
										
											2020-03-14 08:19:51 +01:00
										 |  |  | 	\ end="[^\\]$" keepend | 
					
						
							|  |  |  | 	\ contains=makeIdent,makeSpecTarget,makeNextLine,makeComment skipnl nextGroup=makeCommands | 
					
						
							| 
									
										
										
										
											2022-07-25 15:42:07 +01:00
										 |  |  | syn match makeSpecTarget	"^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\|ONESHELL\)\>\s*::\=\s*$" | 
					
						
							| 
									
										
										
										
											2020-03-14 08:19:51 +01:00
										 |  |  | 	\ contains=makeIdent,makeComment | 
					
						
							|  |  |  | 	\ skipnl nextgroup=makeCommands,makeCommandError | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | syn match makeCommandError "^\s\+\S.*" contained | 
					
						
							| 
									
										
										
										
											2020-03-14 08:19:51 +01:00
										 |  |  | syn region makeCommands contained start=";"hs=s+1 start="^\t" | 
					
						
							|  |  |  | 	\ end="^[^\t#]"me=e-1,re=e-1 end="^$" | 
					
						
							|  |  |  | 	\ contains=makeCmdNextLine,makeSpecial,makeComment,makeIdent,makePreCondit,makeDefine,makeDString,makeSString | 
					
						
							|  |  |  | 	\ nextgroup=makeCommandError | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | syn match makeCmdNextLine	"\\\n."he=e-1 contained | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-14 08:19:51 +01:00
										 |  |  | " some directives | 
					
						
							|  |  |  | syn match makePreCondit	"^ *\(ifn\=\(eq\|def\)\>\|else\(\s\+ifn\=\(eq\|def\)\)\=\>\|endif\>\)" | 
					
						
							|  |  |  | syn match makeInclude	"^ *[-s]\=include\s.*$" | 
					
						
							|  |  |  | syn match makeStatement	"^ *vpath" | 
					
						
							|  |  |  | syn match makeExport    "^ *\(export\|unexport\)\>" | 
					
						
							| 
									
										
										
										
											2020-05-07 18:56:00 +02:00
										 |  |  | syn match makeOverride	"^ *override\>" | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | " Statements / Functions (GNU make) | 
					
						
							| 
									
										
										
										
											2019-02-17 21:18:32 +01:00
										 |  |  | syn match makeStatement contained "(\(abspath\|addprefix\|addsuffix\|and\|basename\|call\|dir\|error\|eval\|file\|filter-out\|filter\|findstring\|firstword\|flavor\|foreach\|guile\|if\|info\|join\|lastword\|notdir\|or\|origin\|patsubst\|realpath\|shell\|sort\|strip\|subst\|suffix\|value\|warning\|wildcard\|word\|wordlist\|words\)\>"ms=s+1 | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | " Comment | 
					
						
							| 
									
										
										
										
											2024-07-25 21:07:13 +02:00
										 |  |  | if !exists("make_no_comments") | 
					
						
							|  |  |  |   if exists("b:make_microsoft") || exists("make_microsoft") | 
					
						
							|  |  |  |     syn match   makeComment	"#.*" contains=@Spell,makeTodo | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |     syn region  makeComment	start="#" end="^$" end="[^\\]$" keepend contains=@Spell,makeTodo | 
					
						
							|  |  |  |     syn match   makeComment	"#$" contains=@Spell | 
					
						
							|  |  |  |   endif | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | endif | 
					
						
							|  |  |  | syn keyword makeTodo TODO FIXME XXX contained | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " match escaped quotes and any other escaped character | 
					
						
							|  |  |  | " except for $, as a backslash in front of a $ does | 
					
						
							|  |  |  | " not make it a standard character, but instead it will | 
					
						
							|  |  |  | " still act as the beginning of a variable | 
					
						
							|  |  |  | " The escaped char is not highlightet currently | 
					
						
							|  |  |  | syn match makeEscapedChar	"\\[^$]" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-12-04 20:43:03 +01:00
										 |  |  | syn region  makeDString start=+\(\\\)\@<!"+  skip=+\\.+  end=+"+  contained contains=makeIdent | 
					
						
							|  |  |  | syn region  makeSString start=+\(\\\)\@<!'+  skip=+\\.+  end=+'+  contained contains=makeIdent | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | syn region  makeBString start=+\(\\\)\@<!`+  skip=+\\.+  end=+`+  contains=makeIdent,makeSString,makeDString,makeNextLine | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Syncing | 
					
						
							|  |  |  | syn sync minlines=20 maxlines=200 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Sync on Make command block region: When searching backwards hits a line that | 
					
						
							|  |  |  | " can't be a command or a comment, use makeCommands if it looks like a target, | 
					
						
							|  |  |  | " NONE otherwise. | 
					
						
							|  |  |  | syn sync match makeCommandSync groupthere NONE "^[^\t#]" | 
					
						
							|  |  |  | syn sync match makeCommandSync groupthere makeCommands "^[A-Za-z0-9_./$()%-][A-Za-z0-9_./\t $()%-]*:\{1,2}[^:=]" | 
					
						
							|  |  |  | syn sync match makeCommandSync groupthere makeCommands "^[A-Za-z0-9_./$()%-][A-Za-z0-9_./\t $()%-]*:\{1,2}\s*$" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Define the default highlighting. | 
					
						
							| 
									
										
										
										
											2016-08-30 23:26:57 +02:00
										 |  |  | " Only when an item doesn't have highlighting yet | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-04 13:11:03 +02:00
										 |  |  | hi def link makeNextLine	makeSpecial | 
					
						
							| 
									
										
										
										
											2016-08-31 22:22:10 +02:00
										 |  |  | hi def link makeCmdNextLine	makeSpecial | 
					
						
							| 
									
										
										
										
											2020-03-14 08:19:51 +01:00
										 |  |  | hi link     makeOverride        makeStatement | 
					
						
							|  |  |  | hi link     makeExport          makeStatement | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-04 13:11:03 +02:00
										 |  |  | hi def link makeSpecTarget	Statement | 
					
						
							| 
									
										
										
										
											2016-08-30 23:26:57 +02:00
										 |  |  | if !exists("make_no_commands") | 
					
						
							| 
									
										
										
										
											2019-04-04 13:11:03 +02:00
										 |  |  | hi def link makeCommands	Number | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | endif | 
					
						
							| 
									
										
										
										
											2019-04-04 13:11:03 +02:00
										 |  |  | hi def link makeImplicit	Function | 
					
						
							| 
									
										
										
										
											2016-08-31 22:22:10 +02:00
										 |  |  | hi def link makeTarget		Function | 
					
						
							|  |  |  | hi def link makeInclude		Include | 
					
						
							| 
									
										
										
										
											2019-04-04 13:11:03 +02:00
										 |  |  | hi def link makePreCondit	PreCondit | 
					
						
							|  |  |  | hi def link makeStatement	Statement | 
					
						
							| 
									
										
										
										
											2016-08-31 22:22:10 +02:00
										 |  |  | hi def link makeIdent		Identifier | 
					
						
							|  |  |  | hi def link makeSpecial		Special | 
					
						
							|  |  |  | hi def link makeComment		Comment | 
					
						
							|  |  |  | hi def link makeDString		String | 
					
						
							|  |  |  | hi def link makeSString		String | 
					
						
							|  |  |  | hi def link makeBString		Function | 
					
						
							|  |  |  | hi def link makeError		Error | 
					
						
							|  |  |  | hi def link makeTodo		Todo | 
					
						
							|  |  |  | hi def link makeDefine		Define | 
					
						
							|  |  |  | hi def link makeCommandError	Error | 
					
						
							|  |  |  | hi def link makeConfig		PreCondit | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | let b:current_syntax = "make" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-05 22:26:30 +02:00
										 |  |  | let &cpo = s:cpo_save | 
					
						
							|  |  |  | unlet s:cpo_save | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | " vim: ts=8 |