diff --git a/share/completions/qdbus.fish b/share/completions/qdbus.fish new file mode 100644 index 000000000..cfee1cd5e --- /dev/null +++ b/share/completions/qdbus.fish @@ -0,0 +1,25 @@ +function __fish_qdbus_complete + argparse system 'bus=' literal help -- (commandline --cut-at-cursor --tokenize) 2>/dev/null + or return + if set -q _flag_help + return + end + set -l qdbus_flags $_flag_system + if set -q _flag_bus + set -a qdbus_flags --bus $_flag_bus + end + set argc (count $argv) + if test $argc -le 3 + # avoid completion of property value + qdbus $qdbus_flags $argv[2] $argv[3] | string replace --regex '^(property(\ read)?|signal|method) ((\{.+\})|([^\ ]+)) ([^\(]+)(\(.+?\))?' '$6\t$1 $3 $7' | string trim + end +end + +complete -c qdbus -f + +complete -c qdbus -l system -d 'connect to the system bus' +complete -c qdbus -l bus -r -d 'connect to a custom bus' +complete -c qdbus -l literal -d 'print replies literally' +complete -c qdbus -l help -d 'print usage' + +complete -c qdbus -a '(__fish_qdbus_complete)'