The Meson Build System
http://mesonbuild.com/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
160 lines
3.9 KiB
160 lines
3.9 KiB
" Vim syntax file |
|
" Language: Meson |
|
" License: VIM License |
|
" Maintainer: Nirbheek Chauhan <nirbheek.chauhan@gmail.com> |
|
" Liam Beguin <liambeguin@gmail.com> |
|
" Last Change: 2023 Aug 27 |
|
" 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 |
|
" |
|
|
|
if 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 |
|
set cpo&vim |
|
|
|
" http://mesonbuild.com/Syntax.html |
|
syn keyword mesonConditional elif else if endif |
|
syn keyword mesonRepeat foreach endforeach |
|
syn keyword mesonOperator and not or in |
|
syn keyword mesonStatement continue break |
|
|
|
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 |
|
" http://mesonbuild.com/Syntax.html#numbers |
|
syn match mesonNumber "\<\d\+\>" |
|
syn match mesonNumber "\<0x\x\+\>" |
|
syn match mesonNumber "\<0o\o\+\>" |
|
|
|
" booleans |
|
syn keyword mesonBoolean false true |
|
|
|
" Built-in functions |
|
syn keyword mesonBuiltin |
|
\ build_machine |
|
\ host_machine |
|
\ meson |
|
\ option |
|
\ target_machine |
|
\ add_global_arguments |
|
\ add_global_link_arguments |
|
\ add_languages |
|
\ add_project_arguments |
|
\ add_project_dependencies |
|
\ add_project_link_arguments |
|
\ add_test_setup |
|
\ alias_target |
|
\ assert |
|
\ benchmark |
|
\ both_libraries |
|
\ build_target |
|
\ configuration_data |
|
\ configure_file |
|
\ custom_target |
|
\ debug |
|
\ declare_dependency |
|
\ dependency |
|
\ disabler |
|
\ environment |
|
\ error |
|
\ executable |
|
\ files |
|
\ find_program |
|
\ generator |
|
\ get_option |
|
\ get_variable |
|
\ import |
|
\ include_directories |
|
\ install_data |
|
\ install_emptydir |
|
\ install_headers |
|
\ install_man |
|
\ install_subdir |
|
\ install_symlink |
|
\ is_disabler |
|
\ is_variable |
|
\ jar |
|
\ join_paths |
|
\ library |
|
\ message |
|
\ project |
|
\ range |
|
\ run_command |
|
\ run_target |
|
\ set_variable |
|
\ shared_library |
|
\ shared_module |
|
\ static_library |
|
\ structured_sources |
|
\ subdir |
|
\ subdir_done |
|
\ subproject |
|
\ summary |
|
\ test |
|
\ unset_variable |
|
\ vcs_tag |
|
\ warning |
|
|
|
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 |
|
|
|
" The default highlight links. Can be overridden later. |
|
hi def link mesonStatement Statement |
|
hi def link mesonConditional Conditional |
|
hi def link mesonRepeat Repeat |
|
hi def link mesonOperator Operator |
|
hi def link mesonComment Comment |
|
hi def link mesonTodo Todo |
|
hi def link mesonString String |
|
hi def link mesonEscape Special |
|
hi def link mesonNumber Number |
|
hi def link mesonBuiltin Function |
|
hi def link mesonBoolean Boolean |
|
if exists("meson_space_error_highlight") |
|
hi def link mesonSpaceError Error |
|
endif |
|
|
|
let b:current_syntax = "meson" |
|
|
|
let &cpo = s:cpo_save |
|
unlet s:cpo_save |
|
|
|
" vim:set sw=2 sts=2 ts=8 noet:
|
|
|