2004-06-13 20:20:40 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								" Vim syntax file  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								" Language:	Makefile  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								" Maintainer:	Claudio Fleiner <claudio@fleiner.com>  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								" URL:		http://www.fleiner.com/vim/syntax/make.vim  
						 
					
						
							
								
									
										
										
										
											2015-02-28 13:11:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								" Last Change:	2015 Feb 28  
						 
					
						
							
								
									
										
										
										
											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*"  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								" some directives  
						 
					
						
							
								
									
										
										
										
											2006-04-06 20:18:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								syn  match  makePreCondit 	"^ *\(ifeq\>\|else\>\|endif\>\|ifneq\>\|ifdef\>\|ifndef\>\)"  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								syn  match  makeInclude 	"^ *[-s]\=include"  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								syn  match  makeStatement 	"^ *vpath"  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								syn  match  makeExport     "^ *\(export\|unexport\)\>"  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								syn  match  makeOverride 	"^ *override"  
						 
					
						
							
								
									
										
										
										
											2004-06-13 20:20:40 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								hi  link  makeOverride  makeStatement  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								hi  link  makeExport  makeStatement  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											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  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								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  
						 
					
						
							
								
									
										
										
										
											2006-04-06 20:18:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								syn  match  makeInclude 	"^! *include"  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								syn  match  makePreCondit  "! *\(cmdswitches\|error\|message\|include\|if\|ifdef\|ifndef\|else\|elseif\|else if\|else\s*ifdef\|else\s*ifndef\|endif\|undef\)\>"  
						 
					
						
							
								
									
										
										
										
											2004-06-13 20:20:40 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								syn  case  match  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								" identifiers  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								syn  region  makeIdent 	start = "\$("  skip = "\\)\|\\\\"  end = ")"  contains = makeStatement , makeIdent , makeSString , makeDString  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								syn  region  makeIdent 	start = "\${"  skip = "\\}\|\\\\"  end = "}"  contains = makeStatement , makeIdent , makeSString , makeDString  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								syn  match  makeIdent 	"\$\$\w*"  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								syn  match  makeIdent 	"\$[^({]"  
						 
					
						
							
								
									
										
										
										
											2015-02-28 13:11:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								syn  match  makeIdent 	"^ *[^:#= \t]*\s*[:+?!*]=" me = e -2  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								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  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								" syn match makeSpecTarget	"^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\)\>"  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								syn  match  makeImplicit 		"^\.[A-Za-z0-9_./\t -]\+\s*:$" me = e -1  nextgroup = makeSource  
						 
					
						
							
								
									
										
										
										
											2012-10-05 22:26:30 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								syn  match  makeImplicit 		"^\.[A-Za-z0-9_./\t -]\+\s*:[^=]" me = e -2  nextgroup = makeSource  
						 
					
						
							
								
									
										
										
										
											2004-06-13 20:20:40 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-02-28 13:11:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								syn  region  makeTarget    transparent  matchgroup = makeTarget  start = "^[~A-Za-z0-9_./$()%-][A-Za-z0-9_./\t $()%-]*:\{1,2}[^:=]" rs = e -1  end = ";" re = e -1 , me = e -1  end = "[^\\]$"  keepend  contains = makeIdent , makeSpecTarget , makeNextLine , makeComment  skipnl  nextGroup = makeCommands  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								syn  match  makeTarget 		"^[~A-Za-z0-9_./$()%*@-][A-Za-z0-9_./\t $()%*@-]*::\=\s*$"  contains = makeIdent , makeSpecTarget , makeComment  skipnl  nextgroup = makeCommands , makeCommandError  
						 
					
						
							
								
									
										
										
										
											2004-06-13 20:20:40 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-02-28 13:11:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								syn  region  makeSpecTarget 	transparent  matchgroup = makeSpecTarget  start = "^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\)\>\s*:\{1,2}[^:=]" rs = e -1  end = "[^\\]$"  keepend  contains = makeIdent , makeSpecTarget , makeNextLine , makeComment  skipnl  nextGroup = makeCommands  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								syn  match  makeSpecTarget 		"^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\)\>\s*::\=\s*$"  contains = makeIdent , makeComment  skipnl  nextgroup = makeCommands , makeCommandError  
						 
					
						
							
								
									
										
										
										
											2004-06-13 20:20:40 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								syn  match  makeCommandError  "^\s\+\S.*"  contained  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								syn  region  makeCommands  start = ";" hs = s + 1  start = "^\t"  end = "^[^\t#]" me = e -1 , re = e -1  end = "^$"  contained  contains = makeCmdNextLine , makeSpecial , makeComment , makeIdent , makePreCondit , makeDefine , makeDString , makeSString  nextgroup = makeCommandError  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								syn  match  makeCmdNextLine 	"\\\n." he = e -1  contained  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								" Statements / Functions (GNU make)  
						 
					
						
							
								
									
										
										
										
											2008-08-06 17:06:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								syn  match  makeStatement  contained  "(\(subst\|abspath\|addprefix\|addsuffix\|and\|basename\|call\|dir\|error\|eval\|filter-out\|filter\|findstring\|firstword\|flavor\|foreach\|if\|info\|join\|lastword\|notdir\|or\|origin\|patsubst\|realpath\|shell\|sort\|strip\|suffix\|value\|warning\|wildcard\|word\|wordlist\|words\)\>" ms = s + 1  
						 
					
						
							
								
									
										
										
										
											2004-06-13 20:20:40 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								" Comment  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  exists ( "make_microsoft" )  
						 
					
						
							
								
									
										
										
										
											2007-05-05 17:54:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   syn  match   makeComment  "#.*"  contains = @Spell , makeTodo 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-06 20:18:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								elseif  ! exists ( "make_no_comments" )  
						 
					
						
							
								
									
										
										
										
											2007-05-05 17:54:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   syn  region   makeComment 	start = "#"  end = "^$"  end = "[^\\]$"  keepend  contains = @Spell , makeTodo 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   syn  match    makeComment 	"#$"  contains = @Spell 
							 
						 
					
						
							
								
									
										
										
										
											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 	"\\[^$]"  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								syn  region   makeDString  start = + \( \\\) \@< ! "+  skip=+\\.+  end=+" +   contains = makeIdent  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								syn  region   makeSString  start = + \( \\\) \@< ! '+  skip=+\\.+  end=+' +   contains = makeIdent  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								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  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-31 22:22:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								hi  def  link  makeNextLine 		makeSpecial  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								hi  def  link  makeCmdNextLine 	makeSpecial  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								hi  def  link  makeSpecTarget 		Statement  
						 
					
						
							
								
									
										
										
										
											2016-08-30 23:26:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if  ! exists ( "make_no_commands" )  
						 
					
						
							
								
									
										
										
										
											2016-08-31 22:22:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								hi  def  link  makeCommands 		Number  
						 
					
						
							
								
									
										
										
										
											2004-06-13 20:20:40 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								endif  
						 
					
						
							
								
									
										
										
										
											2016-08-31 22:22:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								hi  def  link  makeImplicit 		Function  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								hi  def  link  makeTarget 		Function  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								hi  def  link  makeInclude 		Include  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								hi  def  link  makePreCondit 		PreCondit  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								hi  def  link  makeStatement 		Statement  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								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