blob: 0af0d776f89515fe010b263b948228148178f31a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
|
" 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_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_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
\ subdir
\ subdir_done
\ subproject
\ summary
\ target_machine
\ test
\ unset_variable
\ vcs_tag
\ warning
\ range
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_higlight")
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:
|