# meson syntax highlighting for kakoune (https://mesonbuild.com) # # For reference see: # https://mesonbuild.com/Syntax.html # https://github.com/mesonbuild/meson/blob/master/data/syntax-highlighting/vim/syntax/meson.vim ## Detection hook global BufCreate (.*/|^)(meson\.build|meson_options\.txt) %{ set-option buffer filetype meson } ## Initialization hook -group meson-highlight global WinSetOption filetype=meson %{ require-module meson set-option window static_words %opt{meson_static_words} add-highlighter window/meson ref meson hook -once -always window WinSetOption filetype=.* %{ remove-highlighter window/meson } } provide-module meson %§ ## Highlighters add-highlighter shared/meson regions add-highlighter shared/meson/code default-region group add-highlighter shared/meson/comment region '(\h|^)#' '$' fill comment # TODO: highlight escape sequences within strings add-highlighter shared/meson/string_multiline region "'''" "'''" fill string add-highlighter shared/meson/string_single region "'" (?|\?|:)' 0:operator add-highlighter shared/meson/code/ regex '\b(?:and|not|or|in)\b' 0:operator # functions add-highlighter shared/meson/code/ regex "\b(\w+)\(" 1:function evaluate-commands %sh{ values="true false" keywords="if else endif elif foreach endforeach break continue" builtins="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 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 vcs_tag warning" join() { sep=$2; eval set -- $1; IFS="$sep"; echo "$*"; } # Add the language's grammar to the static completion list printf %s\\n "declare-option str-list meson_static_words $(join "${values} ${keywords} ${builtins}" ' ')" # Highlight keywords printf %s " add-highlighter shared/meson/code/ regex '\b($(join "${values}" '|'))\b' 0:value add-highlighter shared/meson/code/ regex '\b($(join "${keywords}" '|'))\b' 0:keyword add-highlighter shared/meson/code/ regex '\b($(join "${builtins}" '|'))\b\(' 1:builtin " } §