meson.vim (4059B)
1 " Vim syntax file 2 " Language: Meson 3 " License: VIM License 4 " Maintainer: Nirbheek Chauhan <nirbheek.chauhan@gmail.com> 5 " Liam Beguin <liambeguin@gmail.com> 6 " Last Change: 2023 May 27 7 " Credits: Zvezdan Petkovic <zpetkovic@acm.org> 8 " Neil Schemenauer <nas@meson.ca> 9 " Dmitry Vasiliev 10 " 11 " This version is copied and edited from python.vim 12 " It's very basic, and doesn't do many things I'd like it to 13 " For instance, it should show errors for syntax that is valid in 14 " Python but not in Meson. 15 " 16 " Optional highlighting can be controlled using these variables. 17 " 18 " let meson_space_error_highlight = 1 19 " 20 21 if exists("b:current_syntax") 22 finish 23 endif 24 25 " We need nocompatible mode in order to continue lines with backslashes. 26 " Original setting will be restored. 27 let s:cpo_save = &cpo 28 set cpo&vim 29 30 " http://mesonbuild.com/Syntax.html 31 syn keyword mesonConditional elif else if endif 32 syn keyword mesonRepeat foreach endforeach 33 syn keyword mesonOperator and not or in 34 syn keyword mesonStatement continue break 35 36 syn match mesonComment "#.*$" contains=mesonTodo,@Spell 37 syn keyword mesonTodo FIXME NOTE NOTES TODO XXX contained 38 39 " Strings can either be single quoted or triple counted across multiple lines, 40 " but always with a ' 41 syn region mesonString 42 \ start="\z('\)" end="\z1" skip="\\\\\|\\\z1" 43 \ contains=mesonEscape,@Spell 44 syn region mesonString 45 \ start="\z('''\)" end="\z1" keepend 46 \ contains=mesonEscape,mesonSpaceError,@Spell 47 48 syn match mesonEscape "\\[abfnrtv'\\]" contained 49 syn match mesonEscape "\\\o\{1,3}" contained 50 syn match mesonEscape "\\x\x\{2}" contained 51 syn match mesonEscape "\%(\\u\x\{4}\|\\U\x\{8}\)" contained 52 " Meson allows case-insensitive Unicode IDs: http://www.unicode.org/charts/ 53 syn match mesonEscape "\\N{\a\+\%(\s\a\+\)*}" contained 54 syn match mesonEscape "\\$" 55 56 " Meson only supports integer numbers 57 " http://mesonbuild.com/Syntax.html#numbers 58 syn match mesonNumber "\<\d\+\>" 59 syn match mesonNumber "\<0x\x\+\>" 60 syn match mesonNumber "\<0o\o\+\>" 61 62 " booleans 63 syn keyword mesonBoolean false true 64 65 " Built-in functions 66 syn keyword mesonBuiltin 67 \ add_global_arguments 68 \ add_global_link_arguments 69 \ add_languages 70 \ add_project_arguments 71 \ add_project_dependencies 72 \ add_project_link_arguments 73 \ add_test_setup 74 \ alias_target 75 \ assert 76 \ benchmark 77 \ both_libraries 78 \ build_machine 79 \ build_target 80 \ configuration_data 81 \ configure_file 82 \ custom_target 83 \ declare_dependency 84 \ dependency 85 \ disabler 86 \ environment 87 \ error 88 \ executable 89 \ files 90 \ find_library 91 \ find_program 92 \ generator 93 \ get_option 94 \ get_variable 95 \ gettext 96 \ host_machine 97 \ import 98 \ include_directories 99 \ install_data 100 \ install_headers 101 \ install_man 102 \ install_subdir 103 \ install_symlink 104 \ install_emptydir 105 \ is_disabler 106 \ is_variable 107 \ jar 108 \ join_paths 109 \ library 110 \ meson 111 \ message 112 \ option 113 \ project 114 \ run_command 115 \ run_target 116 \ set_variable 117 \ shared_library 118 \ shared_module 119 \ static_library 120 \ structured_sources 121 \ subdir 122 \ subdir_done 123 \ subproject 124 \ summary 125 \ target_machine 126 \ test 127 \ unset_variable 128 \ vcs_tag 129 \ warning 130 \ range 131 \ debug 132 133 if exists("meson_space_error_highlight") 134 " trailing whitespace 135 syn match mesonSpaceError display excludenl "\s\+$" 136 " mixed tabs and spaces 137 syn match mesonSpaceError display " \+\t" 138 syn match mesonSpaceError display "\t\+ " 139 endif 140 141 " The default highlight links. Can be overridden later. 142 hi def link mesonStatement Statement 143 hi def link mesonConditional Conditional 144 hi def link mesonRepeat Repeat 145 hi def link mesonOperator Operator 146 hi def link mesonComment Comment 147 hi def link mesonTodo Todo 148 hi def link mesonString String 149 hi def link mesonEscape Special 150 hi def link mesonNumber Number 151 hi def link mesonBuiltin Function 152 hi def link mesonBoolean Boolean 153 if exists("meson_space_error_highlight") 154 hi def link mesonSpaceError Error 155 endif 156 157 let b:current_syntax = "meson" 158 159 let &cpo = s:cpo_save 160 unlet s:cpo_save 161 162 " vim:set sw=2 sts=2 ts=8 noet: