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.
103 lines
3.0 KiB
103 lines
3.0 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 |
|
\ {{builtin_funcs}} |
|
|
|
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:
|
|
|