diff --git a/share/completions/clj.fish b/share/completions/clj.fish index 90a0dbf44..cc491b172 100644 --- a/share/completions/clj.fish +++ b/share/completions/clj.fish @@ -49,10 +49,10 @@ function __fish_clj_tools -V bb_helper bb -e "$bb_helper" tools end -complete -c clj -s X -x -r -k -a "(__fish_complete_list : __fish_clj_aliases)" -d "Use concatenated aliases to modify classpath or supply exec fn/args" -complete -c clj -s A -x -r -k -a "(__fish_complete_list : __fish_clj_aliases)" -d "Use concatenated aliases to modify classpath" -complete -c clj -s M -x -r -k -a "(__fish_complete_list : __fish_clj_aliases)" -d "Use concatenated aliases to modify classpath or supply main opts" -complete -c clj -s T -x -r -k -a "(__fish_complete_list : __fish_clj_tools)" -d "Invoke tool by name or via aliases ala -X" +complete -c clj -s X -x -r -k -a "(__fish_stripprefix='^-\w*X' __fish_complete_list : __fish_clj_aliases)" -d "Use concatenated aliases to modify classpath or supply exec fn/args" +complete -c clj -s A -x -r -k -a "(__fish_stripprefix='^-\w*A' __fish_complete_list : __fish_clj_aliases)" -d "Use concatenated aliases to modify classpath" +complete -c clj -s M -x -r -k -a "(__fish_stripprefix='^-\w*M' __fish_complete_list : __fish_clj_aliases)" -d "Use concatenated aliases to modify classpath or supply main opts" +complete -c clj -s T -x -r -k -a "(__fish_stripprefix='^-\w*T' __fish_complete_list : __fish_clj_tools)" -d "Invoke tool by name or via aliases ala -X" complete -c clj -f -o Sdeps -r -d "Deps data to use as the last deps file to be merged" complete -c clj -f -o Spath -d "Compute classpath and echo to stdout only" diff --git a/share/completions/equery.fish b/share/completions/equery.fish index 184d84564..e2cfb5b08 100644 --- a/share/completions/equery.fish +++ b/share/completions/equery.fish @@ -85,7 +85,7 @@ complete -c equery -n '__fish_seen_subcommand_from f files' -s s -l timestamp -d complete -c equery -n '__fish_seen_subcommand_from f files' -s t -l type -d "Include file type in output" complete -c equery -n '__fish_seen_subcommand_from f files' -l tree -d "Display results in a tree" complete -c equery -n '__fish_seen_subcommand_from f files' -s f -l filter -d "Filter output by file type" \ - -xa "(__fish_complete_list , __fish_equery_files_filter_args)" + -xa "(__fish_stripprefix='^(--filter=|-\w*f)' __fish_complete_list , __fish_equery_files_filter_args)" # has + hasuse complete -c equery -n '__fish_seen_subcommand_from a has h hasuse' -s I -l exclude-installed -d "Exclude installed pkgs from search path" diff --git a/share/completions/gpasswd.fish b/share/completions/gpasswd.fish index 96b32b652..cea9f6a18 100644 --- a/share/completions/gpasswd.fish +++ b/share/completions/gpasswd.fish @@ -4,5 +4,5 @@ complete -c gpasswd -s d -l delete -d 'Remove user from group' -xa '(__fish_comp complete -c gpasswd -s h -l help -d 'Print help' complete -c gpasswd -s r -l remove-password -d 'Remove the GROUP\'s password' complete -c gpasswd -s R -l restrict -d 'Restrict access to GROUP to its members' -complete -c gpasswd -s M -l members -d 'Set the list of members of GROUP' -xa '(__fish_complete_list , __fish_complete_users)' -complete -c gpasswd -s A -l administrators -d 'set the list of administrators for GROUP' -xa '(__fish_complete_list , __fish_complete_users)' +complete -c gpasswd -s M -l members -d 'Set the list of members of GROUP' -xa "(__fish_stripprefix='^(--members=|-\w*M)' __fish_complete_list , __fish_complete_users)" +complete -c gpasswd -s A -l administrators -d 'set the list of administrators for GROUP' -xa "(__fish_stripprefix='^(--administrators=|-\w*A)' __fish_complete_list , __fish_complete_users)" diff --git a/share/completions/guild.fish b/share/completions/guild.fish index 558281f03..cef58de12 100644 --- a/share/completions/guild.fish +++ b/share/completions/guild.fish @@ -36,7 +36,7 @@ complete -c $command -s x -x \ -n $compile_condition complete -c $command -s W -l warning \ - -a '(__fish_complete_list , __fish_guild__complete_warnings)' \ + -a "(__fish_stripprefix='^(--warning=|-\w*W)' __fish_complete_list , __fish_guild__complete_warnings)" \ -d 'Specify the warning level for a compilation' \ -n $compile_condition diff --git a/share/completions/guile.fish b/share/completions/guile.fish index 2165a6a14..1bc14ecd7 100644 --- a/share/completions/guile.fish +++ b/share/completions/guile.fish @@ -85,7 +85,7 @@ complete -c $command -o ds \ -d 'Treat the last -s option as if it occurred at this point' complete -c $command -l use-srfi \ - -a '(__fish_complete_list , __fish_guile__complete_srfis)' \ + -a "(__fish_stripprefix='^--use-srfi=' __fish_complete_list , __fish_guile__complete_srfis)" \ -d 'Specify the SRFI modules to load' for standard in 6 7 diff --git a/share/completions/hashcat.fish b/share/completions/hashcat.fish index f0b616e14..c5e2bd8b9 100644 --- a/share/completions/hashcat.fish +++ b/share/completions/hashcat.fish @@ -58,7 +58,7 @@ complete -c hashcat -l restore -d "Restore session from --session" complete -c hashcat -l restore-disable -d "Do not write restore file" complete -c hashcat -l restore-file-path -rF -d "Specific path to restore file" complete -c hashcat -s o -l outfile -rF -d "Define outfile for recovered hash" -complete -c hashcat -l outfile-format -xa "(__fish_complete_list , __fish_hashcat_outfile_formats)" -d "Outfile formats to use" +complete -c hashcat -l outfile-format -xa "(__fish_stripprefix='^--outfile-format=' __fish_complete_list , __fish_hashcat_outfile_formats)" -d "Outfile formats to use" complete -c hashcat -l outfile-autohex-disable -d "Disable the use of \$HEX[] in output plains" complete -c hashcat -l outfile-check-timer -x -d "Sets seconds between outfile checks" complete -c hashcat -l wordlist-autohex-disable -d "Disable the conversion of \$HEX[] from the wordlist" @@ -106,7 +106,7 @@ complete -c hashcat -l backend-ignore-metal -d "Do not try to open Metal interfa complete -c hashcat -l backend-ignore-opencl -d "Do not try to open OpenCL interface on startup" complete -c hashcat -s I -l backend-info -d "Show info about detected backend API devices" complete -c hashcat -s d -l backend-devices -x -d "Backend devices to use" -complete -c hashcat -s D -l opencl-device-types -xa "(__fish_complete_list , __fish_hashcat_device_types)" -d "OpenCL device-types to use" +complete -c hashcat -s D -l opencl-device-types -xa "(__fish_stripprefix='^(--opencl-device-types=|-\w*D)' __fish_complete_list , __fish_hashcat_device_types)" -d "OpenCL device-types to use" complete -c hashcat -s O -l optimized-kernel-enable -d "Enable optimized kernels (limits password length)" complete -c hashcat -s M -l multiply-accel-disable -d "Disable multiply kernel-accel with processor count" complete -c hashcat -s w -l workload-profile -d "Enable a specific workload profile" -xa " diff --git a/share/completions/john.fish b/share/completions/john.fish index 4b8626368..7a8d77ae0 100644 --- a/share/completions/john.fish +++ b/share/completions/john.fish @@ -9,7 +9,7 @@ function __fish_john_formats --description "Print JohnTheRipper hash formats" end complete -c john -l help -d "print usage summary" -complete -c john -l single -fa "(__fish_complete_list , __fish_john_rules)" -d "single crack mode" +complete -c john -l single -fa "(__fish_stripprefix='^--single=' __fish_complete_list , __fish_john_rules)" -d "single crack mode" complete -c john -l single-seed -rf -d "add static seed word(s) for all salts in single mode" complete -c john -l single-wordlist -rF -d "short wordlist with static seed words/morphemes" complete -c john -l single-user-seed -rF -d "wordlist with seeds per username" @@ -35,8 +35,8 @@ complete -c john -l prince-case-permute -d "permute case of first letter" complete -c john -l prince-mmap -d "memory-map infile" complete -c john -l prince-keyspace -d "just show total keyspace that would be produced" complete -c john -l encoding -l input-encoding -fa "$__fish_john_encodings" -d "input encoding" -complete -c john -l rules -fa "(__fish_complete_list , __fish_john_rules)" -d "enable word mangling rules" -complete -c john -l rules-stack -fa "(__fish_complete_list , __fish_john_rules)" -d "stacked rules" +complete -c john -l rules -fa "(__fish_stripprefix='^--rules=' __fish_complete_list , __fish_john_rules)" -d "enable word mangling rules" +complete -c john -l rules-stack -fa "(__fish_stripprefix='^--rules-stack=' __fish_complete_list , __fish_john_rules)" -d "stacked rules" complete -c john -l rules-skip-nop -d "skip any NOP rules" complete -c john -l incremental -fa "(john --list=inc-modes 2>/dev/null)" -d "incremental mode" complete -c john -l incremental-charcount -rf -d "override CharCount for incremental mode" @@ -97,4 +97,4 @@ complete -c john -l internal-codepage -fa "$__fish_john_encodings" -d "codepage complete -c john -l target-encoding -fa "$__fish_john_encodings" -d "output encoding" complete -c john -l tune -fa "auto report N" -d "tuning options" complete -c john -l force-tty -d "set up terminal for reading keystrokes" -complete -c john -l format -fa "(__fish_complete_list , __fish_john_formats)" -d "force hash type" +complete -c john -l format -fa "(__fish_stripprefix='^--format=' __fish_complete_list , __fish_john_formats)" -d "force hash type" diff --git a/share/completions/losetup.fish b/share/completions/losetup.fish index 0a57c7370..046f9f910 100644 --- a/share/completions/losetup.fish +++ b/share/completions/losetup.fish @@ -41,7 +41,7 @@ complete -c losetup -s v -l verbose -d "Verbose mode" complete -c losetup -s J -l json -d "Use JSON --list output format" complete -c losetup -s l -l list -d "List info about all or specified" complete -c losetup -s n -l noheadings -d "Don't print headings for --list output" -complete -c losetup -s O -l output -x -a "(__fish_complete_list , __fish_print_losetup_list_output)" -d "Specify columns to output for --list" +complete -c losetup -s O -l output -x -a "(__fish_stripprefix='^(--output=|-\w*O)' __fish_complete_list , __fish_print_losetup_list_output)" -d "Specify columns to output for --list" complete -c losetup -l output-all -d "Output all columns" complete -c losetup -l raw -d "Use raw --list output format" complete -c losetup -s h -l help -d "Display help" diff --git a/share/completions/lpadmin.fish b/share/completions/lpadmin.fish index 844b958c9..3858b194a 100644 --- a/share/completions/lpadmin.fish +++ b/share/completions/lpadmin.fish @@ -25,7 +25,7 @@ complete -c lpadmin -s o -xa printer-is-shared=true -d 'Sets dest to shared/publ complete -c lpadmin -s o -xa printer-is-shared=false -d 'Sets dest to shared/published or unshared/unpublished' complete -c lpadmin -s o -d 'Set IPP operation policy associated with dest' -xa "printer-policy=(test -r /etc/cups/cupsd.conf; and string replace -r --filter '' '$1' < /etc/cups/cupsd.conf)" -complete -c lpadmin -s u -xa 'allow:all allow:none (__fish_complete_list , __fish_complete_users allow:)' -d 'Sets user-level access control on a destination' -complete -c lpadmin -s u -xa '(__fish_complete_list , __fish_complete_groups allow: @)' -d 'Sets user-level access control on a destination' -complete -c lpadmin -s u -xa 'deny:all deny:none (__fish_complete_list , __fish_complete_users deny:)' -d 'Sets user-level access control on a destination' -complete -c lpadmin -s u -xa '(__fish_complete_list , __fish_complete_groups deny: @)' -d 'Sets user-level access control on a destination' +complete -c lpadmin -s u -xa "allow:all allow:none (__fish_stripprefix='^-\w*u' __fish_complete_list , __fish_complete_users allow:)" -d 'Sets user-level access control on a destination' +complete -c lpadmin -s u -xa "(__fish_stripprefix='^-\w*u' __fish_complete_list , __fish_complete_groups allow: @)" -d 'Sets user-level access control on a destination' +complete -c lpadmin -s u -xa "deny:all deny:none (__fish_stripprefix='^-\w*u' __fish_complete_list , __fish_complete_users deny:)" -d 'Sets user-level access control on a destination' +complete -c lpadmin -s u -xa "(__fish_stripprefix='^-\w*u' __fish_complete_list , __fish_complete_groups deny: @)" -d 'Sets user-level access control on a destination' diff --git a/share/completions/lsblk.fish b/share/completions/lsblk.fish index 21fab0c0a..3d8284f04 100644 --- a/share/completions/lsblk.fish +++ b/share/completions/lsblk.fish @@ -12,7 +12,7 @@ complete -c lsblk -s h -l help -d "usage information (this)" complete -c lsblk -s i -l ascii -d "use ascii characters only" complete -c lsblk -s m -l perms -d "output info about permissions" complete -c lsblk -s n -l noheadings -d "don't print headings" -complete -c lsblk -s o -l output -d "output columns" -xa '( __fish_complete_list , __fish_print_lsblk_columns )' +complete -c lsblk -s o -l output -d "output columns" -xa "(__fish_stripprefix='^(--output=|-\w*o)' __fish_complete_list , __fish_print_lsblk_columns)" complete -c lsblk -s P -l pairs -d "use key='value' output format" complete -c lsblk -s r -l raw -d "use raw output format" complete -c lsblk -s t -l topology -d "output info about topology" diff --git a/share/completions/lsof.fish b/share/completions/lsof.fish index 4695e9a77..37452305f 100644 --- a/share/completions/lsof.fish +++ b/share/completions/lsof.fish @@ -11,9 +11,9 @@ i\t"ignore the device cache file" r\t"read the device cache file" u\t"read and update the device cache file"' -complete -c lsof -s g -d 'select by group (^ - negates)' -xa '(__fish_complete_list , __fish_complete_groups)' +complete -c lsof -s g -d 'select by group (^ - negates)' -xa "(__fish_stripprefix='^-\w*g' __fish_complete_list , __fish_complete_groups)" complete -c lsof -s l -d 'Convert UIDs to login names' -complete -c lsof -s p -d 'Select or exclude processes by pid' -xa '(__fish_complete_list , __fish_complete_pids)' +complete -c lsof -s p -d 'Select or exclude processes by pid' -xa "(__fish_stripprefix='^-\w*p' __fish_complete_list , __fish_complete_pids)" complete -c lsof -s R -d 'Print PPID' complete -c lsof -s t -d 'Produce terse output (pids only, no header)' -complete -c lsof -s u -d 'select by user (^ - negates)' -xa '(__fish_complete_list , __fish_complete_users)' +complete -c lsof -s u -d 'select by user (^ - negates)' -xa "(__fish_stripprefix='^-\w*u' __fish_complete_list , __fish_complete_users)" diff --git a/share/completions/ncat.fish b/share/completions/ncat.fish index 7a34087dd..8a23d2120 100644 --- a/share/completions/ncat.fish +++ b/share/completions/ncat.fish @@ -35,7 +35,7 @@ function __fish_complete_openssl_ciphers printf "%s\tCipher String\n" $cs end end -complete -c ncat -l ssl-ciphers -x -a "(__fish_complete_list : __fish_complete_openssl_ciphers)" -d "Specify SSL ciphersuites" +complete -c ncat -l ssl-ciphers -x -a "(__fish_stripprefix='^--ssl-ciphers=' __fish_complete_list : __fish_complete_openssl_ciphers)" -d "Specify SSL ciphersuites" complete -c ncat -l ssl-servername -x -a "(__fish_print_hostnames)" -d "Request distinct server name" complete -c ncat -l ssl-alpn -x -d "Specify ALPN protocol list" diff --git a/share/completions/nmap.fish b/share/completions/nmap.fish index a163bedd1..cb149666d 100644 --- a/share/completions/nmap.fish +++ b/share/completions/nmap.fish @@ -92,11 +92,11 @@ function __fish_complete_nmap_script end echo -e $__fish_nmap_script_completion_cache end -complete -c nmap -l script -r -a "(__fish_complete_list , __fish_complete_nmap_script)" +complete -c nmap -l script -r -a "(__fish_stripprefix='^--script=' __fish_complete_list , __fish_complete_nmap_script)" complete -c nmap -l script -r -d 'Runs a script scan' complete -c nmap -l script-args -d 'provide arguments to NSE scripts' complete -c nmap -l script-args-file -r -d 'load arguments to NSE scripts from a file' -complete -c nmap -l script-help -r -a "(__fish_complete_list , __fish_complete_nmap_script)" +complete -c nmap -l script-help -r -a "(__fish_stripprefix='^--script-help=' __fish_complete_list , __fish_complete_nmap_script)" complete -c nmap -l script-help -r -d "Shows help about scripts" complete -c nmap -l script-trace complete -c nmap -l script-updatedb diff --git a/share/completions/ps.fish b/share/completions/ps.fish index 37ee5637d..1eecc563a 100644 --- a/share/completions/ps.fish +++ b/share/completions/ps.fish @@ -10,7 +10,7 @@ if test "$gnu_linux" -eq 1 # Some short options are GNU-only complete -c ps -s a -d "Select all processes except session leaders and terminal-less" complete -c ps -s A -d "Select all" - complete -c ps -s C -d "Select by command" -ra '(__fish_complete_list , __fish_complete_proc)' + complete -c ps -s C -d "Select by command" -ra "(__fish_stripprefix='^-\w*C' __fish_complete_list , __fish_complete_proc)" complete -c ps -s c -d 'Show different scheduler information for the -l option' complete -c ps -s d -d "Select all processes except session leaders" complete -c ps -s e -d "Select all" @@ -24,9 +24,9 @@ if test "$gnu_linux" -eq 1 complete -c ps -s m -d 'Show threads after processes' complete -c ps -s N -d "Invert selection" complete -c ps -s n -d "Set namelist file" -r - complete -c ps -s s -l sid -d "Select by session ID" -x -a "(__fish_complete_list , __fish_complete_pids)" + complete -c ps -s s -l sid -d "Select by session ID" -x -a "(__fish_stripprefix='^(--sid=|-\w*s)' __fish_complete_list , __fish_complete_pids)" complete -c ps -s T -d "Show threads. With SPID" - complete -c ps -s u -l user -d "Select by user" -x -a "(__fish_complete_list , __fish_complete_users)" + complete -c ps -s u -l user -d "Select by user" -x -a "(__fish_stripprefix='^(--script=|-\w*u)' __fish_complete_list , __fish_complete_users)" complete -c ps -s V -l version -d "Display version and exit" complete -c ps -s y -d "Do not show flags" @@ -39,7 +39,7 @@ if test "$gnu_linux" -eq 1 complete -c ps -l info -d "Display debug info" complete -c ps -l lines -l rows -d "Set screen height" -r complete -c ps -l no-headers -d 'Print no headers' - complete -c ps -l ppid -d "Select by parent PID" -x -a "(__fish_complete_list , __fish_complete_pids)" + complete -c ps -l ppid -d "Select by parent PID" -x -a "(__fish_stripprefix='^--ppid=' __fish_complete_list , __fish_complete_pids)" complete -c ps -l sort -d 'Specify sort order' -r else # Assume BSD options otherwise @@ -81,6 +81,6 @@ end complete -c ps -s o -lformat$bsd_null -d "User defined format" -x complete -c ps -s Z -lcontext$bsd_null -d "Include security info" complete -c ps -s t -ltty$bsd_null -d "Select by tty" -r -complete -c ps -s G -lgroup$bsd_null -d "Select by group" -x -a "(__fish_complete_list , __fish_complete_groups)" -complete -c ps -s U -luser$bsd_null -d "Select by user" -x -a "(__fish_complete_list , __fish_complete_users)" -complete -c ps -s p -lpid$bsd_null -d "Select by PID" -x -a "(__fish_complete_list , __fish_complete_pids)" +complete -c ps -s G -lgroup$bsd_null -d "Select by group" -x -a "(__fish_stripprefix='^(--group=|-\w*G)' __fish_complete_list , __fish_complete_groups)" +complete -c ps -s U -luser$bsd_null -d "Select by user" -x -a "(__fish_stripprefix='^(--user=|-\w*U)' __fish_complete_list , __fish_complete_users)" +complete -c ps -s p -lpid$bsd_null -d "Select by PID" -x -a "(__fish_stripprefix='^(--pid=|-\w*p)' __fish_complete_list , __fish_complete_pids)" diff --git a/share/completions/setxkbmap.fish b/share/completions/setxkbmap.fish index 96aeed77d..79e0b325f 100644 --- a/share/completions/setxkbmap.fish +++ b/share/completions/setxkbmap.fish @@ -15,7 +15,7 @@ complete -c setxkbmap -o keycodes -d 'Specifies keycodes component name' -xa "(s complete -c setxkbmap -o keymap -d 'Specifies name of keymap to load' -xa "(sed -r $filter /usr/share/X11/xkb/keymap.dir)" complete -c setxkbmap -o layout -d 'Specifies layout used to choose component names' -xa "(__fish_complete_setxkbmap layout)" complete -c setxkbmap -o model -d 'Specifies model used to choose component names' -xa "(__fish_complete_setxkbmap model)" -complete -c setxkbmap -o option -d 'Adds an option used to choose component names' -xa "(__fish_complete_list , '__fish_complete_setxkbmap option')" +complete -c setxkbmap -o option -d 'Adds an option used to choose component names' -xa "(__fish_stripprefix='^--option=' __fish_complete_list , '__fish_complete_setxkbmap option')" complete -c setxkbmap -o print -d 'Print a complete xkb_keymap description and exit' complete -c setxkbmap -o query -d 'Print the current layout settings and exit' complete -c setxkbmap -o rules -d 'Name of rules file to use' -x diff --git a/share/completions/ssh.fish b/share/completions/ssh.fish index 9caa53f28..d5707e44d 100644 --- a/share/completions/ssh.fish +++ b/share/completions/ssh.fish @@ -25,7 +25,7 @@ complete -c ssh -s k -d "Disables forwarding of GSSAPI credentials" complete -c ssh -s L -d "Specify local port forwarding" -x complete -c ssh -s l -x -a "(__fish_complete_users)" -d User complete -c ssh -s M -d "Places the ssh client into master mode" -complete -c ssh -s m -d "MAC algorithm" -xa "(__fish_complete_list , __fish_ssh_macs)" +complete -c ssh -s m -d "MAC algorithm" -xa "(__fish_stripprefix='^-\w*m' __fish_complete_list , __fish_ssh_macs)" complete -c ssh -s N -d "Do not execute remote command" complete -c ssh -s n -d "Prevent reading from stdin" complete -c ssh -s O -d "Control an active connection multiplexing master process" -x diff --git a/share/completions/su.fish b/share/completions/su.fish index ec2a3cd62..fbc902bd7 100644 --- a/share/completions/su.fish +++ b/share/completions/su.fish @@ -12,6 +12,6 @@ complete -c su -s G -l supp-group -x -a "(__fish_complete_groups)" -d "Specify a complete -c su -s m -s p -l preserve_environment -d "Preserve environment" complete -c su -s P -l pty -d "Create pseudo-terminal for the session" complete -c su -s s -l shell -x -a "(cat /etc/shells)" -d "Run the specified shell" -complete -c su -s w -l whitelist-environment -x -a "(__fish_complete_list , __fish_complete_su_env_whitelist)" -d "Don't reset these environment variables" +complete -c su -s w -l whitelist-environment -x -a "(__fish_stripprefix='^(--whitelist-environment=|-\w*w)' __fish_complete_list , __fish_complete_su_env_whitelist)" -d "Don't reset these environment variables" complete -c su -s h -l help -d "Display help and exit" complete -c su -s V -l version -d "Display version and exit" diff --git a/share/completions/systemd-cryptenroll.fish b/share/completions/systemd-cryptenroll.fish index 1577fb5dd..a530e88d3 100644 --- a/share/completions/systemd-cryptenroll.fish +++ b/share/completions/systemd-cryptenroll.fish @@ -40,6 +40,6 @@ complete -c systemd-cryptenroll -l fido2-with-user-presence -xa "yes no" -d "Req complete -c systemd-cryptenroll -l fido2-with-user-verification -xa "yes no" -d "Require user verification when unlocking the volume" complete -c systemd-cryptenroll -l tpm2-device -kxa "(__fish_cryptenroll_tpm2_devices)" -d "Enroll a TPM2 security chip" complete -c systemd-cryptenroll -l tpm2-pcrs -x -d "Bind the enrollment of TPM2 device to specified PCRs" -complete -c systemd-cryptenroll -l wipe-slot -kxa "(__fish_complete_list , __fish_cryptenroll_complete_wipe)" -d "Wipes one or more LUKS2 key slots" +complete -c systemd-cryptenroll -l wipe-slot -kxa "(__fish_stripprefix='^--wipe-slot=' __fish_complete_list , __fish_cryptenroll_complete_wipe)" -d "Wipes one or more LUKS2 key slots" complete -c systemd-cryptenroll -l help -s h -d "Print a short help" complete -c systemd-cryptenroll -l version -d "Print a short version string" diff --git a/share/completions/usermod.fish b/share/completions/usermod.fish index f457e9b6a..b0cce3a8c 100644 --- a/share/completions/usermod.fish +++ b/share/completions/usermod.fish @@ -5,7 +5,7 @@ complete -c usermod -s d -l home -d "Change user's login directory" -r complete -c usermod -s e -l expiredate -d "Date (YYYY-MM-DD) on which the user account will be disabled" -x complete -c usermod -s f -l inactive -d "Number of days after a password expires until the account is locked" -xa "(seq 0 365)" complete -c usermod -s g -l gid -d "Group name or number of the user's new initial login group" -xa "(__fish_complete_groups)" -complete -c usermod -s G -l groups -d "List of groups which the user is also a member of" -xa "(__fish_complete_list , __fish_complete_groups)" +complete -c usermod -s G -l groups -d "List of groups which the user is also a member of" -xa "(__fish_stripprefix='^(--groups=|-\w*G)' __fish_complete_list , __fish_complete_groups)" complete -c usermod -s l -l login -d "Change user's name" -x complete -c usermod -s L -l lock -d "Lock user's password" -f complete -c usermod -s m -l move-home -d "Move the content of the user's home directory to the new location" -f diff --git a/share/completions/xbps-query.fish b/share/completions/xbps-query.fish index ef614e68d..c69495210 100644 --- a/share/completions/xbps-query.fish +++ b/share/completions/xbps-query.fish @@ -50,7 +50,7 @@ complete -c $progname -s d -d 'Enable extra debugging shown to stderr' complete -c $progname -s h -d 'Show the help message' complete -c $progname -s i -d 'Ignore repositories defined in configuration files' complete -c $progname -s M -d 'For remote repositories, the data is fetched and stored in memory only' -complete -c $progname -s p -d 'Match one or more package properties' -xa "(__fish_complete_list , __fish_print_xbps_pkg_props)" +complete -c $progname -s p -d 'Match one or more package properties' -xa "(__fish_stripprefix='^-\w*p' __fish_complete_list , __fish_print_xbps_pkg_props)" complete -c $progname -s R -d 'Enable repository mode' complete -c $progname -l repository -d 'Append the specified repository to the top of the list' complete -c $progname -l regex -d 'Use Extended Regular Expressions' diff --git a/share/functions/__fish_complete_list.fish b/share/functions/__fish_complete_list.fish index 2d55c535e..758489572 100644 --- a/share/functions/__fish_complete_list.fish +++ b/share/functions/__fish_complete_list.fish @@ -14,7 +14,9 @@ where: set -q prefix[1] or set -l prefix "" set -l pat "$(commandline -t)" - #set -l pat $argv[5] + if set -q __fish_stripprefix[1] + set pat "$(string replace -r -- "$__fish_stripprefix" "" $pat)" + end switch $pat case "*$div*" for i in (echo $pat | sed "s/^\(.\+$div\)$iprefix.*\$/\1/")$iprefix(eval $cmd) diff --git a/share/functions/__fish_complete_pgrep.fish b/share/functions/__fish_complete_pgrep.fish index b74b7dc39..5b632a632 100644 --- a/share/functions/__fish_complete_pgrep.fish +++ b/share/functions/__fish_complete_pgrep.fish @@ -1,15 +1,15 @@ function __fish_complete_pgrep -d 'Complete pgrep/pkill' --argument-names cmd complete -c $cmd -xa '(__fish_complete_proc)' complete -c $cmd -s f -d 'Match pattern against full command line' - complete -c $cmd -s g -d 'Only match processes in the process group' -xa '(__fish_complete_list , __fish_complete_groups)' - complete -c $cmd -s G -d "Only match processes whose real group ID is listed. Group 0 is translated into $cmd\'s own process group" -xa '(__fish_complete_list , __fish_complete_groups)' + complete -c $cmd -s g -d 'Only match processes in the process group' -xa "(__fish_stripprefix='^-\w*g' __fish_complete_list , __fish_complete_groups)" + complete -c $cmd -s G -d "Only match processes whose real group ID is listed. Group 0 is translated into $cmd\'s own process group" -xa "(__fish_stripprefix='^-\w*G' __fish_complete_list , __fish_complete_groups)" complete -c $cmd -s n -d 'Select only the newest process' complete -c $cmd -s o -d 'Select only the oldest process' - complete -c $cmd -s P -d 'Only match processes whose parent process ID is listed' -xa '(__fish_complete_list , __fish_complete_pids)' + complete -c $cmd -s P -d 'Only match processes whose parent process ID is listed' -xa "(__fish_stripprefix='^-\w*P' __fish_complete_list , __fish_complete_pids)" complete -c $cmd -s s -d "Only match processes whose process session ID is listed. Session ID 0 is translated into $cmd\'s own session ID." complete -c $cmd -s t -d 'Only match processes whose controlling terminal is listed. The terminal name should be specified without the "/dev/" prefix' -r - complete -c $cmd -s u -d 'Only match processes whose effective user ID is listed' -xa '(__fish_complete_list , __fish_complete_users)' - complete -c $cmd -s U -d 'Only match processes whose real user ID is listed' -xa '(__fish_complete_list , __fish_complete_users)' + complete -c $cmd -s u -d 'Only match processes whose effective user ID is listed' -xa "(__fish_stripprefix='^-\w*u' __fish_complete_list , __fish_complete_users)" + complete -c $cmd -s U -d 'Only match processes whose real user ID is listed' -xa "(__fish_stripprefix='^-\w*U' __fish_complete_list , __fish_complete_users)" complete -c $cmd -s v -d 'Negates the matching' complete -c $cmd -s x -d ' Only match processes whose name (or command line if -f is specified) exactly match the pattern' end diff --git a/share/functions/__fish_complete_ssh.fish b/share/functions/__fish_complete_ssh.fish index a628429a0..69d7a5c8e 100644 --- a/share/functions/__fish_complete_ssh.fish +++ b/share/functions/__fish_complete_ssh.fish @@ -3,7 +3,7 @@ function __fish_complete_ssh -d "common completions for ssh commands" --argument complete -c $command -s 6 -d "IPv6 only" complete -c $command -s A -d "Enables forwarding of the authentication agent" complete -c $command -s C -d "Compress all data" - complete -c $command -s c -d "Encryption algorithm" -xa "(__fish_complete_list , __fish_ssh_ciphers)" + complete -c $command -s c -d "Encryption algorithm" -xa "(__fish_stripprefix='^-\w*c' __fish_complete_list , __fish_ssh_ciphers)" complete -c $command -s F -d "Configuration file" -rF complete -c $command -s i -d "Identity key file" -rF complete -c $command -s J -d 'ProxyJump host' -xa "(__fish_complete_user_at_hosts)" diff --git a/tests/checks/complete.fish b/tests/checks/complete.fish index e8d904d7f..739d675e6 100644 --- a/tests/checks/complete.fish +++ b/tests/checks/complete.fish @@ -635,3 +635,15 @@ complete -C'testcommand ' abbr cat cat complete -C ca | string match -r '^cat(?:\t.*)?$' # CHECK: cat{{\t}}Abbreviation: cat + +complete complete-list -xa '(__fish_complete_list , "seq 2")' +complete -C "complete-list 1," +# CHECK: 1,1 +# CHECK: 1,2 +complete complete-list -s l -l number-list -xa '(__fish_stripprefix="^(--number-list=|-\w*l)" __fish_complete_list , "seq 2")' +complete -C "complete-list --number-list=1," +# CHECK: --number-list=1,1 +# CHECK: --number-list=1,2 +complete -C "complete-list -abcl1," +# CHECK: -abcl1,1 +# CHECK: -abcl1,2