| " 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 | |
| setlocal 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_link_arguments | |
| \ add_test_setup | |
| \ 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_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: |