| " 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: |