| " 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 |
| \ 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_target |
| \ configuration_data |
| \ configure_file |
| \ custom_target |
| \ debug |
| \ declare_dependency |
| \ dependency |
| \ disabler |
| \ environment |
| \ error |
| \ executable |
| \ files |
| \ find_program |
| \ generator |
| \ get_option |
| \ get_variable |
| \ import |
| \ include_directories |
| \ install_data |
| \ install_emptydir |
| \ install_headers |
| \ install_man |
| \ install_subdir |
| \ install_symlink |
| \ is_disabler |
| \ is_variable |
| \ jar |
| \ join_paths |
| \ library |
| \ message |
| \ project |
| \ range |
| \ run_command |
| \ run_target |
| \ set_variable |
| \ shared_library |
| \ shared_module |
| \ static_library |
| \ structured_sources |
| \ subdir |
| \ subdir_done |
| \ subproject |
| \ summary |
| \ test |
| \ unset_variable |
| \ vcs_tag |
| \ warning |
| |
| 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: |