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