" Vim syntax file
" Language:	Meson
" Maintainer:	Nirbheek Chauhan <nirbheek.chauhan@gmail.com>
" Last Change:	2016 Dec 7
" Credits:	Zvezdan Petkovic <zpetkovic@acm.org>
"		Neil Schemenauer <nas@meson.ca>
"		Dmitry Vasiliev
"
"		This version is copied and edited from python.vim
"		It's very basic, and doesn't do many things I'd like it to
"		For instance, it should show errors for syntax that is valid in
"		Python but not in Meson.
"
" Optional highlighting can be controlled using these variables.
"
"   let meson_space_error_highlight = 1
"

" For version 5.x: Clear all syntax items.
" For version 6.x: Quit when a syntax file was already loaded.
if version < 600
  syntax clear
elseif exists("b:current_syntax")
  finish
endif

" We need nocompatible mode in order to continue lines with backslashes.
" Original setting will be restored.
let s:cpo_save = &cpo
setlocal cpo&vim

" https://github.com/mesonbuild/meson/wiki/Syntax
syn keyword mesonConditional	elif else if endif
syn keyword mesonRepeat	foreach endforeach
syn keyword mesonOperator	and not or

syn match   mesonComment	"#.*$" contains=mesonTodo,@Spell
syn keyword mesonTodo		FIXME NOTE NOTES TODO XXX contained

" Strings can either be single quoted or triple counted across multiple lines,
" but always with a '
syn region  mesonString
      \ start="\z('\)" end="\z1" skip="\\\\\|\\\z1"
      \ contains=mesonEscape,@Spell
syn region  mesonString
      \ start="\z('''\)" end="\z1" keepend
      \ contains=mesonEscape,mesonSpaceError,@Spell

syn match   mesonEscape	"\\[abfnrtv'\\]" contained
syn match   mesonEscape	"\\\o\{1,3}" contained
syn match   mesonEscape	"\\x\x\{2}" contained
syn match   mesonEscape	"\%(\\u\x\{4}\|\\U\x\{8}\)" contained
" Meson allows case-insensitive Unicode IDs: http://www.unicode.org/charts/
syn match   mesonEscape	"\\N{\a\+\%(\s\a\+\)*}" contained
syn match   mesonEscape	"\\$"

" Meson only supports integer numbers
" https://github.com/mesonbuild/meson/wiki/Syntax#numbers
syn match   mesonNumber	"\<\d\+\>"

" booleans
syn keyword mesonConstant	false true

" Built-in functions
syn keyword mesonBuiltin
  \ add_global_arguments
  \ add_global_link_arguments
  \ add_languages
  \ add_project_arguments
  \ add_project_link_arguments
  \ add_test_setup
  \ benchmark
  \ build_machine
  \ build_target
  \ configuration_data
  \ configure_file
  \ custom_target
  \ declare_dependency
  \ dependency
  \ environment
  \ error
  \ executable
  \ files
  \ find_library
  \ find_program
  \ generator
  \ get_option
  \ get_variable
  \ gettext
  \ host_machine
  \ import
  \ include_directories
  \ install_data
  \ install_headers
  \ install_man
  \ install_subdir
  \ is_variable
  \ jar
  \ join_paths
  \ library
  \ meson
  \ message
  \ project
  \ run_command
  \ run_target
  \ set_variable
  \ shared_library
  \ shared_module
  \ static_library
  \ subdir
  \ subproject
  \ target_machine
  \ test
  \ vcs_tag

if exists("meson_space_error_highlight")
  " trailing whitespace
  syn match   mesonSpaceError	display excludenl "\s\+$"
  " mixed tabs and spaces
  syn match   mesonSpaceError	display " \+\t"
  syn match   mesonSpaceError	display "\t\+ "
endif

if version >= 508 || !exists("did_meson_syn_inits")
  if version <= 508
    let did_meson_syn_inits = 1
    command -nargs=+ HiLink hi link <args>
  else
    command -nargs=+ HiLink hi def link <args>
  endif

  " The default highlight links.  Can be overridden later.
  HiLink mesonStatement		Statement
  HiLink mesonConditional	Conditional
  HiLink mesonRepeat		Repeat
  HiLink mesonOperator		Operator
  HiLink mesonComment		Comment
  HiLink mesonTodo		Todo
  HiLink mesonString		String
  HiLink mesonEscape		Special
  HiLink mesonNumber		Number
  HiLink mesonBuiltin		Function
  HiLink mesonConstant		Number
  if exists("meson_space_error_highlight")
    HiLink mesonSpaceError	Error
  endif

  delcommand HiLink
endif

let b:current_syntax = "meson"

let &cpo = s:cpo_save
unlet s:cpo_save

" vim:set sw=2 sts=2 ts=8 noet:
