xref: /vim-8.2.3635/runtime/syntax/meson.vim (revision 113cb513)
196f45c0bSBram Moolenaar" Vim syntax file
296f45c0bSBram Moolenaar" Language:	Meson
396f45c0bSBram Moolenaar" License:	VIM License
496f45c0bSBram Moolenaar" Maintainer:	Nirbheek Chauhan <[email protected]>
53ec3217fSBram Moolenaar"		Liam Beguin <[email protected]>
6*113cb513SBram Moolenaar" Last Change:	2021 Aug 16
796f45c0bSBram Moolenaar" Credits:	Zvezdan Petkovic <[email protected]>
896f45c0bSBram Moolenaar"		Neil Schemenauer <[email protected]>
996f45c0bSBram Moolenaar"		Dmitry Vasiliev
1096f45c0bSBram Moolenaar"
1196f45c0bSBram Moolenaar"		This version is copied and edited from python.vim
1296f45c0bSBram Moolenaar"		It's very basic, and doesn't do many things I'd like it to
1396f45c0bSBram Moolenaar"		For instance, it should show errors for syntax that is valid in
1496f45c0bSBram Moolenaar"		Python but not in Meson.
1596f45c0bSBram Moolenaar"
1696f45c0bSBram Moolenaar" Optional highlighting can be controlled using these variables.
1796f45c0bSBram Moolenaar"
1896f45c0bSBram Moolenaar"   let meson_space_error_highlight = 1
1996f45c0bSBram Moolenaar"
2096f45c0bSBram Moolenaar
213ec3217fSBram Moolenaarif exists("b:current_syntax")
2296f45c0bSBram Moolenaar  finish
2396f45c0bSBram Moolenaarendif
2496f45c0bSBram Moolenaar
2596f45c0bSBram Moolenaar" We need nocompatible mode in order to continue lines with backslashes.
2696f45c0bSBram Moolenaar" Original setting will be restored.
2796f45c0bSBram Moolenaarlet s:cpo_save = &cpo
2896f45c0bSBram Moolenaarset cpo&vim
2996f45c0bSBram Moolenaar
3096f45c0bSBram Moolenaar" http://mesonbuild.com/Syntax.html
3196f45c0bSBram Moolenaarsyn keyword mesonConditional	elif else if endif
3296f45c0bSBram Moolenaarsyn keyword mesonRepeat		foreach endforeach
333ec3217fSBram Moolenaarsyn keyword mesonOperator	and not or in
343ec3217fSBram Moolenaarsyn keyword mesonStatement	continue break
3596f45c0bSBram Moolenaar
3696f45c0bSBram Moolenaarsyn match   mesonComment	"#.*$" contains=mesonTodo,@Spell
3796f45c0bSBram Moolenaarsyn keyword mesonTodo		FIXME NOTE NOTES TODO XXX contained
3896f45c0bSBram Moolenaar
3996f45c0bSBram Moolenaar" Strings can either be single quoted or triple counted across multiple lines,
4096f45c0bSBram Moolenaar" but always with a '
4196f45c0bSBram Moolenaarsyn region  mesonString
4296f45c0bSBram Moolenaar      \ start="\z('\)" end="\z1" skip="\\\\\|\\\z1"
4396f45c0bSBram Moolenaar      \ contains=mesonEscape,@Spell
4496f45c0bSBram Moolenaarsyn region  mesonString
4596f45c0bSBram Moolenaar      \ start="\z('''\)" end="\z1" keepend
4696f45c0bSBram Moolenaar      \ contains=mesonEscape,mesonSpaceError,@Spell
4796f45c0bSBram Moolenaar
4896f45c0bSBram Moolenaarsyn match   mesonEscape	"\\[abfnrtv'\\]" contained
4996f45c0bSBram Moolenaarsyn match   mesonEscape	"\\\o\{1,3}" contained
5096f45c0bSBram Moolenaarsyn match   mesonEscape	"\\x\x\{2}" contained
5196f45c0bSBram Moolenaarsyn match   mesonEscape	"\%(\\u\x\{4}\|\\U\x\{8}\)" contained
5296f45c0bSBram Moolenaar" Meson allows case-insensitive Unicode IDs: http://www.unicode.org/charts/
5396f45c0bSBram Moolenaarsyn match   mesonEscape	"\\N{\a\+\%(\s\a\+\)*}" contained
5496f45c0bSBram Moolenaarsyn match   mesonEscape	"\\$"
5596f45c0bSBram Moolenaar
5696f45c0bSBram Moolenaar" Meson only supports integer numbers
5796f45c0bSBram Moolenaar" http://mesonbuild.com/Syntax.html#numbers
5896f45c0bSBram Moolenaarsyn match   mesonNumber	"\<\d\+\>"
59*113cb513SBram Moolenaarsyn match   mesonNumber	"\<0x\x\+\>"
60*113cb513SBram Moolenaarsyn match   mesonNumber	"\<0o\o\+\>"
6196f45c0bSBram Moolenaar
6296f45c0bSBram Moolenaar" booleans
63*113cb513SBram Moolenaarsyn keyword mesonBoolean	false true
6496f45c0bSBram Moolenaar
6596f45c0bSBram Moolenaar" Built-in functions
6696f45c0bSBram Moolenaarsyn keyword mesonBuiltin
6796f45c0bSBram Moolenaar  \ add_global_arguments
6896f45c0bSBram Moolenaar  \ add_global_link_arguments
6996f45c0bSBram Moolenaar  \ add_languages
7096f45c0bSBram Moolenaar  \ add_project_arguments
7196f45c0bSBram Moolenaar  \ add_project_link_arguments
7296f45c0bSBram Moolenaar  \ add_test_setup
7396f45c0bSBram Moolenaar  \ alias_target
7496f45c0bSBram Moolenaar  \ assert
7596f45c0bSBram Moolenaar  \ benchmark
7696f45c0bSBram Moolenaar  \ both_libraries
7796f45c0bSBram Moolenaar  \ build_machine
7896f45c0bSBram Moolenaar  \ build_target
7996f45c0bSBram Moolenaar  \ configuration_data
8096f45c0bSBram Moolenaar  \ configure_file
8196f45c0bSBram Moolenaar  \ custom_target
8296f45c0bSBram Moolenaar  \ declare_dependency
8396f45c0bSBram Moolenaar  \ dependency
8496f45c0bSBram Moolenaar  \ disabler
8596f45c0bSBram Moolenaar  \ environment
8696f45c0bSBram Moolenaar  \ error
8796f45c0bSBram Moolenaar  \ executable
8896f45c0bSBram Moolenaar  \ files
8996f45c0bSBram Moolenaar  \ find_library
9096f45c0bSBram Moolenaar  \ find_program
9196f45c0bSBram Moolenaar  \ generator
9296f45c0bSBram Moolenaar  \ get_option
9396f45c0bSBram Moolenaar  \ get_variable
9496f45c0bSBram Moolenaar  \ gettext
9596f45c0bSBram Moolenaar  \ host_machine
9696f45c0bSBram Moolenaar  \ import
9796f45c0bSBram Moolenaar  \ include_directories
9896f45c0bSBram Moolenaar  \ install_data
9996f45c0bSBram Moolenaar  \ install_headers
10096f45c0bSBram Moolenaar  \ install_man
10196f45c0bSBram Moolenaar  \ install_subdir
102*113cb513SBram Moolenaar  \ install_emptydir
10396f45c0bSBram Moolenaar  \ is_disabler
10496f45c0bSBram Moolenaar  \ is_variable
10596f45c0bSBram Moolenaar  \ jar
10696f45c0bSBram Moolenaar  \ join_paths
10796f45c0bSBram Moolenaar  \ library
10896f45c0bSBram Moolenaar  \ meson
10996f45c0bSBram Moolenaar  \ message
11096f45c0bSBram Moolenaar  \ option
11196f45c0bSBram Moolenaar  \ project
11296f45c0bSBram Moolenaar  \ run_command
11396f45c0bSBram Moolenaar  \ run_target
11496f45c0bSBram Moolenaar  \ set_variable
11596f45c0bSBram Moolenaar  \ shared_library
11696f45c0bSBram Moolenaar  \ shared_module
11796f45c0bSBram Moolenaar  \ static_library
11896f45c0bSBram Moolenaar  \ subdir
11996f45c0bSBram Moolenaar  \ subdir_done
12096f45c0bSBram Moolenaar  \ subproject
1213ec3217fSBram Moolenaar  \ summary
12296f45c0bSBram Moolenaar  \ target_machine
12396f45c0bSBram Moolenaar  \ test
124*113cb513SBram Moolenaar  \ unset_variable
12596f45c0bSBram Moolenaar  \ vcs_tag
12696f45c0bSBram Moolenaar  \ warning
1273ec3217fSBram Moolenaar  \ range
12896f45c0bSBram Moolenaar
12996f45c0bSBram Moolenaarif exists("meson_space_error_highlight")
13096f45c0bSBram Moolenaar  " trailing whitespace
13196f45c0bSBram Moolenaar  syn match   mesonSpaceError	display excludenl "\s\+$"
13296f45c0bSBram Moolenaar  " mixed tabs and spaces
13396f45c0bSBram Moolenaar  syn match   mesonSpaceError	display " \+\t"
13496f45c0bSBram Moolenaar  syn match   mesonSpaceError	display "\t\+ "
13596f45c0bSBram Moolenaarendif
13696f45c0bSBram Moolenaar
13796f45c0bSBram Moolenaar" The default highlight links.  Can be overridden later.
1383ec3217fSBram Moolenaarhi def link mesonStatement	Statement
1393ec3217fSBram Moolenaarhi def link mesonConditional	Conditional
1403ec3217fSBram Moolenaarhi def link mesonRepeat		Repeat
1413ec3217fSBram Moolenaarhi def link mesonOperator	Operator
1423ec3217fSBram Moolenaarhi def link mesonComment	Comment
1433ec3217fSBram Moolenaarhi def link mesonTodo		Todo
1443ec3217fSBram Moolenaarhi def link mesonString		String
1453ec3217fSBram Moolenaarhi def link mesonEscape		Special
1463ec3217fSBram Moolenaarhi def link mesonNumber		Number
1473ec3217fSBram Moolenaarhi def link mesonBuiltin	Function
148*113cb513SBram Moolenaarhi def link mesonBoolean	Boolean
1493ec3217fSBram Moolenaarif exists("meson_space_error_higlight")
1503ec3217fSBram Moolenaar  hi def link mesonSpaceError	Error
15196f45c0bSBram Moolenaarendif
15296f45c0bSBram Moolenaar
15396f45c0bSBram Moolenaarlet b:current_syntax = "meson"
15496f45c0bSBram Moolenaar
15596f45c0bSBram Moolenaarlet &cpo = s:cpo_save
15696f45c0bSBram Moolenaarunlet s:cpo_save
15796f45c0bSBram Moolenaar
15896f45c0bSBram Moolenaar" vim:set sw=2 sts=2 ts=8 noet:
159