neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

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: