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.
157 lines
3.9 KiB
157 lines
3.9 KiB
" 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 |
|
set 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_arguments |
|
\ add_project_link_arguments |
|
\ 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_subproject |
|
\ 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:
|
|
|