From 604f2b9a68a69fafacbb59a69df2b3a5719a4505 Mon Sep 17 00:00:00 2001 From: Arseny Maslennikov Date: Mon, 17 Jul 2017 03:00:21 +0300 Subject: Add zsh completion function for Meson Deprecated Meson syntax is not supported. There are features not yet implemented, like completing build targets and build options; more on this in the comments. --- data/_meson | 189 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 189 insertions(+) create mode 100644 data/_meson diff --git a/data/_meson b/data/_meson new file mode 100644 index 0000000..dad1252 --- /dev/null +++ b/data/_meson @@ -0,0 +1,189 @@ +#compdef meson mesonconf=meson-configure mesontest=meson-test mesonintrospect=meson-introspect + +# vim:ts=2 sw=2 + +local curcontext="$curcontext" state line +local -i ret + +local __meson_backends="(ninja xcode ${(j. .)${:-vs{,2010,2015,2017}}})" +local __meson_build_types="(plain debug debugoptimized minsize release)" +local __meson_wrap_modes="(WrapMode.{default,nofallback,nodownload})" + +local -a meson_commands=( +'setup:set up a build directory' +'configure:configure a project' +'test:run tests' +'introspect:query project properties' +'wrap:manage source dependencies' +) + +(( $+functions[__meson_is_build_dir] )) || __meson_is_build_dir() { + local mpd="${1:-$PWD}/meson-private" + [[ -f "$mpd/build.dat" && -f "$mpd/coredata.dat" ]] + return $? +} + +# TODO: implement build option completion +(( $+functions[__meson_build_options] )) || __meson_build_options() {} +# TODO: implement target name completion +(( $+functions[__meson_targets] )) || __meson_targets() {} +# `meson introspect` currently can provide that information in JSON. +# We can: +# 1) pipe its output to python3 -m json.tool | grep "$alovelyregex" | cut <...> +# 2) teach mintro.py to use a different output format +# (or perhaps just to select the fields printed) + +(( $+functions[__meson_test_names] )) || __meson_test_names() { + local rtests + if rtests="$(_call_program meson meson test ${opt_args[-C]:+-C "$opt_args[-C]"} --list)"; + then + local -a tests=(${(@f)rtests}) + _describe -t "tests" "Meson tests" tests + else + _message -r "current working directory is not a build directory" + _message -r 'use -C $build_dir or cd $build_dir' + fi +} + +(( $+functions[_meson_commands] )) || _meson_commands() { + _describe -t commands "Meson subcommands" meson_commands +} + +(( $+functions[_meson-setup] )) || _meson-setup() { + local firstd secondd + if [[ -f "meson.build" ]]; then + # if there's no second argument on the command line + # cwd will implicitly be substituted: + # - as the source directory if it has a file with the name "meson.build"; + # - as the build directory otherwise + # more info in mesonbuild/mesonmain.py + firstd="build" + secondd="source" + else + firstd="source" + secondd="build" + fi + + _arguments \ + '*-D-[set the value of a build option]:build option:__meson_build_options' \ + '--prefix=[installation prefix]: :_directories' \ + '--libdir=[library directory]: :_directories' \ + '--libexecdir=[library executable directory]: :_directories' \ + '--bindir=[executable directory]: :_directories' \ + '--sbindir=[system executable directory]: :_directories' \ + '--includedir=[header file directory]: :_directories' \ + '--datadir=[data file directory]: :_directories' \ + '--mandir=[manual page directory]: :_directories' \ + '--infodir=[info page directory]: :_directories' \ + '--localedir=[locale data directory]: :_directories' \ + '--sysconfdir=[system configuration directory]: :_directories' \ + '--localstatedir=[local state data directory]: :_directories' \ + '--sharedstatedir=[arch-independent data directory]: :_directories' \ + '--backend=[backend to use]:Meson backend:'"$__meson_backends" \ + '--buildtype=[build type to use]:Meson build type:'"$__meson_build_types" \ + '--strip[strip targets on install]' \ + '--unity=[unity builds on/off]:whether to do unity builds:(on off subprojects)' \ + '--werror[treat warnings as errors]' \ + '--layout=[build directory layout]:build directory layout:(flat mirror)' \ + '--default-library=[default library type]:default library type:(shared static)' \ + '--warnlevel=[compiler warning level]:compiler warning level:warning level:(1 2 3)' \ + '--stdsplit=[split stdout and stderr in test logs]' \ + '--errorlogs=[prints the logs from failing tests]' \ + '--cross-file=[cross-compilation environment description]:cross file:_files' \ + '--wrap-mode=[special wrap mode]:wrap mode:'"$__meson_wrap_modes" \ + ":$firstd directory:_directories" \ + "::$secondd directory:_directories" \ + # +} + +(( $+functions[_meson-configure] )) || _meson-configure() { + local curcontext="$curcontext" + # TODO: implement 'mesonconf @file' + local -a specs=( + '--clearcache[clear cached state]' + '*-D-[set the value of a build option]:build option:__meson_build_options' + '::build directory:_directories' + ) + + _arguments \ + '(: -)'{'--help','-h'}'[show a help message and quit]' \ + "${(@)specs}" +} + +(( $+functions[_meson-test] )) || _meson-test() { + local curcontext="$curcontext" + + # TODO: complete test suites + local -a specs=( + '(--quiet -q)'{'--quiet','-q'}'[produce less output to the terminal]' + '(--verbose -v)'{'--verbose','-v'}'[do not redirect stdout and stderr]' + '(--timeout-multiplier -t)'{'--timeout-multiplier','-t'}'[a multiplier for test timeouts]:Python floating-point number: ' + '-C[directory to cd into]: :_directories' + '--repeat[number of times to run the tests]:number of times to repeat: ' + '--no-rebuild[do not rebuild before running tests]' + '--gdb[run tests under gdb]' + '--list[list available tests]' + '(--wrapper --wrap)'{'--wrapper=','--wrap='}'[wrapper to run tests with]:wrapper program:_path_commands' + '(--no-suite)--suite[only run tests from this suite]:test suite: ' + '(--suite)--no-suite[do not run tests from this suite]:test suite: ' + '--no-stdsplit[do not split stderr and stdout in logs]' + '--print-errorlogs[print logs for failing tests]' + '--benchmark[run benchmarks instead of tests]' + '--logbase[base name for log file]:filename: ' + '--num-processes[how many threads to use]:number of processes: ' + '--setup[which test setup to use]:test setup: ' + '--test-args[arguments to pass to the tests]: : ' + '*:Meson tests:__meson_test_names' + ) + + _arguments \ + '(: -)'{'--help','-h'}'[show a help message and quit]' \ + "${(@)specs}" +} + +(( $+functions[_meson-introspect] )) || _meson-introspect() { + local curcontext="$curcontext" + local -a specs=( + '--targets[list top level targets]' + '--installed[list all installed files and directories]' + '--target-files[list source files for a given target]:target:__meson_targets' + '--buildsystem-files[list files that belong to the build system]' + '--buildoptions[list all build options]' + '--tests[list all unit tests]' + '--benchmarks[list all benchmarks]' + '--dependencies[list external dependencies]' + '--projectinfo[show project information]' + '::build directory:_directories' + ) +_arguments \ + '(: -)'{'--help','-h'}'[show a help message and quit]' \ + "${(@)specs}" +} + +(( $+functions[_meson-wrap] )) || _meson-wrap() { + # TODO +} + +if [[ $service != meson ]]; then + _call_function ret _$service + return ret +fi + +_arguments -C -R \ + '(: -)'{'--help','-h'}'[show a help message and quit]' \ + '(: -)'{'--version','-v'}'[show version information and quit]' \ + '(-): :_meson_commands' \ + '*:: :->post-command' \ +# +ret=$? + +[[ $ret = 300 ]] && case "$state" in + post-command) + service="meson-$words[1]" + curcontext=${curcontext%:*:*}:$service: + _call_function ret _$service + ;; +esac + +return ret + -- cgit v1.1 From abbf2f4fabd4fbb1d31aeafa18334bb1a4dceab7 Mon Sep 17 00:00:00 2001 From: Arseny Maslennikov Date: Thu, 20 Jul 2017 15:55:22 +0300 Subject: Move shell completions and text editor helpers to data/ --- data/_meson | 189 ------------------------ data/meson.el | 43 ------ data/shell-completions/zsh/_meson | 189 ++++++++++++++++++++++++ data/syntax-highlighting/emacs/meson.el | 43 ++++++ data/syntax-highlighting/vim/README | 3 + data/syntax-highlighting/vim/ftdetect/meson.vim | 2 + data/syntax-highlighting/vim/indent/meson.vim | 183 +++++++++++++++++++++++ data/syntax-highlighting/vim/syntax/meson.vim | 156 +++++++++++++++++++ syntax-highlighting/vim/README | 3 - syntax-highlighting/vim/ftdetect/meson.vim | 2 - syntax-highlighting/vim/indent/meson.vim | 183 ----------------------- syntax-highlighting/vim/syntax/meson.vim | 156 ------------------- 12 files changed, 576 insertions(+), 576 deletions(-) delete mode 100644 data/_meson delete mode 100644 data/meson.el create mode 100644 data/shell-completions/zsh/_meson create mode 100644 data/syntax-highlighting/emacs/meson.el create mode 100644 data/syntax-highlighting/vim/README create mode 100644 data/syntax-highlighting/vim/ftdetect/meson.vim create mode 100644 data/syntax-highlighting/vim/indent/meson.vim create mode 100644 data/syntax-highlighting/vim/syntax/meson.vim delete mode 100644 syntax-highlighting/vim/README delete mode 100644 syntax-highlighting/vim/ftdetect/meson.vim delete mode 100644 syntax-highlighting/vim/indent/meson.vim delete mode 100644 syntax-highlighting/vim/syntax/meson.vim diff --git a/data/_meson b/data/_meson deleted file mode 100644 index dad1252..0000000 --- a/data/_meson +++ /dev/null @@ -1,189 +0,0 @@ -#compdef meson mesonconf=meson-configure mesontest=meson-test mesonintrospect=meson-introspect - -# vim:ts=2 sw=2 - -local curcontext="$curcontext" state line -local -i ret - -local __meson_backends="(ninja xcode ${(j. .)${:-vs{,2010,2015,2017}}})" -local __meson_build_types="(plain debug debugoptimized minsize release)" -local __meson_wrap_modes="(WrapMode.{default,nofallback,nodownload})" - -local -a meson_commands=( -'setup:set up a build directory' -'configure:configure a project' -'test:run tests' -'introspect:query project properties' -'wrap:manage source dependencies' -) - -(( $+functions[__meson_is_build_dir] )) || __meson_is_build_dir() { - local mpd="${1:-$PWD}/meson-private" - [[ -f "$mpd/build.dat" && -f "$mpd/coredata.dat" ]] - return $? -} - -# TODO: implement build option completion -(( $+functions[__meson_build_options] )) || __meson_build_options() {} -# TODO: implement target name completion -(( $+functions[__meson_targets] )) || __meson_targets() {} -# `meson introspect` currently can provide that information in JSON. -# We can: -# 1) pipe its output to python3 -m json.tool | grep "$alovelyregex" | cut <...> -# 2) teach mintro.py to use a different output format -# (or perhaps just to select the fields printed) - -(( $+functions[__meson_test_names] )) || __meson_test_names() { - local rtests - if rtests="$(_call_program meson meson test ${opt_args[-C]:+-C "$opt_args[-C]"} --list)"; - then - local -a tests=(${(@f)rtests}) - _describe -t "tests" "Meson tests" tests - else - _message -r "current working directory is not a build directory" - _message -r 'use -C $build_dir or cd $build_dir' - fi -} - -(( $+functions[_meson_commands] )) || _meson_commands() { - _describe -t commands "Meson subcommands" meson_commands -} - -(( $+functions[_meson-setup] )) || _meson-setup() { - local firstd secondd - if [[ -f "meson.build" ]]; then - # if there's no second argument on the command line - # cwd will implicitly be substituted: - # - as the source directory if it has a file with the name "meson.build"; - # - as the build directory otherwise - # more info in mesonbuild/mesonmain.py - firstd="build" - secondd="source" - else - firstd="source" - secondd="build" - fi - - _arguments \ - '*-D-[set the value of a build option]:build option:__meson_build_options' \ - '--prefix=[installation prefix]: :_directories' \ - '--libdir=[library directory]: :_directories' \ - '--libexecdir=[library executable directory]: :_directories' \ - '--bindir=[executable directory]: :_directories' \ - '--sbindir=[system executable directory]: :_directories' \ - '--includedir=[header file directory]: :_directories' \ - '--datadir=[data file directory]: :_directories' \ - '--mandir=[manual page directory]: :_directories' \ - '--infodir=[info page directory]: :_directories' \ - '--localedir=[locale data directory]: :_directories' \ - '--sysconfdir=[system configuration directory]: :_directories' \ - '--localstatedir=[local state data directory]: :_directories' \ - '--sharedstatedir=[arch-independent data directory]: :_directories' \ - '--backend=[backend to use]:Meson backend:'"$__meson_backends" \ - '--buildtype=[build type to use]:Meson build type:'"$__meson_build_types" \ - '--strip[strip targets on install]' \ - '--unity=[unity builds on/off]:whether to do unity builds:(on off subprojects)' \ - '--werror[treat warnings as errors]' \ - '--layout=[build directory layout]:build directory layout:(flat mirror)' \ - '--default-library=[default library type]:default library type:(shared static)' \ - '--warnlevel=[compiler warning level]:compiler warning level:warning level:(1 2 3)' \ - '--stdsplit=[split stdout and stderr in test logs]' \ - '--errorlogs=[prints the logs from failing tests]' \ - '--cross-file=[cross-compilation environment description]:cross file:_files' \ - '--wrap-mode=[special wrap mode]:wrap mode:'"$__meson_wrap_modes" \ - ":$firstd directory:_directories" \ - "::$secondd directory:_directories" \ - # -} - -(( $+functions[_meson-configure] )) || _meson-configure() { - local curcontext="$curcontext" - # TODO: implement 'mesonconf @file' - local -a specs=( - '--clearcache[clear cached state]' - '*-D-[set the value of a build option]:build option:__meson_build_options' - '::build directory:_directories' - ) - - _arguments \ - '(: -)'{'--help','-h'}'[show a help message and quit]' \ - "${(@)specs}" -} - -(( $+functions[_meson-test] )) || _meson-test() { - local curcontext="$curcontext" - - # TODO: complete test suites - local -a specs=( - '(--quiet -q)'{'--quiet','-q'}'[produce less output to the terminal]' - '(--verbose -v)'{'--verbose','-v'}'[do not redirect stdout and stderr]' - '(--timeout-multiplier -t)'{'--timeout-multiplier','-t'}'[a multiplier for test timeouts]:Python floating-point number: ' - '-C[directory to cd into]: :_directories' - '--repeat[number of times to run the tests]:number of times to repeat: ' - '--no-rebuild[do not rebuild before running tests]' - '--gdb[run tests under gdb]' - '--list[list available tests]' - '(--wrapper --wrap)'{'--wrapper=','--wrap='}'[wrapper to run tests with]:wrapper program:_path_commands' - '(--no-suite)--suite[only run tests from this suite]:test suite: ' - '(--suite)--no-suite[do not run tests from this suite]:test suite: ' - '--no-stdsplit[do not split stderr and stdout in logs]' - '--print-errorlogs[print logs for failing tests]' - '--benchmark[run benchmarks instead of tests]' - '--logbase[base name for log file]:filename: ' - '--num-processes[how many threads to use]:number of processes: ' - '--setup[which test setup to use]:test setup: ' - '--test-args[arguments to pass to the tests]: : ' - '*:Meson tests:__meson_test_names' - ) - - _arguments \ - '(: -)'{'--help','-h'}'[show a help message and quit]' \ - "${(@)specs}" -} - -(( $+functions[_meson-introspect] )) || _meson-introspect() { - local curcontext="$curcontext" - local -a specs=( - '--targets[list top level targets]' - '--installed[list all installed files and directories]' - '--target-files[list source files for a given target]:target:__meson_targets' - '--buildsystem-files[list files that belong to the build system]' - '--buildoptions[list all build options]' - '--tests[list all unit tests]' - '--benchmarks[list all benchmarks]' - '--dependencies[list external dependencies]' - '--projectinfo[show project information]' - '::build directory:_directories' - ) -_arguments \ - '(: -)'{'--help','-h'}'[show a help message and quit]' \ - "${(@)specs}" -} - -(( $+functions[_meson-wrap] )) || _meson-wrap() { - # TODO -} - -if [[ $service != meson ]]; then - _call_function ret _$service - return ret -fi - -_arguments -C -R \ - '(: -)'{'--help','-h'}'[show a help message and quit]' \ - '(: -)'{'--version','-v'}'[show version information and quit]' \ - '(-): :_meson_commands' \ - '*:: :->post-command' \ -# -ret=$? - -[[ $ret = 300 ]] && case "$state" in - post-command) - service="meson-$words[1]" - curcontext=${curcontext%:*:*}:$service: - _call_function ret _$service - ;; -esac - -return ret - diff --git a/data/meson.el b/data/meson.el deleted file mode 100644 index 36f7eb9..0000000 --- a/data/meson.el +++ /dev/null @@ -1,43 +0,0 @@ -;; command to comment/uncomment text -(defun meson-comment-dwim (arg) - "Comment or uncomment current line or region in a smart way. -For detail, see `comment-dwim'." - (interactive "*P") - (require 'newcomment) - (let ( - (comment-start "#") (comment-end "") - ) - (comment-dwim arg))) - -;;(setq mymeson-keywords-regex (regex-opt '("if", "endif", "foreach", "endforeach"))) - -;; keywords for syntax coloring -(setq meson-keywords - `( - ( ,(regexp-opt '("if" "endif" "for" "foreach") 'word) . font-lock-keyword-face) - ) - ) - -;; syntax table -(defvar meson-syntax-table nil "Syntax table for `meson-mode'.") -(setq meson-syntax-table - (let ((synTable (make-syntax-table))) - - ;; bash style comment: “# …” - (modify-syntax-entry ?# "< b" synTable) - (modify-syntax-entry ?\n "> b" synTable) - - synTable)) - -;; define the major mode. -(define-derived-mode meson-mode fundamental-mode - "meson-mode is a major mode for editing Meson build definition files." - :syntax-table meson-syntax-table - - (setq font-lock-defaults '(meson-keywords)) - (setq mode-name "meson") - - ;; modify the keymap - (define-key meson-mode-map [remap comment-dwim] 'meson-comment-dwim) -) - diff --git a/data/shell-completions/zsh/_meson b/data/shell-completions/zsh/_meson new file mode 100644 index 0000000..dad1252 --- /dev/null +++ b/data/shell-completions/zsh/_meson @@ -0,0 +1,189 @@ +#compdef meson mesonconf=meson-configure mesontest=meson-test mesonintrospect=meson-introspect + +# vim:ts=2 sw=2 + +local curcontext="$curcontext" state line +local -i ret + +local __meson_backends="(ninja xcode ${(j. .)${:-vs{,2010,2015,2017}}})" +local __meson_build_types="(plain debug debugoptimized minsize release)" +local __meson_wrap_modes="(WrapMode.{default,nofallback,nodownload})" + +local -a meson_commands=( +'setup:set up a build directory' +'configure:configure a project' +'test:run tests' +'introspect:query project properties' +'wrap:manage source dependencies' +) + +(( $+functions[__meson_is_build_dir] )) || __meson_is_build_dir() { + local mpd="${1:-$PWD}/meson-private" + [[ -f "$mpd/build.dat" && -f "$mpd/coredata.dat" ]] + return $? +} + +# TODO: implement build option completion +(( $+functions[__meson_build_options] )) || __meson_build_options() {} +# TODO: implement target name completion +(( $+functions[__meson_targets] )) || __meson_targets() {} +# `meson introspect` currently can provide that information in JSON. +# We can: +# 1) pipe its output to python3 -m json.tool | grep "$alovelyregex" | cut <...> +# 2) teach mintro.py to use a different output format +# (or perhaps just to select the fields printed) + +(( $+functions[__meson_test_names] )) || __meson_test_names() { + local rtests + if rtests="$(_call_program meson meson test ${opt_args[-C]:+-C "$opt_args[-C]"} --list)"; + then + local -a tests=(${(@f)rtests}) + _describe -t "tests" "Meson tests" tests + else + _message -r "current working directory is not a build directory" + _message -r 'use -C $build_dir or cd $build_dir' + fi +} + +(( $+functions[_meson_commands] )) || _meson_commands() { + _describe -t commands "Meson subcommands" meson_commands +} + +(( $+functions[_meson-setup] )) || _meson-setup() { + local firstd secondd + if [[ -f "meson.build" ]]; then + # if there's no second argument on the command line + # cwd will implicitly be substituted: + # - as the source directory if it has a file with the name "meson.build"; + # - as the build directory otherwise + # more info in mesonbuild/mesonmain.py + firstd="build" + secondd="source" + else + firstd="source" + secondd="build" + fi + + _arguments \ + '*-D-[set the value of a build option]:build option:__meson_build_options' \ + '--prefix=[installation prefix]: :_directories' \ + '--libdir=[library directory]: :_directories' \ + '--libexecdir=[library executable directory]: :_directories' \ + '--bindir=[executable directory]: :_directories' \ + '--sbindir=[system executable directory]: :_directories' \ + '--includedir=[header file directory]: :_directories' \ + '--datadir=[data file directory]: :_directories' \ + '--mandir=[manual page directory]: :_directories' \ + '--infodir=[info page directory]: :_directories' \ + '--localedir=[locale data directory]: :_directories' \ + '--sysconfdir=[system configuration directory]: :_directories' \ + '--localstatedir=[local state data directory]: :_directories' \ + '--sharedstatedir=[arch-independent data directory]: :_directories' \ + '--backend=[backend to use]:Meson backend:'"$__meson_backends" \ + '--buildtype=[build type to use]:Meson build type:'"$__meson_build_types" \ + '--strip[strip targets on install]' \ + '--unity=[unity builds on/off]:whether to do unity builds:(on off subprojects)' \ + '--werror[treat warnings as errors]' \ + '--layout=[build directory layout]:build directory layout:(flat mirror)' \ + '--default-library=[default library type]:default library type:(shared static)' \ + '--warnlevel=[compiler warning level]:compiler warning level:warning level:(1 2 3)' \ + '--stdsplit=[split stdout and stderr in test logs]' \ + '--errorlogs=[prints the logs from failing tests]' \ + '--cross-file=[cross-compilation environment description]:cross file:_files' \ + '--wrap-mode=[special wrap mode]:wrap mode:'"$__meson_wrap_modes" \ + ":$firstd directory:_directories" \ + "::$secondd directory:_directories" \ + # +} + +(( $+functions[_meson-configure] )) || _meson-configure() { + local curcontext="$curcontext" + # TODO: implement 'mesonconf @file' + local -a specs=( + '--clearcache[clear cached state]' + '*-D-[set the value of a build option]:build option:__meson_build_options' + '::build directory:_directories' + ) + + _arguments \ + '(: -)'{'--help','-h'}'[show a help message and quit]' \ + "${(@)specs}" +} + +(( $+functions[_meson-test] )) || _meson-test() { + local curcontext="$curcontext" + + # TODO: complete test suites + local -a specs=( + '(--quiet -q)'{'--quiet','-q'}'[produce less output to the terminal]' + '(--verbose -v)'{'--verbose','-v'}'[do not redirect stdout and stderr]' + '(--timeout-multiplier -t)'{'--timeout-multiplier','-t'}'[a multiplier for test timeouts]:Python floating-point number: ' + '-C[directory to cd into]: :_directories' + '--repeat[number of times to run the tests]:number of times to repeat: ' + '--no-rebuild[do not rebuild before running tests]' + '--gdb[run tests under gdb]' + '--list[list available tests]' + '(--wrapper --wrap)'{'--wrapper=','--wrap='}'[wrapper to run tests with]:wrapper program:_path_commands' + '(--no-suite)--suite[only run tests from this suite]:test suite: ' + '(--suite)--no-suite[do not run tests from this suite]:test suite: ' + '--no-stdsplit[do not split stderr and stdout in logs]' + '--print-errorlogs[print logs for failing tests]' + '--benchmark[run benchmarks instead of tests]' + '--logbase[base name for log file]:filename: ' + '--num-processes[how many threads to use]:number of processes: ' + '--setup[which test setup to use]:test setup: ' + '--test-args[arguments to pass to the tests]: : ' + '*:Meson tests:__meson_test_names' + ) + + _arguments \ + '(: -)'{'--help','-h'}'[show a help message and quit]' \ + "${(@)specs}" +} + +(( $+functions[_meson-introspect] )) || _meson-introspect() { + local curcontext="$curcontext" + local -a specs=( + '--targets[list top level targets]' + '--installed[list all installed files and directories]' + '--target-files[list source files for a given target]:target:__meson_targets' + '--buildsystem-files[list files that belong to the build system]' + '--buildoptions[list all build options]' + '--tests[list all unit tests]' + '--benchmarks[list all benchmarks]' + '--dependencies[list external dependencies]' + '--projectinfo[show project information]' + '::build directory:_directories' + ) +_arguments \ + '(: -)'{'--help','-h'}'[show a help message and quit]' \ + "${(@)specs}" +} + +(( $+functions[_meson-wrap] )) || _meson-wrap() { + # TODO +} + +if [[ $service != meson ]]; then + _call_function ret _$service + return ret +fi + +_arguments -C -R \ + '(: -)'{'--help','-h'}'[show a help message and quit]' \ + '(: -)'{'--version','-v'}'[show version information and quit]' \ + '(-): :_meson_commands' \ + '*:: :->post-command' \ +# +ret=$? + +[[ $ret = 300 ]] && case "$state" in + post-command) + service="meson-$words[1]" + curcontext=${curcontext%:*:*}:$service: + _call_function ret _$service + ;; +esac + +return ret + diff --git a/data/syntax-highlighting/emacs/meson.el b/data/syntax-highlighting/emacs/meson.el new file mode 100644 index 0000000..36f7eb9 --- /dev/null +++ b/data/syntax-highlighting/emacs/meson.el @@ -0,0 +1,43 @@ +;; command to comment/uncomment text +(defun meson-comment-dwim (arg) + "Comment or uncomment current line or region in a smart way. +For detail, see `comment-dwim'." + (interactive "*P") + (require 'newcomment) + (let ( + (comment-start "#") (comment-end "") + ) + (comment-dwim arg))) + +;;(setq mymeson-keywords-regex (regex-opt '("if", "endif", "foreach", "endforeach"))) + +;; keywords for syntax coloring +(setq meson-keywords + `( + ( ,(regexp-opt '("if" "endif" "for" "foreach") 'word) . font-lock-keyword-face) + ) + ) + +;; syntax table +(defvar meson-syntax-table nil "Syntax table for `meson-mode'.") +(setq meson-syntax-table + (let ((synTable (make-syntax-table))) + + ;; bash style comment: “# …” + (modify-syntax-entry ?# "< b" synTable) + (modify-syntax-entry ?\n "> b" synTable) + + synTable)) + +;; define the major mode. +(define-derived-mode meson-mode fundamental-mode + "meson-mode is a major mode for editing Meson build definition files." + :syntax-table meson-syntax-table + + (setq font-lock-defaults '(meson-keywords)) + (setq mode-name "meson") + + ;; modify the keymap + (define-key meson-mode-map [remap comment-dwim] 'meson-comment-dwim) +) + diff --git a/data/syntax-highlighting/vim/README b/data/syntax-highlighting/vim/README new file mode 100644 index 0000000..1afa243 --- /dev/null +++ b/data/syntax-highlighting/vim/README @@ -0,0 +1,3 @@ +ftdetect sets the filetype +syntax does Meson syntax highlighting +plugin does Meson indentation diff --git a/data/syntax-highlighting/vim/ftdetect/meson.vim b/data/syntax-highlighting/vim/ftdetect/meson.vim new file mode 100644 index 0000000..84db70c --- /dev/null +++ b/data/syntax-highlighting/vim/ftdetect/meson.vim @@ -0,0 +1,2 @@ +au BufNewFile,BufRead meson.build set filetype=meson +au BufNewFile,BufRead meson_options.txt set filetype=meson diff --git a/data/syntax-highlighting/vim/indent/meson.vim b/data/syntax-highlighting/vim/indent/meson.vim new file mode 100644 index 0000000..8553ec0 --- /dev/null +++ b/data/syntax-highlighting/vim/indent/meson.vim @@ -0,0 +1,183 @@ +" Vim indent file +" Language: Meson +" Maintainer: Nirbheek Chauhan +" Original Authors: David Bustos +" Bram Moolenaar +" Last Change: 2015 Feb 23 + +" Only load this indent file when no other was loaded. +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +" Some preliminary settings +setlocal nolisp " Make sure lisp indenting doesn't supersede us +setlocal autoindent " indentexpr isn't much help otherwise + +setlocal indentexpr=GetMesonIndent(v:lnum) +setlocal indentkeys+==elif,=else,=endforeach,=endif,0) + +" Only define the function once. +if exists("*GetMesonIndent") + finish +endif +let s:keepcpo= &cpo +setlocal cpo&vim + +" Come here when loading the script the first time. + +let s:maxoff = 50 " maximum number of lines to look backwards for () + +" Force sw=2 sts=2 because that's required by convention +setlocal shiftwidth=2 +setlocal softtabstop=2 + +function GetMesonIndent(lnum) + echom getline(line(".")) + + " If this line is explicitly joined: If the previous line was also joined, + " line it up with that one, otherwise add two 'shiftwidth' + if getline(a:lnum - 1) =~ '\\$' + if a:lnum > 1 && getline(a:lnum - 2) =~ '\\$' + return indent(a:lnum - 1) + endif + return indent(a:lnum - 1) + (exists("g:mesonindent_continue") ? eval(g:mesonindent_continue) : (shiftwidth() * 2)) + endif + + " If the start of the line is in a string don't change the indent. + if has('syntax_items') + \ && synIDattr(synID(a:lnum, 1, 1), "name") =~ "String$" + return -1 + endif + + " Search backwards for the previous non-empty line. + let plnum = prevnonblank(v:lnum - 1) + + if plnum == 0 + " This is the first non-empty line, use zero indent. + return 0 + endif + + " If the previous line is inside parenthesis, use the indent of the starting + " line. + " Trick: use the non-existing "dummy" variable to break out of the loop when + " going too far back. + call cursor(plnum, 1) + let parlnum = searchpair('(\|{\|\[', '', ')\|}\|\]', 'nbW', + \ "line('.') < " . (plnum - s:maxoff) . " ? dummy :" + \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')" + \ . " =~ '\\(Comment\\|Todo\\|String\\)$'") + if parlnum > 0 + let plindent = indent(parlnum) + let plnumstart = parlnum + else + let plindent = indent(plnum) + let plnumstart = plnum + endif + + + " When inside parenthesis: If at the first line below the parenthesis add + " a 'shiftwidth', otherwise same as previous line. + " i = (a + " + b + " + c) + call cursor(a:lnum, 1) + let p = searchpair('(\|{\|\[', '', ')\|}\|\]', 'bW', + \ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :" + \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')" + \ . " =~ '\\(Comment\\|Todo\\|String\\)$'") + if p > 0 + if p == plnum + " When the start is inside parenthesis, only indent one 'shiftwidth'. + let pp = searchpair('(\|{\|\[', '', ')\|}\|\]', 'bW', + \ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :" + \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')" + \ . " =~ '\\(Comment\\|Todo\\|String\\)$'") + if pp > 0 + return indent(plnum) + (exists("g:pyindent_nested_paren") ? eval(g:pyindent_nested_paren) : shiftwidth()) + endif + return indent(plnum) + (exists("g:pyindent_open_paren") ? eval(g:pyindent_open_paren) : shiftwidth()) + endif + if plnumstart == p + return indent(plnum) + endif + return plindent + endif + + + " Get the line and remove a trailing comment. + " Use syntax highlighting attributes when possible. + let pline = getline(plnum) + let pline_len = strlen(pline) + if has('syntax_items') + " If the last character in the line is a comment, do a binary search for + " the start of the comment. synID() is slow, a linear search would take + " too long on a long line. + if synIDattr(synID(plnum, pline_len, 1), "name") =~ "\\(Comment\\|Todo\\)$" + let min = 1 + let max = pline_len + while min < max + let col = (min + max) / 2 + if synIDattr(synID(plnum, col, 1), "name") =~ "\\(Comment\\|Todo\\)$" + let max = col + else + let min = col + 1 + endif + endwhile + let pline = strpart(pline, 0, min - 1) + endif + else + let col = 0 + while col < pline_len + if pline[col] == '#' + let pline = strpart(pline, 0, col) + break + endif + let col = col + 1 + endwhile + endif + + " If the previous line ended the conditional/loop + if getline(plnum) =~ '^\s*\(endif\|endforeach\)\>\s*' + " Maintain indent + return -1 + endif + + " If the previous line ended with a builtin, indent this line + if pline =~ '^\s*\(foreach\|if\|else\|elif\)\>\s*' + return plindent + shiftwidth() + endif + + " If the current line begins with a header keyword, deindent + if getline(a:lnum) =~ '^\s*\(else\|elif\|endif\|endforeach\)' + + " Unless the previous line was a one-liner + if getline(plnumstart) =~ '^\s*\(foreach\|if\)\>\s*' + return plindent + endif + + " Or the user has already dedented + if indent(a:lnum) <= plindent - shiftwidth() + return -1 + endif + + return plindent - shiftwidth() + endif + + " When after a () construct we probably want to go back to the start line. + " a = (b + " + c) + " here + if parlnum > 0 + return plindent + endif + + return -1 + +endfunction + +let &cpo = s:keepcpo +unlet s:keepcpo + +" vim:sw=2 diff --git a/data/syntax-highlighting/vim/syntax/meson.vim b/data/syntax-highlighting/vim/syntax/meson.vim new file mode 100644 index 0000000..49921c1 --- /dev/null +++ b/data/syntax-highlighting/vim/syntax/meson.vim @@ -0,0 +1,156 @@ +" Vim syntax file +" Language: Meson +" Maintainer: Nirbheek Chauhan +" Last Change: 2016 Dec 7 +" Credits: Zvezdan Petkovic +" Neil Schemenauer +" 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 +" + +" For version 5.x: Clear all syntax items. +" For version 6.x: Quit when a syntax file was already loaded. +if version < 600 + syntax clear +elseif 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 +setlocal cpo&vim + +" https://github.com/mesonbuild/meson/wiki/Syntax +syn keyword mesonConditional elif else if endif +syn keyword mesonRepeat foreach endforeach +syn keyword mesonOperator and not or + +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 +" https://github.com/mesonbuild/meson/wiki/Syntax#numbers +syn match mesonNumber "\<\d\+\>" + +" booleans +syn keyword mesonConstant 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 + \ benchmark + \ build_machine + \ build_target + \ configuration_data + \ configure_file + \ custom_target + \ declare_dependency + \ dependency + \ 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_variable + \ jar + \ join_paths + \ library + \ meson + \ message + \ project + \ run_command + \ run_target + \ set_variable + \ shared_library + \ shared_module + \ static_library + \ subdir + \ subproject + \ target_machine + \ test + \ vcs_tag + +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 + +if version >= 508 || !exists("did_meson_syn_inits") + if version <= 508 + let did_meson_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + " The default highlight links. Can be overridden later. + HiLink mesonStatement Statement + HiLink mesonConditional Conditional + HiLink mesonRepeat Repeat + HiLink mesonOperator Operator + HiLink mesonComment Comment + HiLink mesonTodo Todo + HiLink mesonString String + HiLink mesonEscape Special + HiLink mesonNumber Number + HiLink mesonBuiltin Function + HiLink mesonConstant Number + if exists("meson_space_error_highlight") + HiLink mesonSpaceError Error + endif + + delcommand HiLink +endif + +let b:current_syntax = "meson" + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim:set sw=2 sts=2 ts=8 noet: diff --git a/syntax-highlighting/vim/README b/syntax-highlighting/vim/README deleted file mode 100644 index 1afa243..0000000 --- a/syntax-highlighting/vim/README +++ /dev/null @@ -1,3 +0,0 @@ -ftdetect sets the filetype -syntax does Meson syntax highlighting -plugin does Meson indentation diff --git a/syntax-highlighting/vim/ftdetect/meson.vim b/syntax-highlighting/vim/ftdetect/meson.vim deleted file mode 100644 index 84db70c..0000000 --- a/syntax-highlighting/vim/ftdetect/meson.vim +++ /dev/null @@ -1,2 +0,0 @@ -au BufNewFile,BufRead meson.build set filetype=meson -au BufNewFile,BufRead meson_options.txt set filetype=meson diff --git a/syntax-highlighting/vim/indent/meson.vim b/syntax-highlighting/vim/indent/meson.vim deleted file mode 100644 index 8553ec0..0000000 --- a/syntax-highlighting/vim/indent/meson.vim +++ /dev/null @@ -1,183 +0,0 @@ -" Vim indent file -" Language: Meson -" Maintainer: Nirbheek Chauhan -" Original Authors: David Bustos -" Bram Moolenaar -" Last Change: 2015 Feb 23 - -" Only load this indent file when no other was loaded. -if exists("b:did_indent") - finish -endif -let b:did_indent = 1 - -" Some preliminary settings -setlocal nolisp " Make sure lisp indenting doesn't supersede us -setlocal autoindent " indentexpr isn't much help otherwise - -setlocal indentexpr=GetMesonIndent(v:lnum) -setlocal indentkeys+==elif,=else,=endforeach,=endif,0) - -" Only define the function once. -if exists("*GetMesonIndent") - finish -endif -let s:keepcpo= &cpo -setlocal cpo&vim - -" Come here when loading the script the first time. - -let s:maxoff = 50 " maximum number of lines to look backwards for () - -" Force sw=2 sts=2 because that's required by convention -setlocal shiftwidth=2 -setlocal softtabstop=2 - -function GetMesonIndent(lnum) - echom getline(line(".")) - - " If this line is explicitly joined: If the previous line was also joined, - " line it up with that one, otherwise add two 'shiftwidth' - if getline(a:lnum - 1) =~ '\\$' - if a:lnum > 1 && getline(a:lnum - 2) =~ '\\$' - return indent(a:lnum - 1) - endif - return indent(a:lnum - 1) + (exists("g:mesonindent_continue") ? eval(g:mesonindent_continue) : (shiftwidth() * 2)) - endif - - " If the start of the line is in a string don't change the indent. - if has('syntax_items') - \ && synIDattr(synID(a:lnum, 1, 1), "name") =~ "String$" - return -1 - endif - - " Search backwards for the previous non-empty line. - let plnum = prevnonblank(v:lnum - 1) - - if plnum == 0 - " This is the first non-empty line, use zero indent. - return 0 - endif - - " If the previous line is inside parenthesis, use the indent of the starting - " line. - " Trick: use the non-existing "dummy" variable to break out of the loop when - " going too far back. - call cursor(plnum, 1) - let parlnum = searchpair('(\|{\|\[', '', ')\|}\|\]', 'nbW', - \ "line('.') < " . (plnum - s:maxoff) . " ? dummy :" - \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')" - \ . " =~ '\\(Comment\\|Todo\\|String\\)$'") - if parlnum > 0 - let plindent = indent(parlnum) - let plnumstart = parlnum - else - let plindent = indent(plnum) - let plnumstart = plnum - endif - - - " When inside parenthesis: If at the first line below the parenthesis add - " a 'shiftwidth', otherwise same as previous line. - " i = (a - " + b - " + c) - call cursor(a:lnum, 1) - let p = searchpair('(\|{\|\[', '', ')\|}\|\]', 'bW', - \ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :" - \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')" - \ . " =~ '\\(Comment\\|Todo\\|String\\)$'") - if p > 0 - if p == plnum - " When the start is inside parenthesis, only indent one 'shiftwidth'. - let pp = searchpair('(\|{\|\[', '', ')\|}\|\]', 'bW', - \ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :" - \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')" - \ . " =~ '\\(Comment\\|Todo\\|String\\)$'") - if pp > 0 - return indent(plnum) + (exists("g:pyindent_nested_paren") ? eval(g:pyindent_nested_paren) : shiftwidth()) - endif - return indent(plnum) + (exists("g:pyindent_open_paren") ? eval(g:pyindent_open_paren) : shiftwidth()) - endif - if plnumstart == p - return indent(plnum) - endif - return plindent - endif - - - " Get the line and remove a trailing comment. - " Use syntax highlighting attributes when possible. - let pline = getline(plnum) - let pline_len = strlen(pline) - if has('syntax_items') - " If the last character in the line is a comment, do a binary search for - " the start of the comment. synID() is slow, a linear search would take - " too long on a long line. - if synIDattr(synID(plnum, pline_len, 1), "name") =~ "\\(Comment\\|Todo\\)$" - let min = 1 - let max = pline_len - while min < max - let col = (min + max) / 2 - if synIDattr(synID(plnum, col, 1), "name") =~ "\\(Comment\\|Todo\\)$" - let max = col - else - let min = col + 1 - endif - endwhile - let pline = strpart(pline, 0, min - 1) - endif - else - let col = 0 - while col < pline_len - if pline[col] == '#' - let pline = strpart(pline, 0, col) - break - endif - let col = col + 1 - endwhile - endif - - " If the previous line ended the conditional/loop - if getline(plnum) =~ '^\s*\(endif\|endforeach\)\>\s*' - " Maintain indent - return -1 - endif - - " If the previous line ended with a builtin, indent this line - if pline =~ '^\s*\(foreach\|if\|else\|elif\)\>\s*' - return plindent + shiftwidth() - endif - - " If the current line begins with a header keyword, deindent - if getline(a:lnum) =~ '^\s*\(else\|elif\|endif\|endforeach\)' - - " Unless the previous line was a one-liner - if getline(plnumstart) =~ '^\s*\(foreach\|if\)\>\s*' - return plindent - endif - - " Or the user has already dedented - if indent(a:lnum) <= plindent - shiftwidth() - return -1 - endif - - return plindent - shiftwidth() - endif - - " When after a () construct we probably want to go back to the start line. - " a = (b - " + c) - " here - if parlnum > 0 - return plindent - endif - - return -1 - -endfunction - -let &cpo = s:keepcpo -unlet s:keepcpo - -" vim:sw=2 diff --git a/syntax-highlighting/vim/syntax/meson.vim b/syntax-highlighting/vim/syntax/meson.vim deleted file mode 100644 index 49921c1..0000000 --- a/syntax-highlighting/vim/syntax/meson.vim +++ /dev/null @@ -1,156 +0,0 @@ -" Vim syntax file -" Language: Meson -" Maintainer: Nirbheek Chauhan -" Last Change: 2016 Dec 7 -" Credits: Zvezdan Petkovic -" Neil Schemenauer -" 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 -" - -" For version 5.x: Clear all syntax items. -" For version 6.x: Quit when a syntax file was already loaded. -if version < 600 - syntax clear -elseif 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 -setlocal cpo&vim - -" https://github.com/mesonbuild/meson/wiki/Syntax -syn keyword mesonConditional elif else if endif -syn keyword mesonRepeat foreach endforeach -syn keyword mesonOperator and not or - -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 -" https://github.com/mesonbuild/meson/wiki/Syntax#numbers -syn match mesonNumber "\<\d\+\>" - -" booleans -syn keyword mesonConstant 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 - \ benchmark - \ build_machine - \ build_target - \ configuration_data - \ configure_file - \ custom_target - \ declare_dependency - \ dependency - \ 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_variable - \ jar - \ join_paths - \ library - \ meson - \ message - \ project - \ run_command - \ run_target - \ set_variable - \ shared_library - \ shared_module - \ static_library - \ subdir - \ subproject - \ target_machine - \ test - \ vcs_tag - -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 - -if version >= 508 || !exists("did_meson_syn_inits") - if version <= 508 - let did_meson_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - " The default highlight links. Can be overridden later. - HiLink mesonStatement Statement - HiLink mesonConditional Conditional - HiLink mesonRepeat Repeat - HiLink mesonOperator Operator - HiLink mesonComment Comment - HiLink mesonTodo Todo - HiLink mesonString String - HiLink mesonEscape Special - HiLink mesonNumber Number - HiLink mesonBuiltin Function - HiLink mesonConstant Number - if exists("meson_space_error_highlight") - HiLink mesonSpaceError Error - endif - - delcommand HiLink -endif - -let b:current_syntax = "meson" - -let &cpo = s:cpo_save -unlet s:cpo_save - -" vim:set sw=2 sts=2 ts=8 noet: -- cgit v1.1 From 8e04ab7cf2d16830e62e3afbfe9e7f20a5b27d46 Mon Sep 17 00:00:00 2001 From: Arseny Maslennikov Date: Sat, 11 Nov 2017 20:05:11 +0300 Subject: _meson: Explicitly specify license to match the Z Shell The zsh completion script is explicitly licensed to eliminate any legal obstacles for its co-distribution with Z Shell itself. --- data/shell-completions/zsh/_meson | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/data/shell-completions/zsh/_meson b/data/shell-completions/zsh/_meson index dad1252..877d700 100644 --- a/data/shell-completions/zsh/_meson +++ b/data/shell-completions/zsh/_meson @@ -2,6 +2,30 @@ # vim:ts=2 sw=2 +# Copyright (c) 2017 Arseny Maslennikov +# All rights reserved. Individual authors, whether or not +# specifically named, retain copyright in all changes; in what follows, they +# are referred to as `the Meson development team'. This is for convenience +# only and this body has no legal status. This file is distributed under +# the following licence. +# +# Permission is hereby granted, without written agreement and without +# licence or royalty fees, to use, copy, modify, and distribute this +# software and to distribute modified versions of this software for any +# purpose, provided that the above copyright notice and the following +# two paragraphs appear in all copies of this software. +# +# In no event shall the Meson development team be liable to any party for +# direct, indirect, special, incidental, or consequential damages arising out +# of the use of this software and its documentation, even if the Meson +# development team have been advised of the possibility of such damage. +# +# The Meson development team specifically disclaim any warranties, including, +# but not limited to, the implied warranties of merchantability and fitness +# for a particular purpose. The software provided hereunder is on an "as is" +# basis, and the Meson development team have no obligation to provide +# maintenance, support, updates, enhancements, or modifications. + local curcontext="$curcontext" state line local -i ret -- cgit v1.1