fish-lsp.fish

  1# AUTO GENERATED BY 'fish-lsp' COMMAND
  2#
  3#   * Any command should generate the completions file
  4#
  5#      >_ fish-lsp complete > ~/.config/fish/completions/fish-lsp.fish
  6#      >_ fish-lsp complete > $fish_complete_path[1]/fish-lsp.fish
  7#
  8#   * If you are building from source, the completions file is generated by the commands
  9#
 10#      >_ yarn install && yarn dev                            # builds and links the `fish-lsp` command globally (with completions)
 11#      >_ yarn sh:build-completions                           # directly builds the completions file
 12#
 13#   * To find all files that are used for sourcing fish-lsp's completions, you can use:
 14#
 15#      >_ path sort --unique --key=basename $fish_complete_path/*.fish | string match -re '/fish-lsp.fish' 
 16# 
 17#   * To interactively test the completions, you can use:
 18# 
 19#      >_ complete -c fish-lsp -e && complete -e fish-lsp       # erase all fish-lsp completions
 20#      >_ fish-lsp complete | source                            # use the completions for the current session
 21#
 22#   * For more info, try editing the generated output inside:
 23#
 24#      To see the completions in your current shell interactive prompt:
 25#      >_ commandline -r (fish-lsp complete | string collect)   # pressing `alt+e` will edit the commandline in $EDITOR
 26#
 27#      Or write them to a /tmp/ file, and edit them directly in your $EDITOR, and source them:
 28#      >_ fish-lsp complete > /tmp/fish-lsp.fish && $EDITOR /tmp/fish-lsp.fish && source /tmp/fish-lsp.fish 
 29#      
 30#      If you are working on the development of the `fish-lsp`, you can edit the file that generates the completions:
 31#      >_ $EDITOR ~/path/to/fish-lsp/src/utils/get-lsp-completions.ts
 32#      >_ open https://github.com/ndonfris/fish-lsp/blob/master/src/utils/get-lsp-completions.ts  # view it in browser
 33#      
 34#      NOTE: bundled server installations will not allow you to view the source code as easily
 35#
 36#   * You can see if the completions are up to date by running the command:
 37#
 38#      >_ fish-lsp info --check-health
 39#
 40#
 41# MORE INFO INCLUDED IN FOOTER
 42# PLEASE CONSIDER CONTRIBUTING!
 43# REPO URL: https://github.com/ndonfris/fish-lsp.git
 44
 45
 46#############################################
 47# helper functions for fish-lsp completions #
 48#############################################
 49
 50# print all unique `fish-lsp start --enable|--disable ...` features (i.e., complete, hover, etc.)
 51# if a feature is already specified in the command line, it will be skipped
 52# the features can also be used in the global environment variables `fish_lsp_enabled_handlers` or `fish_lsp_disabled_handlers`
 53function __fish_lsp_get_features -d 'print all features controlled by the server, not yet used in the commandline'
 54    set -l all_features 'complete' 'hover' 'rename' 'definition' 'implementation' 'reference' 'formatting' 'formatRange' 'typeFormatting' 'codeAction' 'codeLens' 'folding' 'signature' 'executeCommand' 'inlayHint' 'highlight' 'diagnostic' 'popups' 'semanticTokens'
 55    set -l features_to_complete
 56    set -l features_to_skip
 57    set -l opts (commandline -opc)
 58    for opt in $opts
 59        if contains -- $opt $all_features
 60            set features_to_skip $features_to_skip $opt
 61        end
 62    end
 63    for feature in $all_features
 64        if not contains -- $feature $features_to_skip
 65            printf '%b\t%s\n' $feature "$feature handler"
 66        end
 67    end
 68end
 69
 70# check if `fish_lsp info` is used without arguments that prevent more switches
 71# to be completed. `$argv` can be multiple switches that are truthy for `not __fish_contains_opt $arg`.
 72# EXAMPLES:
 73#   > `__fish_info_complete_opt`     # no arguments so it will only check base cases
 74#   > `fish-lsp info -<TAB>`            ---> $status -eq 0
 75#   > `fish-lsp info --extra`           ---> $status -eq 1
 76#
 77#   > `__fish_info_complete_opt bin` #  check if argument `--bin` is used
 78#   > `fish-lsp info --bin`             ---> $status -eq 1
 79#   > `fish-lsp info --time-startup`    ---> $status -eq 1 (base case)
 80function __fish_lsp_info_complete_opt --description 'check if the commandline contains any of the info switches' 
 81
 82    __fish_seen_subcommand_from info || return 1
 83
 84    begin
 85      __fish_contains_opt extra
 86      or __fish_contains_opt verbose
 87      or __fish_contains_opt time-startup
 88      or __fish_contains_opt check-health
 89      or __fish_contains_opt source-maps
 90      or __fish_contains_opt dump-parse-tree
 91    end && return 1
 92    
 93    for opt in $argv
 94        not __fish_contains_opt "$opt"
 95        or return 1
 96    end
 97
 98    return 0
 99end
100
101
102# print all unique 'fish-lsp env --only ...` env_variables (i.e., $fish_lsp_*, ...)
103# if a env_variable is already specified in the command line, it will not be included again
104function __fish_lsp_get_env_variables -d 'print all fish_lsp_* env variables, not yet used in the commandline'
105    # every env variable name 
106    set -l env_names "fish_lsp_enabled_handlers" \
107		"fish_lsp_disabled_handlers" \
108		"fish_lsp_commit_characters" \
109		"fish_lsp_log_file" \
110		"fish_lsp_log_level" \
111		"fish_lsp_all_indexed_paths" \
112		"fish_lsp_modifiable_paths" \
113		"fish_lsp_diagnostic_disable_error_codes" \
114		"fish_lsp_enable_experimental_diagnostics" \
115		"fish_lsp_strict_conditional_command_warnings" \
116		"fish_lsp_prefer_builtin_fish_commands" \
117		"fish_lsp_allow_fish_wrapper_functions" \
118		"fish_lsp_require_autoloaded_functions_to_have_description" \
119		"fish_lsp_max_background_files" \
120		"fish_lsp_show_client_popups" \
121		"fish_lsp_single_workspace_support" \
122		"fish_lsp_ignore_paths" \
123		"fish_lsp_max_workspace_depth" \
124		"fish_lsp_fish_path"
125
126    # every completion argument `name\t'description'`, only unused env variables will be printed
127    set -l env_names_with_descriptions "fish_lsp_enabled_handlers\t'server handlers to enable'" \
128		"fish_lsp_disabled_handlers\t'server handlers to disable'" \
129		"fish_lsp_commit_characters\t'commit characters that select completion items'" \
130		"fish_lsp_log_file\t'path to the fish-lsp's log file'" \
131		"fish_lsp_log_level\t'minimum log level to include in the log file'" \
132		"fish_lsp_all_indexed_paths\t'directories that the server should always index on startup'" \
133		"fish_lsp_modifiable_paths\t'indexed paths that can be modified'" \
134		"fish_lsp_diagnostic_disable_error_codes\t'diagnostic codes to disable'" \
135		"fish_lsp_enable_experimental_diagnostics\t'enable fish-lsp's experimental diagnostics'" \
136		"fish_lsp_strict_conditional_command_warnings\t'diagnostic `3002` show warnings for syntax like `command ls || echo 'no ls'`'" \
137		"fish_lsp_prefer_builtin_fish_commands\t'prefer built-in fish commands over external shell commands'" \
138		"fish_lsp_allow_fish_wrapper_functions\t'prefer the user to use primitive fish commands instead of wrapper utilities common in other shells'" \
139		"fish_lsp_require_autoloaded_functions_to_have_description\t'enable showing diagnostic `4008`'" \
140		"fish_lsp_max_background_files\t'maximum number of files to analyze in the background on startup'" \
141		"fish_lsp_show_client_popups\t'send `connection/window/*` requests in the server'" \
142		"fish_lsp_single_workspace_support\t'limit workspace searching to only the current workspace'" \
143		"fish_lsp_ignore_paths\t'paths to ignore when indexing'" \
144		"fish_lsp_max_workspace_depth\t'maximum directory depth to search for fish files on startup'" \
145		"fish_lsp_fish_path\t'specific binary to use for executing 'fish' commands inside server'"
146
147    # get the current command line token (for comma separated options)
148    set -l current (commandline -ct)
149
150    # utility function to check if the current token contains a comma
151    function has_comma --inherit-variable current --description 'check if the current token contains a comma'
152        string match -rq '.*,.*' -- $current || string match -rq -- '--only=.*' $current
153        return $status
154    end
155
156    # get the current command line options, adding the current token if it contains a comma
157    set -l opts (commandline -opc)
158    has_comma && set -a opts $current 
159
160    # create two arrays, one for the env variables already used, and the other
161    # for all the arguments passed into the commandline 
162    set -l features_to_skip
163    set -l fixed_opts
164
165    # split any comma separated options
166    for opt in $opts
167        if string match -rq -- '--only=.*' $opt
168            set -a fixed_opts '--only' (string split -m1 -f2 -- '--only=' $opt | string split ',')
169        else if string match -q '*,*' -- $opt
170            set fixed_opts $fixed_opts (string split ',' -- $opt)
171        else
172            set fixed_opts $fixed_opts $opt
173        end
174    end
175
176    # skip any env variable that is already specified in the command line
177    for opt in $fixed_opts
178        if contains -- $opt $env_names
179            set -a features_to_skip $opt
180        end
181    end
182
183    # if using the `--only=` syntax, remove the `--only` part.
184    # when entries are separated by commas, we need to keep the current token's prefix comma
185    # in the completion output
186    set prefix ''
187    if has_comma
188        set prefix (string replace -r '[^,]*$' '' -- $current | string replace -r -- '^--only=' '')
189    end
190
191    # print the completions that haven't been used yet
192    for line in $env_names_with_descriptions
193        set name (string split -f1 -m1 '\t' -- $line)
194        if not contains -- $name $features_to_skip
195            echo -e "$prefix$line"
196        end
197    end
198end
199
200# check for usage of the main switches in env command `fish-lsp env --show|--create|--show-default|--names` 
201#
202# requires passing in one of switches: `--none` or `--any`
203#  - `--none`     check that none of the main switches are used
204#  - `--any`      check that a main switch has been seen
205#  - `--no-names` check that the `--names` switch is not used, but needs to be
206#  paired with `--none` or `--any`
207#
208# used in the `env` completions, for grouping repeated logic on those
209# completions conditional checks.
210#
211# ```
212# complete -n '__fish_lsp_env_main_switch --none'
213# ``` 
214function __fish_lsp_env_main_switch --description 'check if the commandline contains any of the main env switches (--show|--create|--show-default|--names)'
215    argparse any none no-names no-output-types no-json names-joined -- $argv
216    or return 1
217
218    # none means we don't want to see any of the main switches
219    # no-names doesn't change anything here, since we are making sure that
220    # names already doesn't exist in the command line
221    if set -ql _flag_none
222        not __fish_contains_opt names
223        and not __fish_contains_opt -s s show
224        and not __fish_contains_opt -s c create
225        and not __fish_contains_opt show-default
226        return $status
227    end
228
229    # any means that one of the main switches has been used.
230    if set -ql _flag_any
231        if set -ql _flag_no_names
232            __fish_contains_opt names
233            and return 1
234        end
235        if set -ql _flag_no_output_types
236            __fish_contains_opt json
237            or __fish_contains_opt confd
238            and return 1
239        end
240        if set -ql _flag_no_json
241            __fish_contains_opt json
242            and return 1
243        end
244        not set -ql _flag_no_names && __fish_contains_opt names
245        or __fish_contains_opt -s s show
246        or __fish_contains_opt -s c create
247        or __fish_contains_opt show-default
248        return $status
249    end
250
251    # names joined means that both the --names and --joined switches are used
252    if set -ql _flag_names_joined
253        __fish_contains_opt names
254        and not __fish_contains_opt -s j joined
255        and return $status
256    end
257    # if no switches are found, return 1
258    return 1
259end
260
261
262
263# make sure `fish-lsp start --stdio|--node-ipc|--socket` is used singularly
264# and not in combination with any other connection related option
265function __fish_lsp_start_connection_opts -d 'check if any option (--stdio|--node-ipc|--socket) is used'
266    __fish_contains_opt stdio || __fish_contains_opt node-ipc || __fish_contains_opt socket
267end
268
269# check if the last `fish-lsp start ...` flag/switch is `--enable` or `--disable`
270# this will find the last `-*` argument in the command line, skipping any argument not starting with `-`
271# and make sure it matches any of the provided `$argv` passed in to the function (defaulting to: `--enable` `--disable`)
272# we use this to allow multiple sequential features to follow `fish-lsp start --enable|--disable ...`
273# USAGE:
274#  > `fish-lsp --stdio --start complete hover --disable codeAction highlight formatting <TAB>`
275#  `__fish_lsp_last_switch --enable --disable ` would return 0 since `--disable` is the last switch
276function __fish_lsp_last_switch -d 'check if the last argument w/ a leading `-` matches any $argv'
277    set -l opts (commandline -opc)
278    set -l last_opt
279    for opt in $opts
280        switch $opt
281            case '-*'
282                set last_opt $opt
283            case '*'
284                continue
285        end
286    end
287    set -l match_opts $argv
288    if test (count $argv) -eq 0
289      set match_opts '--enable' '--disable'
290    end
291    for switch in $match_opts
292        if test "$last_opt" = "$switch"
293            return 0
294        end
295    end
296    return 1
297end
298
299# Utility function to check if non or switches have been seen in the commandline
300# EXAMPLES:
301#   > `__fish_lsp_not_contains_opt stdio enable disable`
302#   > `fish-lsp start --stdio <TAB>`                   ---> 1
303#   > `fish-lsp start --enable <TAB>`                  ---> 1
304#   > `fish-lsp start --stdio --enable complete <TAB>` ---> 1
305function __fish_lsp_not_contains_opt -d 'check if no switches have been seen in the commandline'
306    for opt in $argv
307        not __fish_contains_opt "$opt"
308        or return 1
309    end
310end
311
312function __fish_lsp_info_sourcemaps_complete -d 'complete the source map url for the current lsp version'
313    __fish_seen_subcommand_from info
314    and __fish_contains_opt source-maps
315    and __fish_lsp_not_contains_opt all all-paths check install status remove 
316end
317
318# Utility function for checking if we have seen any switches yet.
319# EXAMPLES:
320#   > `fish-lsp start --stdio <TAB>`                   ---> 1
321#   > `fish-lsp start --stdio --enable complete <TAB>` ---> 1
322#   > `fish-lsp start <TAB>`                           ---> 0
323function __fish_lsp_is_first_switch -d "check if we've seen any switches in the commandline"
324    set -l opts (commandline -opc)
325    set -e opts[1]
326    if test (count $opts) -eq 0
327        return 1
328    end
329    set -l count 0
330    for opt in $opts
331        switch $opt
332            case '-*'
333                set count (math $count + 1)
334            case '*'
335                continue
336        end
337    end
338    if test $count -eq 0
339        return 0
340    end
341    return 1
342end
343
344# Count args after the last switch. 
345# This is useful for limiting the number of arguments a user can pass to a switch.
346# Fish's default behavior allows multiple arguments to be passed to a switch (when using the fish-lsp's cli syntax) 
347# When paired with the `test` command, we can make sure that the user has provided a certain number of values to the last switch.
348# EXAMPLES:
349#  > `fish-lsp start --max-files <TAB>`                 ---> 0
350#  > `fish-lsp start --max-files 10<TAB>`               ---> 1
351#  > `fish-lsp start --max-files 1000 <TAB>`            ---> 2
352#  > `fish-lsp start --max-files 1000 <TAB> --stdio`    ---> 0
353# USAGE:
354#  > `complete -c fish-lsp -n 'not __fish_contains_opt max-files' -l max-files -xa '(seq 1000 500 10000)'`
355#  > `complete -c fish-lsp -n 'test (__fish_lsp_count_after_last_switch) -le 1' -l max-files -xa '(seq 1000 500 10000)'`
356#  creates the flag `--max-files` with numbers from 1000 to 10000 as completion values
357#  but only allows the user to select a single value for the switch, 
358#  e.g. `--max-files <value>` is allowed, but `--max-files 1000 5000` is not
359function __fish_lsp_count_after_last_switch -d 'count the number of arguments after the last switch'
360    set -l opts (commandline -opc) (commandline -ct)
361    set -l last_switch
362    set -l count 0
363    for opt in $opts
364        switch $opt
365            case '-*'
366                set last_switch $opt
367                set count 0
368            case '*'
369                test -n "$last_switch"
370                and set count (math $count + 1)
371        end
372    end
373    echo $count
374end
375
376###############################
377### END OF HELPER FUNCTIONS ###
378###############################
379
380## disable file completions
381complete -c fish-lsp -f
382
383## fish-lsp <TAB>
384complete -c fish-lsp -n "__fish_is_first_arg; and __fish_complete_subcommand" -k -a "
385start\t'start the lsp'
386info\t'show info about the fish-lsp'
387url\t'show helpful url(s) related to the fish-lsp'
388complete\t'generate fish shell completions'
389env\t'generate environment variables for lsp configuration'"
390
391## `fish-lsp -<TAB>`
392complete -c fish-lsp -n '__fish_is_first_arg; and not __fish_contains_opt -s v version'  -s v -l version      -d 'Show lsp version'
393complete -c fish-lsp -n '__fish_is_first_arg; and not __fish_contains_opt -s h help'     -s h -l help         -d 'Show help information'
394complete -c fish-lsp -n '__fish_is_first_arg; and not __fish_contains_opt help-all'           -l help-all     -d 'Show all help information'
395complete -c fish-lsp -n '__fish_is_first_arg; and not __fish_contains_opt help-short'         -l help-short   -d 'Show short help information'
396complete -c fish-lsp -n '__fish_is_first_arg; and not __fish_contains_opt help-man'           -l help-man     -d 'Show raw manpage'
397
398## `fish-lsp start --<TAB>`
399complete -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'
400complete -c fish-lsp -n '__fish_seen_subcommand_from start'                                                                       -l enable              -d 'enable the startup option'      -xa '(__fish_lsp_get_features)'
401complete -c fish-lsp -n '__fish_seen_subcommand_from start'                                                                       -l disable             -d 'disable the startup option'     -xa '(__fish_lsp_get_features)'
402complete -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`)
403complete -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)'
404complete -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'
405complete -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
406complete -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
407complete -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)'
408complete -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)'
409
410## fish-lsp url --<TAB>
411complete -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'  
412complete -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'  
413complete -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' 
414complete -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'   
415complete -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'
416complete -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'
417complete -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'
418complete -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'
419complete -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' 
420complete -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'
421complete -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'
422complete -c fish-lsp -n '__fish_seen_subcommand_from url; and not __fish_contains_opt download'                                            -l download      -d 'download server url'
423complete -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'
424
425## fish-lsp complete --<TAB>
426complete -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'
427complete -c fish-lsp -n '__fish_seen_subcommand_from complete; and not __fish_contains_opt names'                  -l names                  -d 'show names of subcommands'
428complete -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'
429complete -c fish-lsp -n '__fish_seen_subcommand_from complete; and not __fish_contains_opt features'               -l features               -d 'show feature/toggle names'
430complete -c fish-lsp -n '__fish_seen_subcommand_from complete; and not __fish_contains_opt toggles'                -l toggles                -d 'show feature/toggle names'
431complete -c fish-lsp -n '__fish_seen_subcommand_from complete; and not __fish_contains_opt env-variables'          -l env-variables          -d 'show env variable completions'
432complete -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'
433
434## fish-lsp info --<TAB>
435complete -c fish-lsp -n '__fish_lsp_info_complete_opt bin'                                                                                     -l bin             -d 'show the binary path'
436complete -c fish-lsp -n '__fish_lsp_info_complete_opt path'                                                                                    -l path            -d 'show the path to the installation'  
437complete -c fish-lsp -n '__fish_lsp_info_complete_opt build-type'                                                                              -l build-type      -d 'show the build-type' 
438complete -c fish-lsp -n '__fish_lsp_info_complete_opt build-time'                                                                              -l build-time      -d 'show the build-time' 
439complete -c fish-lsp -n '__fish_lsp_info_complete_opt -s v version'                                                                       -s v -l version         -d 'show the "fish-lsp" version'
440complete -c fish-lsp -n '__fish_lsp_info_complete_opt lsp-version'                                                                             -l lsp-version     -d 'show the npm package for the lsp-version'
441complete -c fish-lsp -n '__fish_lsp_info_complete_opt capabilities'                                                                            -l capabilities    -d 'show the lsp capabilities implemented' 
442complete -c fish-lsp -n '__fish_lsp_info_complete_opt man-file'                                                                                -l man-file        -d 'show man file path'
443complete -c fish-lsp -n '__fish_lsp_info_complete_opt log-file'                                                                                -l log-file        -d 'show log file path' 
444complete -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' 
445complete -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.)' 
446complete -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.)' 
447complete -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'
448complete -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'
449complete -c fish-lsp -n '__fish_lsp_info_complete_opt time-only;'                                                                              -l time-only       -d 'show only summary of the startup timing info'
450complete -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'
451complete -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)'
452complete -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)'
453complete -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'
454complete -c fish-lsp -n '__fish_lsp_info_complete_opt source-maps;'                                                                            -l source-maps     -d 'show the source maps used by the server'
455complete -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' 
456complete -c fish-lsp -n '__fish_lsp_info_sourcemaps_complete'                                                                                  -l all-paths       -d 'the absolute paths of the installed sourcemaps' 
457complete -c fish-lsp -n '__fish_lsp_info_sourcemaps_complete'                                                                                  -l check           -d 'check if the sourcemaps are installed & valid' 
458complete -c fish-lsp -n '__fish_lsp_info_sourcemaps_complete'                                                                                  -l remove          -d 'remove the sourcemaps' 
459complete -c fish-lsp -n '__fish_lsp_info_sourcemaps_complete'                                                                                  -l install         -d 'install the sourcemaps' 
460complete -c fish-lsp -n '__fish_lsp_info_sourcemaps_complete'                                                                                  -l status          -d 'info about the sourcemaps' 
461complete -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|.*/")'
462complete -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|.*/")' 
463complete -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'
464
465## fish-lsp env --<TAB>
466# no switches seen: `fish-lsp env <TAB>`
467complete -c fish-lsp -n '__fish_seen_subcommand_from env; and __fish_lsp_env_main_switch --none; and __fish_complete_subcommand --fcs-skip=2' -kra "
468--show-default\t'show the default values for fish-lsp env variables'
469-c\t'create the env variables'
470--create\t'create the env variables'
471-s\t'show the current fish-lsp env variables with their values'
472--show\t'show the current fish-lsp env variables with their values'
473--names\t'output only the names of the env variables'"
474# main switches (first arguments after the `env` subcommand)
475complete -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
476complete -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
477complete -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
478complete -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
479# --only switch
480complete -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)'
481complete -c fish-lsp -n '__fish_seen_subcommand_from env; and __fish_lsp_last_switch --only' -xa '(__fish_lsp_get_env_variables)'
482# switches usable after the main switches
483complete -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'               
484complete -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'                      
485complete -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)'
486complete -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'                       
487complete -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'
488complete -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"'
489complete -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'
490
491#################################################################################
492### generated output time:      09/11/2025, 16:04:17                          ###
493### binary build time:          10/1/25, 2:00:50 PM                           ###
494### binary build path:          ~/.local/bin/fish-lsp                         ###
495### binary build version:       1.1.0                                         ###
496### report issues:              https://github.com/ndonfris/fish-lsp/issues   ###
497#################################################################################