mirror of
https://github.com/fish-shell/fish-shell
synced 2024-12-27 05:13:10 +00:00
5ad292328a
Use clang/clang++'s own autocompletion support to complete arguments. It is rather convoluted as clang generates autocompletions for a portion of the current token rather than the entire token, e.g. while `--st` will autocomplete to `--std=` (which is fine by fish), `--std=g` will autocomplete to `gnu...` without the leading `--std=` which breaks fish' support for the completion. Additionally, on systems where clang/clang++ is the system compiler (such as FreeBSD), it is very often for users to invoke a newer version of clang/clang++ installed as clang[++]-NN instead of clang. Using a monkey-patched version of `complete -p` to support that without breaking (future) completions for commands like `clang-format`. Closes #4174.
11 lines
725 B
Fish
11 lines
725 B
Fish
# Multiple versions are often installed as clang, clang-7, clang-8, etc.
|
|
# They won't be autoloaded, but once clang++ is used once, they'll gain completions too.
|
|
# This could potentially be moved to __fish_config_interactive.fish in the future.
|
|
|
|
# This pattern unfortunately matches clang-format, etc. as well.
|
|
complete -p '*clang*' -n '__fish_should_complete_switches' -xa '(__fish_clang_complete)'
|
|
complete -c 'clang' -n 'not __fish_should_complete_switches' \
|
|
-xa "(__fish_complete_suffix '{.o,.out,.c,.cpp,.so,.dylib}')"
|
|
# again but without the -x this time for the pattern-matched completion
|
|
complete -p '*clang*' -n 'not __fish_should_complete_switches' \
|
|
-a "(__fish_complete_suffix '{.o,.out,.c,.cpp,.so,.dylib}')"
|