| " Vim syntax file | |
| " Language: Meson | |
| " License: VIM License | |
| " Maintainer: Nirbheek Chauhan <nirbheek.chauhan@gmail.com> | |
| " Liam Beguin <liambeguin@gmail.com> | |
| " Last Change: 2021 Aug 16 | |
| " 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 | |
| \ 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_machine | |
| \ build_target | |
| \ configuration_data | |
| \ configure_file | |
| \ custom_target | |
| \ declare_dependency | |
| \ dependency | |
| \ disabler | |
| \ 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 | |
| \ install_symlink | |
| \ install_emptydir | |
| \ is_disabler | |
| \ is_variable | |
| \ jar | |
| \ join_paths | |
| \ library | |
| \ meson | |
| \ message | |
| \ option | |
| \ project | |
| \ run_command | |
| \ run_target | |
| \ set_variable | |
| \ shared_library | |
| \ shared_module | |
| \ static_library | |
| \ structured_sources | |
| \ subdir | |
| \ subdir_done | |
| \ subproject | |
| \ summary | |
| \ target_machine | |
| \ test | |
| \ unset_variable | |
| \ vcs_tag | |
| \ warning | |
| \ range | |
| \ debug | |
| 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: |