diff --git a/dot_config/private_fish/completions/fish-lsp.fish b/dot_config/private_fish/completions/fish-lsp.fish new file mode 100644 index 0000000000000000000000000000000000000000..c731f119f9b8c18be067c6e25b84301934ee7972 --- /dev/null +++ b/dot_config/private_fish/completions/fish-lsp.fish @@ -0,0 +1,497 @@ +# AUTO GENERATED BY 'fish-lsp' COMMAND +# +# * Any command should generate the completions file +# +# >_ fish-lsp complete > ~/.config/fish/completions/fish-lsp.fish +# >_ fish-lsp complete > $fish_complete_path[1]/fish-lsp.fish +# +# * If you are building from source, the completions file is generated by the commands +# +# >_ yarn install && yarn dev # builds and links the `fish-lsp` command globally (with completions) +# >_ yarn sh:build-completions # directly builds the completions file +# +# * To find all files that are used for sourcing fish-lsp's completions, you can use: +# +# >_ path sort --unique --key=basename $fish_complete_path/*.fish | string match -re '/fish-lsp.fish' +# +# * To interactively test the completions, you can use: +# +# >_ complete -c fish-lsp -e && complete -e fish-lsp # erase all fish-lsp completions +# >_ fish-lsp complete | source # use the completions for the current session +# +# * For more info, try editing the generated output inside: +# +# To see the completions in your current shell interactive prompt: +# >_ commandline -r (fish-lsp complete | string collect) # pressing `alt+e` will edit the commandline in $EDITOR +# +# Or write them to a /tmp/ file, and edit them directly in your $EDITOR, and source them: +# >_ fish-lsp complete > /tmp/fish-lsp.fish && $EDITOR /tmp/fish-lsp.fish && source /tmp/fish-lsp.fish +# +# If you are working on the development of the `fish-lsp`, you can edit the file that generates the completions: +# >_ $EDITOR ~/path/to/fish-lsp/src/utils/get-lsp-completions.ts +# >_ open https://github.com/ndonfris/fish-lsp/blob/master/src/utils/get-lsp-completions.ts # view it in browser +# +# NOTE: bundled server installations will not allow you to view the source code as easily +# +# * You can see if the completions are up to date by running the command: +# +# >_ fish-lsp info --check-health +# +# +# MORE INFO INCLUDED IN FOOTER +# PLEASE CONSIDER CONTRIBUTING! +# REPO URL: https://github.com/ndonfris/fish-lsp.git + + +############################################# +# helper functions for fish-lsp completions # +############################################# + +# print all unique `fish-lsp start --enable|--disable ...` features (i.e., complete, hover, etc.) +# if a feature is already specified in the command line, it will be skipped +# the features can also be used in the global environment variables `fish_lsp_enabled_handlers` or `fish_lsp_disabled_handlers` +function __fish_lsp_get_features -d 'print all features controlled by the server, not yet used in the commandline' + set -l all_features 'complete' 'hover' 'rename' 'definition' 'implementation' 'reference' 'formatting' 'formatRange' 'typeFormatting' 'codeAction' 'codeLens' 'folding' 'signature' 'executeCommand' 'inlayHint' 'highlight' 'diagnostic' 'popups' 'semanticTokens' + set -l features_to_complete + set -l features_to_skip + set -l opts (commandline -opc) + for opt in $opts + if contains -- $opt $all_features + set features_to_skip $features_to_skip $opt + end + end + for feature in $all_features + if not contains -- $feature $features_to_skip + printf '%b\t%s\n' $feature "$feature handler" + end + end +end + +# check if `fish_lsp info` is used without arguments that prevent more switches +# to be completed. `$argv` can be multiple switches that are truthy for `not __fish_contains_opt $arg`. +# EXAMPLES: +# > `__fish_info_complete_opt` # no arguments so it will only check base cases +# > `fish-lsp info -` ---> $status -eq 0 +# > `fish-lsp info --extra` ---> $status -eq 1 +# +# > `__fish_info_complete_opt bin` # check if argument `--bin` is used +# > `fish-lsp info --bin` ---> $status -eq 1 +# > `fish-lsp info --time-startup` ---> $status -eq 1 (base case) +function __fish_lsp_info_complete_opt --description 'check if the commandline contains any of the info switches' + + __fish_seen_subcommand_from info || return 1 + + begin + __fish_contains_opt extra + or __fish_contains_opt verbose + or __fish_contains_opt time-startup + or __fish_contains_opt check-health + or __fish_contains_opt source-maps + or __fish_contains_opt dump-parse-tree + end && return 1 + + for opt in $argv + not __fish_contains_opt "$opt" + or return 1 + end + + return 0 +end + + +# print all unique 'fish-lsp env --only ...` env_variables (i.e., $fish_lsp_*, ...) +# if a env_variable is already specified in the command line, it will not be included again +function __fish_lsp_get_env_variables -d 'print all fish_lsp_* env variables, not yet used in the commandline' + # every env variable name + set -l env_names "fish_lsp_enabled_handlers" \ + "fish_lsp_disabled_handlers" \ + "fish_lsp_commit_characters" \ + "fish_lsp_log_file" \ + "fish_lsp_log_level" \ + "fish_lsp_all_indexed_paths" \ + "fish_lsp_modifiable_paths" \ + "fish_lsp_diagnostic_disable_error_codes" \ + "fish_lsp_enable_experimental_diagnostics" \ + "fish_lsp_strict_conditional_command_warnings" \ + "fish_lsp_prefer_builtin_fish_commands" \ + "fish_lsp_allow_fish_wrapper_functions" \ + "fish_lsp_require_autoloaded_functions_to_have_description" \ + "fish_lsp_max_background_files" \ + "fish_lsp_show_client_popups" \ + "fish_lsp_single_workspace_support" \ + "fish_lsp_ignore_paths" \ + "fish_lsp_max_workspace_depth" \ + "fish_lsp_fish_path" + + # every completion argument `name\t'description'`, only unused env variables will be printed + set -l env_names_with_descriptions "fish_lsp_enabled_handlers\t'server handlers to enable'" \ + "fish_lsp_disabled_handlers\t'server handlers to disable'" \ + "fish_lsp_commit_characters\t'commit characters that select completion items'" \ + "fish_lsp_log_file\t'path to the fish-lsp's log file'" \ + "fish_lsp_log_level\t'minimum log level to include in the log file'" \ + "fish_lsp_all_indexed_paths\t'directories that the server should always index on startup'" \ + "fish_lsp_modifiable_paths\t'indexed paths that can be modified'" \ + "fish_lsp_diagnostic_disable_error_codes\t'diagnostic codes to disable'" \ + "fish_lsp_enable_experimental_diagnostics\t'enable fish-lsp's experimental diagnostics'" \ + "fish_lsp_strict_conditional_command_warnings\t'diagnostic `3002` show warnings for syntax like `command ls || echo 'no ls'`'" \ + "fish_lsp_prefer_builtin_fish_commands\t'prefer built-in fish commands over external shell commands'" \ + "fish_lsp_allow_fish_wrapper_functions\t'prefer the user to use primitive fish commands instead of wrapper utilities common in other shells'" \ + "fish_lsp_require_autoloaded_functions_to_have_description\t'enable showing diagnostic `4008`'" \ + "fish_lsp_max_background_files\t'maximum number of files to analyze in the background on startup'" \ + "fish_lsp_show_client_popups\t'send `connection/window/*` requests in the server'" \ + "fish_lsp_single_workspace_support\t'limit workspace searching to only the current workspace'" \ + "fish_lsp_ignore_paths\t'paths to ignore when indexing'" \ + "fish_lsp_max_workspace_depth\t'maximum directory depth to search for fish files on startup'" \ + "fish_lsp_fish_path\t'specific binary to use for executing 'fish' commands inside server'" + + # get the current command line token (for comma separated options) + set -l current (commandline -ct) + + # utility function to check if the current token contains a comma + function has_comma --inherit-variable current --description 'check if the current token contains a comma' + string match -rq '.*,.*' -- $current || string match -rq -- '--only=.*' $current + return $status + end + + # get the current command line options, adding the current token if it contains a comma + set -l opts (commandline -opc) + has_comma && set -a opts $current + + # create two arrays, one for the env variables already used, and the other + # for all the arguments passed into the commandline + set -l features_to_skip + set -l fixed_opts + + # split any comma separated options + for opt in $opts + if string match -rq -- '--only=.*' $opt + set -a fixed_opts '--only' (string split -m1 -f2 -- '--only=' $opt | string split ',') + else if string match -q '*,*' -- $opt + set fixed_opts $fixed_opts (string split ',' -- $opt) + else + set fixed_opts $fixed_opts $opt + end + end + + # skip any env variable that is already specified in the command line + for opt in $fixed_opts + if contains -- $opt $env_names + set -a features_to_skip $opt + end + end + + # if using the `--only=` syntax, remove the `--only` part. + # when entries are separated by commas, we need to keep the current token's prefix comma + # in the completion output + set prefix '' + if has_comma + set prefix (string replace -r '[^,]*$' '' -- $current | string replace -r -- '^--only=' '') + end + + # print the completions that haven't been used yet + for line in $env_names_with_descriptions + set name (string split -f1 -m1 '\t' -- $line) + if not contains -- $name $features_to_skip + echo -e "$prefix$line" + end + end +end + +# check for usage of the main switches in env command `fish-lsp env --show|--create|--show-default|--names` +# +# requires passing in one of switches: `--none` or `--any` +# - `--none` check that none of the main switches are used +# - `--any` check that a main switch has been seen +# - `--no-names` check that the `--names` switch is not used, but needs to be +# paired with `--none` or `--any` +# +# used in the `env` completions, for grouping repeated logic on those +# completions conditional checks. +# +# ``` +# complete -n '__fish_lsp_env_main_switch --none' +# ``` +function __fish_lsp_env_main_switch --description 'check if the commandline contains any of the main env switches (--show|--create|--show-default|--names)' + argparse any none no-names no-output-types no-json names-joined -- $argv + or return 1 + + # none means we don't want to see any of the main switches + # no-names doesn't change anything here, since we are making sure that + # names already doesn't exist in the command line + if set -ql _flag_none + not __fish_contains_opt names + and not __fish_contains_opt -s s show + and not __fish_contains_opt -s c create + and not __fish_contains_opt show-default + return $status + end + + # any means that one of the main switches has been used. + if set -ql _flag_any + if set -ql _flag_no_names + __fish_contains_opt names + and return 1 + end + if set -ql _flag_no_output_types + __fish_contains_opt json + or __fish_contains_opt confd + and return 1 + end + if set -ql _flag_no_json + __fish_contains_opt json + and return 1 + end + not set -ql _flag_no_names && __fish_contains_opt names + or __fish_contains_opt -s s show + or __fish_contains_opt -s c create + or __fish_contains_opt show-default + return $status + end + + # names joined means that both the --names and --joined switches are used + if set -ql _flag_names_joined + __fish_contains_opt names + and not __fish_contains_opt -s j joined + and return $status + end + # if no switches are found, return 1 + return 1 +end + + + +# make sure `fish-lsp start --stdio|--node-ipc|--socket` is used singularly +# and not in combination with any other connection related option +function __fish_lsp_start_connection_opts -d 'check if any option (--stdio|--node-ipc|--socket) is used' + __fish_contains_opt stdio || __fish_contains_opt node-ipc || __fish_contains_opt socket +end + +# check if the last `fish-lsp start ...` flag/switch is `--enable` or `--disable` +# this will find the last `-*` argument in the command line, skipping any argument not starting with `-` +# and make sure it matches any of the provided `$argv` passed in to the function (defaulting to: `--enable` `--disable`) +# we use this to allow multiple sequential features to follow `fish-lsp start --enable|--disable ...` +# USAGE: +# > `fish-lsp --stdio --start complete hover --disable codeAction highlight formatting ` +# `__fish_lsp_last_switch --enable --disable ` would return 0 since `--disable` is the last switch +function __fish_lsp_last_switch -d 'check if the last argument w/ a leading `-` matches any $argv' + set -l opts (commandline -opc) + set -l last_opt + for opt in $opts + switch $opt + case '-*' + set last_opt $opt + case '*' + continue + end + end + set -l match_opts $argv + if test (count $argv) -eq 0 + set match_opts '--enable' '--disable' + end + for switch in $match_opts + if test "$last_opt" = "$switch" + return 0 + end + end + return 1 +end + +# Utility function to check if non or switches have been seen in the commandline +# EXAMPLES: +# > `__fish_lsp_not_contains_opt stdio enable disable` +# > `fish-lsp start --stdio ` ---> 1 +# > `fish-lsp start --enable ` ---> 1 +# > `fish-lsp start --stdio --enable complete ` ---> 1 +function __fish_lsp_not_contains_opt -d 'check if no switches have been seen in the commandline' + for opt in $argv + not __fish_contains_opt "$opt" + or return 1 + end +end + +function __fish_lsp_info_sourcemaps_complete -d 'complete the source map url for the current lsp version' + __fish_seen_subcommand_from info + and __fish_contains_opt source-maps + and __fish_lsp_not_contains_opt all all-paths check install status remove +end + +# Utility function for checking if we have seen any switches yet. +# EXAMPLES: +# > `fish-lsp start --stdio ` ---> 1 +# > `fish-lsp start --stdio --enable complete ` ---> 1 +# > `fish-lsp start ` ---> 0 +function __fish_lsp_is_first_switch -d "check if we've seen any switches in the commandline" + set -l opts (commandline -opc) + set -e opts[1] + if test (count $opts) -eq 0 + return 1 + end + set -l count 0 + for opt in $opts + switch $opt + case '-*' + set count (math $count + 1) + case '*' + continue + end + end + if test $count -eq 0 + return 0 + end + return 1 +end + +# Count args after the last switch. +# This is useful for limiting the number of arguments a user can pass to a switch. +# Fish's default behavior allows multiple arguments to be passed to a switch (when using the fish-lsp's cli syntax) +# When paired with the `test` command, we can make sure that the user has provided a certain number of values to the last switch. +# EXAMPLES: +# > `fish-lsp start --max-files ` ---> 0 +# > `fish-lsp start --max-files 10` ---> 1 +# > `fish-lsp start --max-files 1000 ` ---> 2 +# > `fish-lsp start --max-files 1000 --stdio` ---> 0 +# USAGE: +# > `complete -c fish-lsp -n 'not __fish_contains_opt max-files' -l max-files -xa '(seq 1000 500 10000)'` +# > `complete -c fish-lsp -n 'test (__fish_lsp_count_after_last_switch) -le 1' -l max-files -xa '(seq 1000 500 10000)'` +# creates the flag `--max-files` with numbers from 1000 to 10000 as completion values +# but only allows the user to select a single value for the switch, +# e.g. `--max-files ` is allowed, but `--max-files 1000 5000` is not +function __fish_lsp_count_after_last_switch -d 'count the number of arguments after the last switch' + set -l opts (commandline -opc) (commandline -ct) + set -l last_switch + set -l count 0 + for opt in $opts + switch $opt + case '-*' + set last_switch $opt + set count 0 + case '*' + test -n "$last_switch" + and set count (math $count + 1) + end + end + echo $count +end + +############################### +### END OF HELPER FUNCTIONS ### +############################### + +## disable file completions +complete -c fish-lsp -f + +## fish-lsp +complete -c fish-lsp -n "__fish_is_first_arg; and __fish_complete_subcommand" -k -a " +start\t'start the lsp' +info\t'show info about the fish-lsp' +url\t'show helpful url(s) related to the fish-lsp' +complete\t'generate fish shell completions' +env\t'generate environment variables for lsp configuration'" + +## `fish-lsp -` +complete -c fish-lsp -n '__fish_is_first_arg; and not __fish_contains_opt -s v version' -s v -l version -d 'Show lsp version' +complete -c fish-lsp -n '__fish_is_first_arg; and not __fish_contains_opt -s h help' -s h -l help -d 'Show help information' +complete -c fish-lsp -n '__fish_is_first_arg; and not __fish_contains_opt help-all' -l help-all -d 'Show all help information' +complete -c fish-lsp -n '__fish_is_first_arg; and not __fish_contains_opt help-short' -l help-short -d 'Show short help information' +complete -c fish-lsp -n '__fish_is_first_arg; and not __fish_contains_opt help-man' -l help-man -d 'Show raw manpage' + +## `fish-lsp start --` +complete -c fish-lsp -n '__fish_seen_subcommand_from start; and not __fish_contains_opt dump' -l dump -d 'stop lsp & show the startup options being read' +complete -c fish-lsp -n '__fish_seen_subcommand_from start' -l enable -d 'enable the startup option' -xa '(__fish_lsp_get_features)' +complete -c fish-lsp -n '__fish_seen_subcommand_from start' -l disable -d 'disable the startup option' -xa '(__fish_lsp_get_features)' +complete -c fish-lsp -n '__fish_seen_subcommand_from start; and __fish_lsp_last_switch --disable --enable' -a '(__fish_lsp_get_features)' # allow completing multiple features in a row (when last seen switch is either: `--enable|--disable`) +complete -c fish-lsp -n '__fish_seen_subcommand_from start; and not __fish_lsp_start_connection_opts' -l stdio -d 'use stdin/stdout for communication (default)' +complete -c fish-lsp -n '__fish_seen_subcommand_from start; and not __fish_lsp_start_connection_opts' -l node-ipc -d 'use node IPC for communication' +complete -c fish-lsp -n '__fish_seen_subcommand_from start; and not __fish_lsp_start_connection_opts' -l socket -d 'use TCP socket for communication' -x +complete -c fish-lsp -n '__fish_seen_subcommand_from start; and not __fish_contains_opt memory-limit' -l memory-limit -d 'set memory usage limit in MB' -x +complete -c fish-lsp -n '__fish_seen_subcommand_from start; and not __fish_contains_opt max-files' -l max-files -d 'override the maximum number of files to analyze' -xa '100 500 (seq 1000 500 10000)' +complete -c fish-lsp -n '__fish_seen_subcommand_from start; and __fish_lsp_last_switch --max-files; and test (__fish_lsp_count_after_last_switch) -le 1' -d 'override the maximum number of files to analyze' -xa '100 500 (seq 1000 500 10000)' + +## fish-lsp url -- +complete -c fish-lsp -n '__fish_seen_subcommand_from url; and not __fish_contains_opt download; and not __fish_contains_opt repo' -l repo -d 'show git repo url' +complete -c fish-lsp -n '__fish_seen_subcommand_from url; and not __fish_contains_opt download; and not __fish_contains_opt git' -l git -d 'show git repo url' +complete -c fish-lsp -n '__fish_seen_subcommand_from url; and not __fish_contains_opt download; and not __fish_contains_opt npm' -l npm -d 'show npmjs.com url' +complete -c fish-lsp -n '__fish_seen_subcommand_from url; and not __fish_contains_opt download; and not __fish_contains_opt homepage' -l homepage -d 'show website url' +complete -c fish-lsp -n '__fish_seen_subcommand_from url; and not __fish_contains_opt download; and not __fish_contains_opt contributing' -l contributing -d 'show git CONTRIBUTING.md url' +complete -c fish-lsp -n '__fish_seen_subcommand_from url; and not __fish_contains_opt download; and not __fish_contains_opt wiki' -l wiki -d 'show git wiki url' +complete -c fish-lsp -n '__fish_seen_subcommand_from url; and not __fish_contains_opt download; and not __fish_contains_opt issues' -l issues -d 'show git issues url' +complete -c fish-lsp -n '__fish_seen_subcommand_from url; and not __fish_contains_opt download; and not __fish_contains_opt report' -l report -d 'show git issues url' +complete -c fish-lsp -n '__fish_seen_subcommand_from url; and not __fish_contains_opt download; and not __fish_contains_opt discussions' -l discussions -d 'show git discussions url' +complete -c fish-lsp -n '__fish_seen_subcommand_from url; and not __fish_contains_opt download; and not __fish_contains_opt clients-repo' -l clients-repo -d 'show git clients-repo url' +complete -c fish-lsp -n '__fish_seen_subcommand_from url; and not __fish_contains_opt download; and not __fish_contains_opt sources-list' -l sources-list -d 'show useful url list of sources' +complete -c fish-lsp -n '__fish_seen_subcommand_from url; and not __fish_contains_opt download' -l download -d 'download server url' +complete -c fish-lsp -n '__fish_seen_subcommand_from url; and not __fish_contains_opt source-map' -l source-map -d 'show source map url for the current lsp version' + +## fish-lsp complete -- +complete -c fish-lsp -n '__fish_seen_subcommand_from complete; and not __fish_contains_opt fish' -l fish -d 'DEFAULT BEHAVIOR: show output for completion/fish-lsp.fish' +complete -c fish-lsp -n '__fish_seen_subcommand_from complete; and not __fish_contains_opt names' -l names -d 'show names of subcommands' +complete -c fish-lsp -n '__fish_seen_subcommand_from complete; and not __fish_contains_opt names-with-summary' -l names-with-summary -d 'show `name\tsummary\n` of subcommands' +complete -c fish-lsp -n '__fish_seen_subcommand_from complete; and not __fish_contains_opt features' -l features -d 'show feature/toggle names' +complete -c fish-lsp -n '__fish_seen_subcommand_from complete; and not __fish_contains_opt toggles' -l toggles -d 'show feature/toggle names' +complete -c fish-lsp -n '__fish_seen_subcommand_from complete; and not __fish_contains_opt env-variables' -l env-variables -d 'show env variable completions' +complete -c fish-lsp -n '__fish_seen_subcommand_from complete; and not __fish_contains_opt env-variable-names' -l env-variable-names -d 'show env variable names' + +## fish-lsp info -- +complete -c fish-lsp -n '__fish_lsp_info_complete_opt bin' -l bin -d 'show the binary path' +complete -c fish-lsp -n '__fish_lsp_info_complete_opt path' -l path -d 'show the path to the installation' +complete -c fish-lsp -n '__fish_lsp_info_complete_opt build-type' -l build-type -d 'show the build-type' +complete -c fish-lsp -n '__fish_lsp_info_complete_opt build-time' -l build-time -d 'show the build-time' +complete -c fish-lsp -n '__fish_lsp_info_complete_opt -s v version' -s v -l version -d 'show the "fish-lsp" version' +complete -c fish-lsp -n '__fish_lsp_info_complete_opt lsp-version' -l lsp-version -d 'show the npm package for the lsp-version' +complete -c fish-lsp -n '__fish_lsp_info_complete_opt capabilities' -l capabilities -d 'show the lsp capabilities implemented' +complete -c fish-lsp -n '__fish_lsp_info_complete_opt man-file' -l man-file -d 'show man file path' +complete -c fish-lsp -n '__fish_lsp_info_complete_opt log-file' -l log-file -d 'show log file path' +complete -c fish-lsp -n '__fish_lsp_info_complete_opt; and __fish_contains_opt man-file; or __fish_contains_opt log-file' -l show -d 'show file content' +complete -c fish-lsp -n '__fish_lsp_info_complete_opt verbose extra; and __fish_lsp_is_first_switch' -l verbose -d 'show all debugging server info (capabilities, paths, version, etc.)' +complete -c fish-lsp -n '__fish_lsp_info_complete_opt extra verbose; and __fish_lsp_is_first_switch' -l extra -d 'show all debugging server info (capabilities, paths, version, etc.)' +complete -c fish-lsp -n '__fish_lsp_info_complete_opt check-health time-startup; and __fish_lsp_is_first_switch' -l check-health -d 'show the server health' +complete -c fish-lsp -n '__fish_lsp_info_complete_opt time-startup check-health; and __fish_lsp_is_first_switch' -l time-startup -d 'show startup timing info' +complete -c fish-lsp -n '__fish_lsp_info_complete_opt time-only;' -l time-only -d 'show only summary of the startup timing info' +complete -c fish-lsp -n '__fish_seen_subcommand_from info; and __fish_contains_opt time-startup; and not __fish_contains_opt no-warning' -l no-warning -d 'do not show warning message' +complete -c fish-lsp -n '__fish_seen_subcommand_from info; and __fish_contains_opt time-startup; and not __fish_contains_opt use-workspace' -l use-workspace -d 'specify workspace directory' -xa '(__fish_complete_directories)' +complete -c fish-lsp -n '__fish_seen_subcommand_from info; and __fish_contains_opt time-startup; and __fish_lsp_last_switch --use-workspace' -d 'workspace directory' -xa '(__fish_complete_directories)' +complete -c fish-lsp -n '__fish_seen_subcommand_from info; and __fish_contains_opt time-startup; and not __fish_contains_opt show-files' -l show-files -d 'show the files indexed' +complete -c fish-lsp -n '__fish_lsp_info_complete_opt source-maps;' -l source-maps -d 'show the source maps used by the server' +complete -c fish-lsp -n '__fish_lsp_info_sourcemaps_complete' -l all -d 'verbose info showing all sourcemaps used by the server on the local machine' +complete -c fish-lsp -n '__fish_lsp_info_sourcemaps_complete' -l all-paths -d 'the absolute paths of the installed sourcemaps' +complete -c fish-lsp -n '__fish_lsp_info_sourcemaps_complete' -l check -d 'check if the sourcemaps are installed & valid' +complete -c fish-lsp -n '__fish_lsp_info_sourcemaps_complete' -l remove -d 'remove the sourcemaps' +complete -c fish-lsp -n '__fish_lsp_info_sourcemaps_complete' -l install -d 'install the sourcemaps' +complete -c fish-lsp -n '__fish_lsp_info_sourcemaps_complete' -l status -d 'info about the sourcemaps' +complete -c fish-lsp -n '__fish_lsp_info_complete_opt dump-parse-tree; and __fish_lsp_is_first_switch' -l dump-parse-tree -d 'dump the tree-sitter parse tree of a file' -k -xa '(__fish_complete_suffix "*.fish" --description="path to show tree-sitter AST" | string match -rei -- ".*\.fish|.*/")' +complete -c fish-lsp -n '__fish_seen_subcommand_from info; and __fish_lsp_last_switch --dump-parse-tree; and test (__fish_lsp_count_after_last_switch) -le 1' -d 'fish script file' -k -xa '(__fish_complete_suffix "*.fish" --description="path to show tree-sitter AST" | string match -rei -- ".*\.fish|.*/")' +complete -c fish-lsp -n '__fish_seen_subcommand_from info; and __fish_contains_opt dump-parse-tree; and not __fish_contains_opt no-color' -l no-color -d 'do not colorize the output' + +## fish-lsp env -- +# no switches seen: `fish-lsp env ` +complete -c fish-lsp -n '__fish_seen_subcommand_from env; and __fish_lsp_env_main_switch --none; and __fish_complete_subcommand --fcs-skip=2' -kra " +--show-default\t'show the default values for fish-lsp env variables' +-c\t'create the env variables' +--create\t'create the env variables' +-s\t'show the current fish-lsp env variables with their values' +--show\t'show the current fish-lsp env variables with their values' +--names\t'output only the names of the env variables'" +# main switches (first arguments after the `env` subcommand) +complete -c fish-lsp -n '__fish_seen_subcommand_from env; and __fish_lsp_env_main_switch --none' -l show-default -d 'show the default values for fish-lsp env variables' -k +complete -c fish-lsp -n '__fish_seen_subcommand_from env; and __fish_lsp_env_main_switch --none' -s c -l create -d 'build initial fish-lsp env variables' -k +complete -c fish-lsp -n '__fish_seen_subcommand_from env; and __fish_lsp_env_main_switch --none' -s s -l show -d 'show the current fish-lsp env variables' -k +complete -c fish-lsp -n '__fish_seen_subcommand_from env; and __fish_lsp_env_main_switch --none' -l names -d 'output only the names of the env variables' -k +# --only switch +complete -c fish-lsp -n '__fish_seen_subcommand_from env; and __fish_lsp_env_main_switch --any' -l only -d 'show only certain env variables' -xa '(__fish_lsp_get_env_variables)' +complete -c fish-lsp -n '__fish_seen_subcommand_from env; and __fish_lsp_last_switch --only' -xa '(__fish_lsp_get_env_variables)' +# switches usable after the main switches +complete -c fish-lsp -n '__fish_seen_subcommand_from env; and __fish_lsp_env_main_switch --any --no-names --no-json; and not __fish_contains_opt no-comments' -l no-comments -d 'skip outputting comments' +complete -c fish-lsp -n '__fish_seen_subcommand_from env; and __fish_lsp_env_main_switch --any --no-names --no-json; and not __fish_contains_opt no-global' -l no-global -d 'use local exports' +complete -c fish-lsp -n '__fish_seen_subcommand_from env; and __fish_lsp_env_main_switch --any --no-names --no-json; and not __fish_contains_opt no-local' -l no-local -d 'do not use local scope (pair with --no-global)' +complete -c fish-lsp -n '__fish_seen_subcommand_from env; and __fish_lsp_env_main_switch --any --no-names --no-json; and not __fish_contains_opt no-export' -l no-export -d 'do not export variables' +complete -c fish-lsp -n '__fish_seen_subcommand_from env; and __fish_lsp_env_main_switch --any --no-names --no-output-types' -l json -d 'output for settings.json' +complete -c fish-lsp -n '__fish_seen_subcommand_from env; and __fish_lsp_env_main_switch --any --no-names --no-output-types' -l confd -d 'output for redirect to "conf.d/fish-lsp.fish"' +complete -c fish-lsp -n '__fish_seen_subcommand_from env; and __fish_lsp_env_main_switch --names-joined; and not __fish_contains_opt joined' -l joined -d 'output the names in a single line' + +################################################################################# +### generated output time: 09/11/2025, 16:04:17 ### +### binary build time: 10/1/25, 2:00:50 PM ### +### binary build path: ~/.local/bin/fish-lsp ### +### binary build version: 1.1.0 ### +### report issues: https://github.com/ndonfris/fish-lsp/issues ### +#################################################################################