reformat all fish scripts

I hate doing this but I am tired of touching a fish script as part of
some change and having `make style` radically change it. Which makes
editing fish scripts more painful than it needs to be. It is time to do
a wholesale reformatting of these scripts to conform to the documented
style as implemented by the `fish_indent` program.
This commit is contained in:
Kurtis Rader 2016-11-27 21:27:22 -08:00
parent 54a76bb9e5
commit 11a60c8374
161 changed files with 2638 additions and 2587 deletions

View file

@ -1,6 +1,6 @@
function N_ --description "No-op"
printf "%s" $argv
printf "%s" $argv
end

View file

@ -1,7 +1,7 @@
function __fish_append -d "Internal completion function for appending string to the commandline" --argument separator
set -e argv[1]
set str (commandline -tc| sed -ne "s/\(.*$separator\)[^$separator]*/\1/p"|sed -e "s/--.*=//")
printf "%s\n" "$str"$argv "$str"(printf "%s\n" $argv|sed -e "s/\(\t\|\$\)/,\1/")
set -e argv[1]
set str (commandline -tc| sed -ne "s/\(.*$separator\)[^$separator]*/\1/p"|sed -e "s/--.*=//")
printf "%s\n" "$str"$argv "$str"(printf "%s\n" $argv|sed -e "s/\(\t\|\$\)/,\1/")
end

View file

@ -5,21 +5,21 @@ function __fish_bind_test1
for i in (commandline -poc)
switch $i
case -k --k --ke --key
set use_keys yes
set use_keys yes
case "-*"
case "*"
set args $args $i
set args $args $i
end
end
switch $use_keys
case yes
switch (count $args)
case 1
return 0
end
switch (count $args)
case 1
return 0
end
end
return 1
end

View file

@ -1,20 +1,20 @@
function __fish_bind_test2
set -l args
for i in (commandline -poc)
switch $i
case "-*"
set -l args
for i in (commandline -poc)
switch $i
case "-*"
case "*"
set args $args $i
end
end
case "*"
set args $args $i
end
end
switch (count $args)
case 2
return 0
end
switch (count $args)
case 2
return 0
end
return 1
return 1
end

View file

@ -5,10 +5,10 @@ function __fish_commandline_test
for i in (commandline -poc)
switch $i
case -f --f --fu --fun --func --funct --functi --functio --function
set is_function yes
set is_function yes
case --
break
break
end
@ -16,7 +16,7 @@ function __fish_commandline_test
switch $is_function
case yes
return 0
return 0
end
return 1

View file

@ -2,11 +2,11 @@ function __fish_complete_abook_formats --description 'Complete abook formats'
set -l pat
switch $argv[1]
case in
set pat '/output:/,$d; /input:\|^$/d'
set pat '/output:/,$d; /input:\|^$/d'
case out
set pat '/input:/,/output:/d; /^$/d'
set pat '/input:/,/output:/d; /^$/d'
case '*'
return 1
return 1
end
abook --formats | sed -e $pat -e 's/^\s\+//'

View file

@ -1,15 +1,16 @@
function __fish_complete_ant_targets -d "Print list of targets from build.xml and imported files"
set -l buildfile "build.xml"
if test -f $buildfile
# show ant targets
__fish_filter_ant_targets $buildfile
set -l buildfile "build.xml"
if test -f $buildfile
# show ant targets
__fish_filter_ant_targets $buildfile
# find files with buildfile
set files (sed -n "s/^.*<import[^>]* file=[\"']\([^\"']*\)[\"'].*\$/\1/p" < $buildfile)
# find files with buildfile
set files (sed -n "s/^.*<import[^>]* file=[\"']\([^\"']*\)[\"'].*\$/\1/p" < $buildfile)
# iterate through files and display their targets
for file in $files;
__fish_filter_ant_targets $file
end
end
# iterate through files and display their targets
for file in $files
__fish_filter_ant_targets $file
end
end
end

View file

@ -1,20 +1,20 @@
function __fish_complete_atool_archive_contents --description 'List archive contents'
set -l cmd (commandline -cop)
set -e cmd[1]
set -l file
for arg in $cmd
switch $arg
case '-*'
case '*'
if test -f $arg
set file $arg
break
end
end
end
if not set -q file[1]
return
end
als $file -qq | sed -r 's/^\s*[0-9]+\s+[0-9-]+\s+[0-9:]+\s+(.*)$/\1/'
set -l cmd (commandline -cop)
set -e cmd[1]
set -l file
for arg in $cmd
switch $arg
case '-*'
case '*'
if test -f $arg
set file $arg
break
end
end
end
if not set -q file[1]
return
end
als $file -qq | sed -r 's/^\s*[0-9]+\s+[0-9-]+\s+[0-9:]+\s+(.*)$/\1/'
end

View file

@ -1,33 +1,33 @@
# Bittorrent commands
function __fish_complete_bittorrent
complete -c $argv -l max_uploads -x --description "Maximum uploads at once"
complete -c $argv -l keepalive_interval -x --description "Number of seconds between keepalives"
complete -c $argv -l download_slice_size -x --description "Bytes per request"
complete -c $argv -l request_backlog -x --description "Requests per pipe"
complete -c $argv -l max_message_length -x --description "Maximum length prefix encoding"
complete -c $argv -l ip --description "IP to report to the tracker" -x -a "(__fish_print_addresses)"
complete -c $argv -l minport --description "Minimum port to listen to"
complete -c $argv -l maxport --description "Maximum port to listen to"
complete -c $argv -l responsefile -r --description "File for server response"
complete -c $argv -l url -x --description "URL to get file from"
complete -c $argv -l saveas -r --description "Local file target"
complete -c $argv -l timeout -x --description "Time to close inactive socket"
complete -c $argv -l timeout_check_interval -x --description "Time between checking timeouts"
complete -c $argv -l max_slice_length -x --description "Maximum outgoing slice length"
complete -c $argv -l max_rate_period -x --description "Maximum time to guess rate"
complete -c $argv -l bind -x --description "IP to bind to locally" -a "(__fish_print_addresses)"
complete -c $argv -l display_interval -x --description "Time between screen updates"
complete -c $argv -l rerequest_interval -x --description "Time to wait between requesting more peers"
complete -c $argv -l min_peers -x --description "Minimum number of peers to not do requesting"
complete -c $argv -l http_timeout -x --description "Number of seconds before assuming http timeout"
complete -c $argv -l max_initiate -x --description "Number of peers at which to stop initiating new connections"
complete -c $argv -l max_allow_in -x --description "Maximum number of connections to allow"
complete -c $argv -l check_hashes -x --description "Whether to check hashes on disk"
complete -c $argv -l max_upload_rate -x --description "Maximum kB/s to upload at"
complete -c $argv -l snub_time -x --description "Seconds to wait for data to come in before assuming choking"
complete -c $argv -l spew -x --description "Whether to display diagnostic info"
complete -c $argv -l rarest_first_cutoff -x --description "Number of downloads at which to switch from random to rarest first"
complete -c $argv -l min_uploads -x --description "Number of uploads to fill out to with optimistic unchokes"
complete -c $argv -l report_hash_failiures -x --description "Whether to inform the user that hash failures occur"
complete -c $argv -l max_uploads -x --description "Maximum uploads at once"
complete -c $argv -l keepalive_interval -x --description "Number of seconds between keepalives"
complete -c $argv -l download_slice_size -x --description "Bytes per request"
complete -c $argv -l request_backlog -x --description "Requests per pipe"
complete -c $argv -l max_message_length -x --description "Maximum length prefix encoding"
complete -c $argv -l ip --description "IP to report to the tracker" -x -a "(__fish_print_addresses)"
complete -c $argv -l minport --description "Minimum port to listen to"
complete -c $argv -l maxport --description "Maximum port to listen to"
complete -c $argv -l responsefile -r --description "File for server response"
complete -c $argv -l url -x --description "URL to get file from"
complete -c $argv -l saveas -r --description "Local file target"
complete -c $argv -l timeout -x --description "Time to close inactive socket"
complete -c $argv -l timeout_check_interval -x --description "Time between checking timeouts"
complete -c $argv -l max_slice_length -x --description "Maximum outgoing slice length"
complete -c $argv -l max_rate_period -x --description "Maximum time to guess rate"
complete -c $argv -l bind -x --description "IP to bind to locally" -a "(__fish_print_addresses)"
complete -c $argv -l display_interval -x --description "Time between screen updates"
complete -c $argv -l rerequest_interval -x --description "Time to wait between requesting more peers"
complete -c $argv -l min_peers -x --description "Minimum number of peers to not do requesting"
complete -c $argv -l http_timeout -x --description "Number of seconds before assuming http timeout"
complete -c $argv -l max_initiate -x --description "Number of peers at which to stop initiating new connections"
complete -c $argv -l max_allow_in -x --description "Maximum number of connections to allow"
complete -c $argv -l check_hashes -x --description "Whether to check hashes on disk"
complete -c $argv -l max_upload_rate -x --description "Maximum kB/s to upload at"
complete -c $argv -l snub_time -x --description "Seconds to wait for data to come in before assuming choking"
complete -c $argv -l spew -x --description "Whether to display diagnostic info"
complete -c $argv -l rarest_first_cutoff -x --description "Number of downloads at which to switch from random to rarest first"
complete -c $argv -l min_uploads -x --description "Number of uploads to fill out to with optimistic unchokes"
complete -c $argv -l report_hash_failiures -x --description "Whether to inform the user that hash failures occur"
end

View file

@ -1,32 +1,36 @@
function __fish_complete_cd -d "Completions for the cd command"
set -l token (commandline -ct)
# Absolute path or explicitly from the current directory - no descriptions and no CDPATH
if string match -qr '^\.?\.?/.*' -- $token
for d in $token*/
# Check if it's accessible - the glob only matches directories
[ -x $d ]; and printf "%s\n" $d
end
else # Relative path - check $CDPATH and use that as description
set -l cdpath $CDPATH
[ -z "$cdpath" ]; and set cdpath "."
# Remove the real path to "." (i.e. $PWD) from cdpath if we're in it
# so it doesn't get printed in the descriptions
if set -l ind (contains -i -- $PWD $cdpath)
and contains -- "." $cdpath
set -e cdpath[$ind]
end
# TODO: There's a subtlety regarding descriptions - if $cdpath[1]/foo and $cdpath[2]/foo exist, we print both
# but want the first description to win - this currently works, but is not guaranteed
for i in $cdpath
set -l desc
# Don't show description for current directory
# and replace $HOME with "~"
[ $i = "." ]; or set -l desc (string replace -r -- "^$HOME" "~" "$i")
# This assumes the CDPATH component itself is cd-able
for d in $i/$token*/
# Remove the cdpath component again
[ -x $d ]; and printf "%s\t%s\n" (string replace -r "^$i/" "" -- $d) $desc
end
end
end
set -l token (commandline -ct)
# Absolute path or explicitly from the current directory - no descriptions and no CDPATH
if string match -qr '^\.?\.?/.*' -- $token
for d in $token*/
# Check if it's accessible - the glob only matches directories
[ -x $d ]
and printf "%s\n" $d
end
else # Relative path - check $CDPATH and use that as description
set -l cdpath $CDPATH
[ -z "$cdpath" ]
and set cdpath "."
# Remove the real path to "." (i.e. $PWD) from cdpath if we're in it
# so it doesn't get printed in the descriptions
if set -l ind (contains -i -- $PWD $cdpath)
and contains -- "." $cdpath
set -e cdpath[$ind]
end
# TODO: There's a subtlety regarding descriptions - if $cdpath[1]/foo and $cdpath[2]/foo exist, we print both
# but want the first description to win - this currently works, but is not guaranteed
for i in $cdpath
set -l desc
# Don't show description for current directory
# and replace $HOME with "~"
[ $i = "." ]
or set -l desc (string replace -r -- "^$HOME" "~" "$i")
# This assumes the CDPATH component itself is cd-able
for d in $i/$token*/
# Remove the cdpath component again
[ -x $d ]
and printf "%s\t%s\n" (string replace -r "^$i/" "" -- $d) $desc
end
end
end
end

View file

@ -1,10 +1,10 @@
function __fish_complete_command --description 'Complete using all available commands'
set -l ctoken (commandline -ct)
switch $ctoken
case '*=*'
set ctoken (string split "=" -- $ctoken)
printf '%s\n' $ctoken[1]=(complete -C$ctoken[2])
case '*'
complete -C$ctoken
end
set -l ctoken (commandline -ct)
switch $ctoken
case '*=*'
set ctoken (string split "=" -- $ctoken)
printf '%s\n' $ctoken[1]=(complete -C$ctoken[2])
case '*'
complete -C$ctoken
end
end

View file

@ -1,16 +1,16 @@
function __fish_complete_convert_options --description 'Complete Convert options' --argument what
switch $what
case format Format
convert -list Format | sed '1,/----/d; /^$/,$d; /^$/d; s/^\s*\([a-zA-Z0-9-]\+\)\**\s*\S\+\s\+\\(\S\+\)\s\+\(.\+\S\)\s*$/\1\t\2 \3/'
case color Color
convert -list color | awk '{ print $1"\t"$2" "$3} ' | sed '1,/----/d'
case family
convert -list Font | grep family | sed 's/^\s*.\+: //' | sort -u
case font Font
convert -list Font | grep Font | sed 's/^\s*.\+: //' | sort -u
case '*'
convert -list $what
end
switch $what
case format Format
convert -list Format | sed '1,/----/d; /^$/,$d; /^$/d; s/^\s*\([a-zA-Z0-9-]\+\)\**\s*\S\+\s\+\\(\S\+\)\s\+\(.\+\S\)\s*$/\1\t\2 \3/'
case color Color
convert -list color | awk '{ print $1"\t"$2" "$3} ' | sed '1,/----/d'
case family
convert -list Font | grep family | sed 's/^\s*.\+: //' | sort -u
case font Font
convert -list Font | grep Font | sed 's/^\s*.\+: //' | sort -u
case '*'
convert -list $what
end
end

View file

@ -5,17 +5,17 @@
function __fish_complete_directories -d "Complete using directories" --argument comp
set desc (_ Directory)
set desc (_ Directory)
if test (count $argv) -gt 1
set desc $argv[2]
end
if test (count $argv) -gt 1
set desc $argv[2]
end
eval "set dirs "$comp"*/"
eval "set dirs "$comp"*/"
if test $dirs[1]
printf "%s\t$desc\n" $dirs
end
if test $dirs[1]
printf "%s\t$desc\n" $dirs
end
end

View file

@ -1,20 +1,20 @@
function __fish_complete_file_url
set -l comp
set -l comp
if set -q argv[1]
set comp $argv[1]
else
set comp (commandline -ct)
end
if set -q argv[1]
set comp $argv[1]
else
set comp (commandline -ct)
end
set -l prefix (echo $comp|cut -c 1-7)
set -l prefix (echo $comp|cut -c 1-7)
if test file:// = $prefix
set -l stripped (echo $comp|cut -c 8-)
printf "%s\n" file://(complete -C"echo $stripped")
else
echo file://
end
if test file:// = $prefix
set -l stripped (echo $comp|cut -c 8-)
printf "%s\n" file://(complete -C"echo $stripped")
else
echo file://
end
end

View file

@ -1,14 +1,14 @@
function __fish_complete_ftp -d 'Complete ftp, pftp' --argument-names ftp
complete -c $ftp -xa "(__fish_print_hostnames)" -d 'Hostname'
complete -c $ftp -s 4 -d 'Use only IPv4 to contact any host'
complete -c $ftp -s 6 -d 'Use IPv6 only'
complete -c $ftp -s p -d 'Use passive mode for data transfers'
complete -c $ftp -s A -d 'Use active mode for data transfers'
complete -c $ftp -s i -d 'Turn off interactive prompting during multiple file transfers.'
complete -c $ftp -s n -d 'Restrain ftp from attempting "auto-login" upon initial connection'
complete -c $ftp -s e -d 'Disable command editing and history support'
complete -c $ftp -s g -d 'Disable file name globbing'
complete -c $ftp -s m -d 'Do not explicitly bind data and control channels to same interface'
complete -c $ftp -s v -d 'Verbose. Show all server responses and data transfer stats'
complete -c $ftp -s d -d 'Enable debugging'
complete -c $ftp -xa "(__fish_print_hostnames)" -d 'Hostname'
complete -c $ftp -s 4 -d 'Use only IPv4 to contact any host'
complete -c $ftp -s 6 -d 'Use IPv6 only'
complete -c $ftp -s p -d 'Use passive mode for data transfers'
complete -c $ftp -s A -d 'Use active mode for data transfers'
complete -c $ftp -s i -d 'Turn off interactive prompting during multiple file transfers.'
complete -c $ftp -s n -d 'Restrain ftp from attempting "auto-login" upon initial connection'
complete -c $ftp -s e -d 'Disable command editing and history support'
complete -c $ftp -s g -d 'Disable file name globbing'
complete -c $ftp -s m -d 'Do not explicitly bind data and control channels to same interface'
complete -c $ftp -s v -d 'Verbose. Show all server responses and data transfer stats'
complete -c $ftp -s d -d 'Enable debugging'
end

View file

@ -1,8 +1,8 @@
function __fish_complete_groups --description "Print a list of local groups, with group members as the description"
if command -s getent >/dev/null
getent group | cut -d ':' -f 1,4 | sed 's/:/\t/'
else
cut -d ':' -f 1,4 /etc/group | sed 's/:/\t/'
end
if command -s getent >/dev/null
getent group | cut -d ':' -f 1,4 | sed 's/:/\t/'
else
cut -d ':' -f 1,4 /etc/group | sed 's/:/\t/'
end
end

View file

@ -1,30 +1,30 @@
function __fish_complete_list --argument div cmd prefix iprefix
if not set -q cmd[1]
echo "Usage:
if not set -q cmd[1]
echo "Usage:
__fish_complete_list <separator> <function> <prefix> <itemprefix>
where:
separator - a symbol, separating individual entries
function - a function which prints a completion list to complete each entry
prefix - a prefix, which is printed before the list
itemprefix - a prefix, which is printed before each item" > /dev/stderr
return 1
end
set -q iprefix[1]
or set -l iprefix ""
set -q prefix[1]
or set -l prefix ""
set -l pat (commandline -t)
#set -l pat $argv[5]
switch $pat
case "*$div*"
for i in (echo $pat | sed "s/^\(.\+$div\)$iprefix.*\$/\1/")$iprefix(eval $cmd)
echo $i
end
case '*'
for i in $prefix$iprefix(eval $cmd)
echo $i
end
end
itemprefix - a prefix, which is printed before each item" >/dev/stderr
return 1
end
set -q iprefix[1]
or set -l iprefix ""
set -q prefix[1]
or set -l prefix ""
set -l pat (commandline -t)
#set -l pat $argv[5]
switch $pat
case "*$div*"
for i in (echo $pat | sed "s/^\(.\+$div\)$iprefix.*\$/\1/")$iprefix(eval $cmd)
echo $i
end
case '*'
for i in $prefix$iprefix(eval $cmd)
echo $i
end
end
end

View file

@ -4,35 +4,35 @@ function __fish_complete_lpr -d 'Complete lpr common options' --argument-names c
switch $cmd
case lpr lpq lprm
complete -c $cmd -s P -d 'Specifies an alternate printer or class name' -xa '(__fish_print_lpr_printers)'
complete -c $cmd -s P -d 'Specifies an alternate printer or class name' -xa '(__fish_print_lpr_printers)'
end
switch $cmd
case lpq cancel
complete -c $cmd -s a -d 'Apply command to all printers'
complete -c $cmd -s a -d 'Apply command to all printers'
end
switch $cmd
case lpq cancel lpmove lpstat lprm lpoptions lp reject accept cupsaccept cupsreject cupsenable cupsdisable
complete -c $cmd -s h -d 'Specifies an alternate server' -xa '(__fish_print_hostnames)'
case lpq cancel lpmove lpstat lprm lpoptions lp reject accept cupsaccept cupsreject cupsenable cupsdisable
complete -c $cmd -s h -d 'Specifies an alternate server' -xa '(__fish_print_hostnames)'
end
switch $cmd
case lp lpr
complete -c $cmd -s o -d 'Sets a job option' -xa '(__fish_complete_lpr_option)'
complete -c $cmd -s m -d 'Send an email on job completion'
complete -c $cmd -s o -d 'Sets a job option' -xa '(__fish_complete_lpr_option)'
complete -c $cmd -s m -d 'Send an email on job completion'
complete -c $cmd -s o -xa landscape -d 'Landscape mode'
complete -c $cmd -s o -xa "media=a4 media=letter media=legal" -d 'Media size'
complete -c $cmd -s o -xa page-ranges= -d 'Page ranges'
complete -c $cmd -s o -xa orientation-requested= -d 'Choose orientation (4-landscape)'
complete -c $cmd -s o -xa 'sides-one-sided two-sided-long-edge two-sided-short-edge' -d 'Choose between one/two sided modes'
complete -c $cmd -s o -xa fitplot -d 'Scale the print file to fit on the page'
complete -c $cmd -s o -xa 'number-up=2 number-up=4 number-up=6 number-up=9' -d 'Print multiple document pages on each output page'
complete -c $cmd -s o -xa 'scaling=' -d 'Scale image files to use up to number percent of the page'
complete -c $cmd -s o -xa 'cpi=' -d 'Set the number of characters per inch to use'
complete -c $cmd -s o -xa 'lpi=' -d 'Set the number of lines per inch to use'
complete -c $cmd -s o -xa 'page-bottom= page-left= page-right= page-top=' -d 'Set the page margins when printing text files'
complete -c $cmd -s o -xa landscape -d 'Landscape mode'
complete -c $cmd -s o -xa "media=a4 media=letter media=legal" -d 'Media size'
complete -c $cmd -s o -xa page-ranges= -d 'Page ranges'
complete -c $cmd -s o -xa orientation-requested= -d 'Choose orientation (4-landscape)'
complete -c $cmd -s o -xa 'sides-one-sided two-sided-long-edge two-sided-short-edge' -d 'Choose between one/two sided modes'
complete -c $cmd -s o -xa fitplot -d 'Scale the print file to fit on the page'
complete -c $cmd -s o -xa 'number-up=2 number-up=4 number-up=6 number-up=9' -d 'Print multiple document pages on each output page'
complete -c $cmd -s o -xa 'scaling=' -d 'Scale image files to use up to number percent of the page'
complete -c $cmd -s o -xa 'cpi=' -d 'Set the number of characters per inch to use'
complete -c $cmd -s o -xa 'lpi=' -d 'Set the number of lines per inch to use'
complete -c $cmd -s o -xa 'page-bottom= page-left= page-right= page-top=' -d 'Set the page margins when printing text files'
end
end

View file

@ -1,25 +1,25 @@
function __fish_complete_lpr_option --description 'Complete lpr option'
set -l optstr (commandline -t)
switch $optstr
case '*=*'
set -l IFS =
echo $optstr | read -l opt val
set -l descr
for l in (lpoptions -l ^/dev/null | string match -- "*$opt*" | string replace -r '.*/(.*):\s*(.*)$' '$1 $2' | string split " ")
if not set -q descr[1]
set descr $l
continue
end
set -l default ''
if string match -q '\**' -- $l
set default 'Default '
set l (string sub -s 2 -- $l)
end
echo $opt=$l\t$default$descr
end
case '*'
lpoptions -l ^/dev/null | string replace -r '(.*)/(.*):.*$' '$1=\t$2'
end
set -l optstr (commandline -t)
switch $optstr
case '*=*'
set -l IFS =
echo $optstr | read -l opt val
set -l descr
for l in (lpoptions -l ^/dev/null | string match -- "*$opt*" | string replace -r '.*/(.*):\s*(.*)$' '$1 $2' | string split " ")
if not set -q descr[1]
set descr $l
continue
end
set -l default ''
if string match -q '\**' -- $l
set default 'Default '
set l (string sub -s 2 -- $l)
end
echo $opt=$l\t$default$descr
end
case '*'
lpoptions -l ^/dev/null | string replace -r '(.*)/(.*):.*$' '$1=\t$2'
end
end

View file

@ -1,3 +1,3 @@
function __fish_complete_lsusb
lsusb | awk '{print $2 ":" $4}'| cut -c1-7
lsusb | awk '{print $2 ":" $4}' | cut -c1-7
end

View file

@ -1,20 +1,20 @@
function __fish_complete_man
# Try to guess what section to search in. If we don't know, we
# use [^)]*, which should match any section
# Try to guess what section to search in. If we don't know, we
# use [^)]*, which should match any section
set section ""
set prev (commandline -poc)
set -e prev[1]
while set -q prev[1]
switch $prev[1]
case '-**'
set section ""
set prev (commandline -poc)
set -e prev[1]
while set -q prev[1]
switch $prev[1]
case '-**'
case '*'
set section $prev[1]
end
set -e prev[1]
end
case '*'
set section $prev[1]
end
set -e prev[1]
end
set section $section"[^)]*"
@ -25,9 +25,9 @@ function __fish_complete_man
set token "."
end
if test -n "$token"
# Do the actual search
apropos $token ^/dev/null | awk '
if test -n "$token"
# Do the actual search
apropos $token ^/dev/null | awk '
BEGIN { FS="[\t ]- "; OFS="\t"; }
# BSD/Darwin
/^[^( \t]+\('$section'\)/ {
@ -66,7 +66,7 @@ function __fish_complete_man
'
else
return 1
end
end
return 0
end

View file

@ -1,14 +1,14 @@
function __fish_complete_path --description "Complete using path"
set -l target
set -l description
switch (count $argv)
case 0
# pass
case 1
set target "$argv[1]"
case 2 "*"
set target "$argv[1]"
set description "$argv[2]"
end
printf "%s\t$description\n" (command ls -dp "$target"*)
set -l target
set -l description
switch (count $argv)
case 0
# pass
case 1
set target "$argv[1]"
case 2 "*"
set target "$argv[1]"
set description "$argv[2]"
end
printf "%s\t$description\n" (command ls -dp "$target"*)
end

View file

@ -3,14 +3,14 @@ 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 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 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 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 real user ID is listed' -xa '(__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

View file

@ -1,11 +1,11 @@
function __fish_complete_pids -d "Print a list of process identifiers along with brief descriptions"
# This may be a bit slower, but it's nice - having the tty displayed is really handy
# 'tail -n +2' deletes the first line, which contains the headers
# %self is removed from output by string match -r -v
set -l SELF %self
# Display the tty if available
# But not if it's just question marks, meaning no tty
ps axc -o pid,ucomm,tty | string match -r -v '^\s*'$SELF'\s' | tail -n +2 | string replace -r ' *([0-9]+) +([^ ].*[^ ]|[^ ]) +([^ ]+) *$' '$1\t$2 [$3]' | string replace -r ' *\[\?*\] *$' ''
# This may be a bit slower, but it's nice - having the tty displayed is really handy
# 'tail -n +2' deletes the first line, which contains the headers
# %self is removed from output by string match -r -v
set -l SELF %self
# Display the tty if available
# But not if it's just question marks, meaning no tty
ps axc -o pid,ucomm,tty | string match -r -v '^\s*'$SELF'\s' | tail -n +2 | string replace -r ' *([0-9]+) +([^ ].*[^ ]|[^ ]) +([^ ]+) *$' '$1\t$2 [$3]' | string replace -r ' *\[\?*\] *$' ''
end

View file

@ -1,4 +1,4 @@
function __fish_complete_ppp_peer --description 'Complete isp name for pon/poff'
find /etc/ppp/peers/ -type f -printf '%f\n'
find /etc/ppp/peers/ -type f -printf '%f\n'
end

View file

@ -1,47 +1,47 @@
function __fish_complete_proc --description 'Complete by list of running processes'
# Our function runs ps, followed by a massive list of commands passed to sed
set -l ps_cmd
set -l sed_cmds
if test (uname) = Linux
# comm and ucomm return a truncated name, so parse it from the command line field,
# which means we have to trim off the arguments.
# Unfortunately, it doesn't seem to escape spaces - so we can't distinguish
# between the command name, and the first argument. Still, processes with spaces
# in the name seem more common on OS X than on Linux, so prefer to parse out the
# command line rather than using the stat data.
# If the command line is unavailable, you get the stat data in brackets - so
# parse out brackets too.
set ps_cmd 'ps -A -o command'
# Erase everything after the first space
set sed_cmds $sed_cmds 's/ .*//'
# Erases weird stuff Linux gives like kworker/0:0
set sed_cmds $sed_cmds 's|/[0-9]:[0-9]]$||g'
# Retain the last path component only
set sed_cmds $sed_cmds 's|.*/||g'
# Strip off square brackets. Cute, huh?
set sed_cmds $sed_cmds 's/[][]//g'
# Erase things that are just numbers
set sed_cmds $sed_cmds 's/^[0-9]*$//'
else
# OS X, BSD. Preserve leading spaces.
set ps_cmd 'ps axc -o comm'
# Delete parenthesized (zombie) processes
set sed_cmds $sed_cmds '/(.*)/d'
end
# Append sed command to delete first line (the header)
set sed_cmds $sed_cmds '1d'
# Append sed commands to delete leading dashes and trailing spaces
# In principle, commands may have trailing spaces, but ps emits space padding on OS X
set sed_cmds $sed_cmds 's/^-//' 's/ *$//'
# Run ps, pipe it through our massive set of sed commands, then sort and unique
eval $ps_cmd | sed '-e '$sed_cmds | sort -u
# Our function runs ps, followed by a massive list of commands passed to sed
set -l ps_cmd
set -l sed_cmds
if test (uname) = Linux
# comm and ucomm return a truncated name, so parse it from the command line field,
# which means we have to trim off the arguments.
# Unfortunately, it doesn't seem to escape spaces - so we can't distinguish
# between the command name, and the first argument. Still, processes with spaces
# in the name seem more common on OS X than on Linux, so prefer to parse out the
# command line rather than using the stat data.
# If the command line is unavailable, you get the stat data in brackets - so
# parse out brackets too.
set ps_cmd 'ps -A -o command'
# Erase everything after the first space
set sed_cmds $sed_cmds 's/ .*//'
# Erases weird stuff Linux gives like kworker/0:0
set sed_cmds $sed_cmds 's|/[0-9]:[0-9]]$||g'
# Retain the last path component only
set sed_cmds $sed_cmds 's|.*/||g'
# Strip off square brackets. Cute, huh?
set sed_cmds $sed_cmds 's/[][]//g'
# Erase things that are just numbers
set sed_cmds $sed_cmds 's/^[0-9]*$//'
else
# OS X, BSD. Preserve leading spaces.
set ps_cmd 'ps axc -o comm'
# Delete parenthesized (zombie) processes
set sed_cmds $sed_cmds '/(.*)/d'
end
# Append sed command to delete first line (the header)
set sed_cmds $sed_cmds '1d'
# Append sed commands to delete leading dashes and trailing spaces
# In principle, commands may have trailing spaces, but ps emits space padding on OS X
set sed_cmds $sed_cmds 's/^-//' 's/ *$//'
# Run ps, pipe it through our massive set of sed commands, then sort and unique
eval $ps_cmd | sed '-e '$sed_cmds | sort -u
end

View file

@ -1,3 +1,3 @@
function __fish_complete_setxkbmap --description 'Complete setxkb options' --argument-names what
sed -e "1,/! $what/d" -e '/^\s*$/,$d' /usr/share/X11/xkb/rules/xorg.lst | sed -r 's/\s+(\S+)\s+(.+)/\1\t\2/'
sed -e "1,/! $what/d" -e '/^\s*$/,$d' /usr/share/X11/xkb/rules/xorg.lst | sed -r 's/\s+(\S+)\s+(.+)/\1\t\2/'
end

View file

@ -1,15 +1,15 @@
function __fish_complete_ssh -d "common completions for ssh commands" --argument command
complete -c $command -s 1 --description "Protocol version 1 only"
complete -c $command -s 2 --description "Protocol version 2 only"
complete -c $command -s 4 --description "IPv4 addresses only"
complete -c $command -s 6 --description "IPv6 addresses only"
complete -c $command -s C --description "Compress all data"
complete -xc $command -s c --description "Encryption algorithm" -a "blowfish 3des des"
complete -r -c $command -s F --description "Configuration file"
complete -r -c $command -s i --description "Identity file"
complete -x -c $command -s o --description "Options" -a "
complete -c $command -s 1 --description "Protocol version 1 only"
complete -c $command -s 2 --description "Protocol version 2 only"
complete -c $command -s 4 --description "IPv4 addresses only"
complete -c $command -s 6 --description "IPv6 addresses only"
complete -c $command -s C --description "Compress all data"
complete -xc $command -s c --description "Encryption algorithm" -a "blowfish 3des des"
complete -r -c $command -s F --description "Configuration file"
complete -r -c $command -s i --description "Identity file"
complete -x -c $command -s o --description "Options" -a "
AddressFamily
BatchMode
BindAddress
@ -56,6 +56,6 @@ function __fish_complete_ssh -d "common completions for ssh commands" --argument
UserKnownHostsFile
VerifyHostKeyDNS
"
complete -c $command -s v --description "Verbose mode"
complete -c $command -s v --description "Verbose mode"
end

View file

@ -1,5 +1,5 @@
function __fish_complete_subcommand -d "Complete subcommand" --no-scope-shadowing
set -l skip_next 1
function __fish_complete_subcommand -d "Complete subcommand" --no-scope-shadowing
set -l skip_next 1
set -l test
switch "$argv[1]"
case '--fcs-skip=*'
@ -8,38 +8,38 @@ function __fish_complete_subcommand -d "Complete subcommand" --no-scope-shadowi
set -e argv[1]
end
set -l res ""
set -l had_cmd 0
set -l cmd (commandline -cop) (commandline -ct)
set -l res ""
set -l had_cmd 0
set -l cmd (commandline -cop) (commandline -ct)
for i in $cmd
for i in $cmd
if test $skip_next -gt 0
if test $skip_next -gt 0
set skip_next (math $skip_next - 1)
continue
end
continue
end
if test "$had_cmd" = 1
set res "$res $i"
else
if test "$had_cmd" = 1
set res "$res $i"
else
if contains -- $i $argv
set skip_next (math $skip_next + 1)
continue
end
if contains -- $i $argv
set skip_next (math $skip_next + 1)
continue
end
switch $i
case '-*'
case '*=*'
case '*'
switch $i
case '-*'
case '*=*'
case '*'
set had_cmd 1
set res $i
end
end
end
set had_cmd 1
set res $i
end
end
end
printf "%s\n" (complete -C$res)
printf "%s\n" (complete -C$res)
end

View file

@ -1,6 +1,6 @@
function __fish_complete_subcommand_root -d "Run the __fish_complete_subcommand function using a PATH containing /sbin and /usr/sbin"
set -lx PATH /sbin /usr/sbin $PATH ^/dev/null
__fish_complete_subcommand $argv
set -lx PATH /sbin /usr/sbin $PATH ^/dev/null
__fish_complete_subcommand $argv
end

View file

@ -7,47 +7,47 @@
function __fish_complete_suffix -d "Complete using files"
# Variable declarations
# Variable declarations
set -l comp
set -l suff
set -l desc
set -l files
set -l comp
set -l suff
set -l desc
set -l files
switch (count $argv)
switch (count $argv)
case 1
set comp (commandline -ct)
set suff $argv
set desc ""
case 1
set comp (commandline -ct)
set suff $argv
set desc ""
case 2
set comp $argv[1]
set suff $argv[2]
set desc ""
case 2
set comp $argv[1]
set suff $argv[2]
set desc ""
case 3
set comp $argv[1]
set suff $argv[2]
set desc $argv[3]
case 3
set comp $argv[1]
set suff $argv[2]
set desc $argv[3]
end
end
# Perform the completion
# Perform the completion
set base (echo $comp |sed -e 's/\.[a-zA-Z0-9]*$//')
eval "set files $base*$suff"
set base (echo $comp |sed -e 's/\.[a-zA-Z0-9]*$//')
eval "set files $base*$suff"
if test $files[1]
printf "%s\t$desc\n" $files
end
if test $files[1]
printf "%s\t$desc\n" $files
end
#
# Also do directory completion, since there might be files
# with the correct suffix in a subdirectory
# No need to describe directories (#279)
#
#
# Also do directory completion, since there might be files
# with the correct suffix in a subdirectory
# No need to describe directories (#279)
#
__fish_complete_directories $comp ""
__fish_complete_directories $comp ""
end

View file

@ -1,25 +1,25 @@
function __fish_complete_svn_diff --description 'Complete "svn diff" arguments'
set -l cmdl (commandline -cop)
#set -l cmdl svn diff --diff-cmd diff --extensions '-a -b'
set -l diff diff
set -l args
while set -q cmdl[1]
switch $cmdl[1]
case --diff-cmd
if set -q cmdl[2]
set diff $cmdl[2]
set -e cmd[2]
end
set -l cmdl (commandline -cop)
#set -l cmdl svn diff --diff-cmd diff --extensions '-a -b'
set -l diff diff
set -l args
while set -q cmdl[1]
switch $cmdl[1]
case --diff-cmd
if set -q cmdl[2]
set diff $cmdl[2]
set -e cmd[2]
end
case --extensions
if set -q cmdl[2]
set args $cmdl[2]
set -e cmdl[2]
end
end
set -e cmdl[1]
end
set -l token (commandline -cpt)
complete -C"$diff $args $token"
case --extensions
if set -q cmdl[2]
set args $cmdl[2]
set -e cmdl[2]
end
end
set -e cmdl[1]
end
set -l token (commandline -cpt)
complete -C"$diff $args $token"
end

View file

@ -1,35 +1,35 @@
function __fish_complete_tar -d "Peek inside of archives and list all files"
set -l cmd (commandline -poc)
set -e cmd[1]
for i in $cmd
switch $i
case '-*'
continue
set -l cmd (commandline -poc)
set -e cmd[1]
for i in $cmd
switch $i
case '-*'
continue
case '*.tar.bz' '*.tar.bz2' '*.tbz' '*.tbz2'
if test -f $i
set -l file_list (tar -jt <$i)
printf (_ "%s\tArchived file\n") $file_list
end
return
case '*.tar.bz' '*.tar.bz2' '*.tbz' '*.tbz2'
if test -f $i
set -l file_list (tar -jt <$i)
printf (_ "%s\tArchived file\n") $file_list
end
return
case '*.tar.gz' '*.tgz'
if test -f $i
set -l file_list (tar -it <$i)
printf (_ "%s\tArchived file\n") $file_list
end
return
case '*.tar.gz' '*.tgz'
if test -f $i
set -l file_list (tar -it <$i)
printf (_ "%s\tArchived file\n") $file_list
end
return
case '*.tar'
if test -f $i
set -l file_list (tar -t <$i)
printf (_ "%s\tArchived file\n") $file_list
end
return
end
end
case '*.tar'
if test -f $i
set -l file_list (tar -t <$i)
printf (_ "%s\tArchived file\n") $file_list
end
return
end
end
end

View file

@ -1,21 +1,21 @@
function __fish_complete_unrar -d "Peek inside of archives and list all files"
set -l cmd (commandline -poc)
set -e cmd[1]
for i in $cmd
switch $i
case '-*'
continue
set -l cmd (commandline -poc)
set -e cmd[1]
for i in $cmd
switch $i
case '-*'
continue
case '*.rar'
if test -f $i
set -l file_list (unrar vb $i)
printf (_ "%s\tArchived file\n") $file_list
end
return
end
end
case '*.rar'
if test -f $i
set -l file_list (unrar vb $i)
printf (_ "%s\tArchived file\n") $file_list
end
return
end
end
end

View file

@ -1,10 +1,10 @@
function __fish_complete_users --description "Print a list of local users, with the real user name as a description"
if test -x /usr/bin/getent
getent passwd | cut -d : -f 1,5 | string replace -r ':' \t
else if test -x /usr/bin/dscl
dscl . -list /Users RealName | string match -r -v '^_' | string replace -r ' {2,}' \t
else
string match -v -r '^\s*#' < /etc/passwd | cut -d : -f 1,5 | string replace ':' \t
end
if test -x /usr/bin/getent
getent passwd | cut -d : -f 1,5 | string replace -r ':' \t
else if test -x /usr/bin/dscl
dscl . -list /Users RealName | string match -r -v '^_' | string replace -r ' {2,}' \t
else
string match -v -r '^\s*#' </etc/passwd | cut -d : -f 1,5 | string replace ':' \t
end
end

View file

@ -1,29 +1,29 @@
function __fish_complete_wvdial_peers --description 'Complete wvdial peers' --argument cfgfiles
set -q cfgfiles[0]
or set -l cfgfiles /etc/wvdial.conf ~/.wvdialrc
set -q cfgfiles[0]
or set -l cfgfiles /etc/wvdial.conf ~/.wvdialrc
# test if there is an alternative config file specified
set -l store_next
for opt in (commandline -cpo)
if set -q store_next[1]
set store_next
set cfgfiles $opt
continue
end
switch $opt
case -C --config
set store_next true
case '--config=*'
set cfgfiles (echo $opt | string replace '--config=' '')
end
end
for file in $cfgfiles
if test -f $file
string match -r '\[Dialer' < $file | string replace -r '\[Dialer (.+)\]' '$1'
# test if there is an alternative config file specified
set -l store_next
for opt in (commandline -cpo)
if set -q store_next[1]
set store_next
set cfgfiles $opt
continue
end
end | sort -u | string match -v Defaults
switch $opt
case -C --config
set store_next true
case '--config=*'
set cfgfiles (echo $opt | string replace '--config=' '')
end
end
for file in $cfgfiles
if test -f $file
string match -r '\[Dialer' <$file | string replace -r '\[Dialer (.+)\]' '$1'
end
end | sort -u | string match -v Defaults
end

View file

@ -234,7 +234,8 @@ function __fish_config_interactive -d "Initializations that should be performed
# Suppress duplicative title display on Terminal.app
if not functions -q fish_title
echo -n \e\]0\;\a # clear existing title
function fish_title -d 'no-op terminal title'; end
function fish_title -d 'no-op terminal title'
end
end
end
__update_cwd_osc # Run once because we might have already inherited a PWD from an old tab

View file

@ -1,53 +1,53 @@
function __fish_contains_opt -d "Checks if a specific option has been given in the current commandline"
set -l next_short
set -l next_short
set -l short_opt
set -l long_opt
set -l short_opt
set -l long_opt
for i in $argv
if test $next_short
set next_short
set short_opt $short_opt $i
else
switch $i
case -s
set next_short 1
case '-*'
echo __fish_contains_opt: Unknown option $i
return 1
for i in $argv
if test $next_short
set next_short
set short_opt $short_opt $i
else
switch $i
case -s
set next_short 1
case '-*'
echo __fish_contains_opt: Unknown option $i
return 1
case '**'
set long_opt $long_opt $i
end
end
end
case '**'
set long_opt $long_opt $i
end
end
end
for i in $short_opt
for i in $short_opt
if test -z $i
continue
end
if test -z $i
continue
end
if commandline -cpo | __fish_sgrep -- "^-"$i"\|^-[^-]*"$i >/dev/null
return 0
end
if commandline -cpo | __fish_sgrep -- "^-"$i"\|^-[^-]*"$i >/dev/null
return 0
end
if commandline -ct | __fish_sgrep -- "^-"$i"\|^-[^-]*"$i >/dev/null
return 0
end
end
if commandline -ct | __fish_sgrep -- "^-"$i"\|^-[^-]*"$i >/dev/null
return 0
end
end
for i in $long_opt
if test -z $i
continue
end
for i in $long_opt
if test -z $i
continue
end
if contains -- --$i (commandline -cpo)
return 0
end
end
if contains -- --$i (commandline -cpo)
return 0
end
end
return 1
return 1
end

View file

@ -1,4 +1,4 @@
# a function to obtain a list of installed packages with CRUX pkgutils
function __fish_crux_packages -d 'Obtain a list of installed packages'
pkginfo -i|cut -d' ' -f1
pkginfo -i | cut -d' ' -f1
end

View file

@ -1,11 +1,11 @@
function __fish_cursor_konsole -d 'Set cursor (konsole)'
set -l shape $argv[1]
switch "$shape"
case block
echo -en '\e]50;CursorShape=0\x7'
case underscore
echo -en '\e]50;CursorShape=2\x7'
case line
echo -en '\e]50;CursorShape=1\x7'
end
set -l shape $argv[1]
switch "$shape"
case block
echo -en '\e]50;CursorShape=0\x7'
case underscore
echo -en '\e]50;CursorShape=2\x7'
case line
echo -en '\e]50;CursorShape=1\x7'
end
end

View file

@ -1,16 +1,16 @@
function __fish_cursor_xterm -d 'Set cursor (xterm)'
set -l shape $argv[1]
set -l shape $argv[1]
switch "$shape"
case block
set shape 2
case underscore
set shape 4
case line
set shape 6
end
if contains blink $argv
set shape (math $shape - 1)
end
echo -en "\e[$shape q"
switch "$shape"
case block
set shape 2
case underscore
set shape 4
case line
set shape 6
end
if contains blink $argv
set shape (math $shape - 1)
end
echo -en "\e[$shape q"
end

View file

@ -3,7 +3,7 @@
#
function __fish_describe_command -d "Command used to find descriptions for commands"
apropos $argv ^/dev/null | awk -v FS=" +- +" '{
apropos $argv ^/dev/null | awk -v FS=" +- +" '{
split($1, names, ", ");
for (name in names)
if (names[name] ~ /^'"$argv"'.* *\([18]\)/ ) {

View file

@ -1,3 +1,3 @@
function __fish_filter_ant_targets -d "Display targets within an ant build.xml file"
sed -n "s/^.*<target[^>]* name=[\"']\([^\"']*\)[\"'].*\$/\1/p" < $argv[1]
sed -n "s/^.*<target[^>]* name=[\"']\([^\"']*\)[\"'].*\$/\1/p" <$argv[1]
end

View file

@ -484,7 +484,8 @@ function __fish_git_prompt_informative_status
# If `math` fails for some reason, assume the state is clean - it's the simpler path
set -l state (math $dirtystate + $invalidstate + $stagedstate + $untrackedfiles ^/dev/null)
if test -z "$state"; or test "$state" = 0
if test -z "$state"
or test "$state" = 0
set info $___fish_git_prompt_color_cleanstate$___fish_git_prompt_char_cleanstate$___fish_git_prompt_color_cleanstate_done
else
for i in $___fish_git_prompt_status_order

View file

@ -1,52 +1,52 @@
function __fish_gnu_complete -d "Wrapper for the complete built-in. Skips the long completions on non-GNU systems"
set is_gnu 0
set is_gnu 0
set -l argv_out
set -l argv_out
# Check if we are using a gnu system
for i in $argv
switch $i
# Check if we are using a gnu system
for i in $argv
switch $i
case -g --is-gnu
set is_gnu 1
case -g --is-gnu
set is_gnu 1
case '*'
set argv_out $argv_out $i
end
end
case '*'
set argv_out $argv_out $i
end
end
set argv $argv_out
set argv_out
set -l skip_next 0
set argv $argv_out
set argv_out
set -l skip_next 0
# Remove long option if not on a gnu system
switch $is_gnu
case 0
for i in $argv
# Remove long option if not on a gnu system
switch $is_gnu
case 0
for i in $argv
switch $skip_next
switch $skip_next
case 1
set skip_next 0
continue
case 1
set skip_next 0
continue
end
end
switch $i
switch $i
case -l --long
set skip_next 1
continue
case -l --long
set skip_next 1
continue
end
end
set argv_out $argv_out $i
end
set argv $argv_out
set argv_out $argv_out $i
end
set argv $argv_out
end
end
complete $argv
complete $argv
end

View file

@ -23,7 +23,7 @@ set -g fish_prompt_hg_status_order added modified copied deleted untracked unmer
function __fish_hg_prompt --description 'Write out the hg prompt'
# If hg isn't installed, there's nothing we can do
# Return 1 so the calling prompt can deal with it
if not command -s hg > /dev/null
if not command -s hg >/dev/null
return 1
end
@ -69,12 +69,18 @@ function __fish_hg_prompt --description 'Write out the hg prompt'
# Add a character for each file status if we have one
switch $line
case 'A ' ; set hg_statuses $hg_statuses added
case 'M ' ' M' ; set hg_statuses $hg_statuses modified
case 'C ' ; set hg_statuses $hg_statuses copied
case 'D ' ' D' ; set hg_statuses $hg_statuses deleted
case '\? ' ; set hg_statuses $hg_statuses untracked
case 'U*' '*U' 'DD' 'AA'; set hg_statuses $hg_statuses unmerged
case 'A '
set hg_statuses $hg_statuses added
case 'M ' ' M'
set hg_statuses $hg_statuses modified
case 'C '
set hg_statuses $hg_statuses copied
case 'D ' ' D'
set hg_statuses $hg_statuses deleted
case '\? '
set hg_statuses $hg_statuses untracked
case 'U*' '*U' 'DD' 'AA'
set hg_statuses $hg_statuses unmerged
end
end

View file

@ -1,15 +1,16 @@
function __fish_is_first_token -d 'Test if no non-switch argument has been specified yet'
set cmd (commandline -poc)
set -e cmd[1]
for i in $cmd
switch $i
case '-*'
set cmd (commandline -poc)
set -e cmd[1]
for i in $cmd
switch $i
case '-*'
case '*'
return 1;
end
end
return 0
case '*'
return 1
end
end
return 0
end

View file

@ -1,5 +1,5 @@
function __fish_is_token_n --description 'Test if current token is on Nth place' --argument n
# Add a fake element to increment without calling math
set -l num (count (commandline -poc) additionalelement)
test $n -eq $num
# Add a fake element to increment without calling math
set -l num (count (commandline -poc) additionalelement)
test $n -eq $num
end

View file

@ -11,7 +11,8 @@ function __fish_make_completion_signals --description 'Make list of kill signals
# The procps `kill -L` produces a more compact table. We can distinguish the two cases by
# testing whether it supports `kill -t`; in which case it is the coreutils `kill` command.
# Darwin doesn't have kill -t or kill -L
if kill -t ^/dev/null >/dev/null; or not kill -L ^/dev/null >/dev/null
if kill -t ^/dev/null >/dev/null
or not kill -L ^/dev/null >/dev/null
# Posix systems print out the name of a signal using 'kill -l SIGNUM'.
complete -c kill -s l --description "List names of available signals"
for i in (seq 31)
@ -24,7 +25,7 @@ function __fish_make_completion_signals --description 'Make list of kill signals
set -g __kill_signals
kill -L | sed -e 's/^ //; s/ */ /g; y/ /\n/' | while read -l signo
test -z "$signo"
and break # the sed above produces one blank line at the end
and break # the sed above produces one blank line at the end
read -l signame
set -g __kill_signals $__kill_signals "$signo $signame"
end

View file

@ -1,4 +1,4 @@
function __fish_man_page
man (basename (commandline -po; echo)[1]) ^/dev/null
or printf \a
man (basename (commandline -po; echo)[1]) ^/dev/null
or printf \a
end

View file

@ -1,27 +1,27 @@
function __fish_move_last -d "Move the last element of a directory history from src to dest"
set -l src $argv[1]
set -l dest $argv[2]
set -l src $argv[1]
set -l dest $argv[2]
set -l size_src (count $$src)
set -l size_src (count $$src)
if test $size_src = 0
# Cannot make this step
printf (_ "Hit end of history…\n")
return 1
end
if test $size_src = 0
# Cannot make this step
printf (_ "Hit end of history…\n")
return 1
end
# Append current dir to the end of the destination
set -g (echo $dest) $$dest (command pwd)
# Append current dir to the end of the destination
set -g (echo $dest) $$dest (command pwd)
set ssrc $$src
set ssrc $$src
# Change dir to the last entry in the source dir-hist
builtin cd $ssrc[$size_src]
# Change dir to the last entry in the source dir-hist
builtin cd $ssrc[$size_src]
# Keep all but the last from the source dir-hist
set -e (echo $src)\[$size_src]
# Keep all but the last from the source dir-hist
set -e (echo $src)\[$size_src]
# All ok, return success
return 0
# All ok, return success
return 0
end

View file

@ -1,15 +1,15 @@
function __fish_no_arguments -d "Internal fish function"
set -l cmd (commandline -poc) (commandline -tc)
set -e cmd[1]
for i in $cmd
switch $i
case '-*'
set -l cmd (commandline -poc) (commandline -tc)
set -e cmd[1]
for i in $cmd
switch $i
case '-*'
case '*'
return 1
end
end
return 0
case '*'
return 1
end
end
return 0
end

View file

@ -1,51 +1,51 @@
function __fish_not_contain_opt -d "Checks that a specific option is not in the current command line"
set -l next_short
set -l next_short
set -l short_opt
set -l long_opt
set -l short_opt
set -l long_opt
for i in $argv
if test $next_short
set next_short
set short_opt $short_opt $i
else
switch $i
case -s
set next_short 1
case '-*'
echo __fish_contains_opt: Unknown option $i
return 1
for i in $argv
if test $next_short
set next_short
set short_opt $short_opt $i
else
switch $i
case -s
set next_short 1
case '-*'
echo __fish_contains_opt: Unknown option $i
return 1
case '**'
set long_opt $long_opt $i
end
end
end
case '**'
set long_opt $long_opt $i
end
end
end
for i in $short_opt
for i in $short_opt
if test -z $i
continue
end
if test -z $i
continue
end
if commandline -cpo | __fish_sgrep -- "^-"$i"\|^-[^-]*"$i >/dev/null
return 1
end
if commandline -cpo | __fish_sgrep -- "^-"$i"\|^-[^-]*"$i >/dev/null
return 1
end
if commandline -ct | __fish_sgrep -- "^-"$i"\|^-[^-]*"$i >/dev/null
return 1
end
end
if commandline -ct | __fish_sgrep -- "^-"$i"\|^-[^-]*"$i >/dev/null
return 1
end
end
for i in $long_opt
if test -z $i
continue
end
for i in $long_opt
if test -z $i
continue
end
if contains -- --$i (commandline -cpo)
return 1
end
end
if contains -- --$i (commandline -cpo)
return 1
end
end
return 0
return 0
end

View file

@ -1,13 +1,13 @@
function __fish_paginate -d "Paginate the current command using the users default pager"
set -l cmd less
if set -q PAGER
set cmd $PAGER
end
set -l cmd less
if set -q PAGER
set cmd $PAGER
end
if commandline -j| string match -q -r -v "$cmd *\$"
if commandline -j | string match -q -r -v "$cmd *\$"
commandline -aj " ^&1 |$cmd;"
end
commandline -aj " ^&1 |$cmd;"
end
end

View file

@ -1,5 +1,5 @@
# a function to print a list of ports local collections
function __fish_ports_dirs -d 'Obtain a list of ports local collections'
ls /usr/ports
ls /usr/ports
end

View file

@ -1,4 +1,4 @@
function __fish_print_abook_emails --description 'Print email addresses (abook)'
abook --mutt-query "" | string match -r -v '^\s*$'
abook --mutt-query "" | string match -r -v '^\s*$'
end

View file

@ -1,11 +1,11 @@
function __fish_print_addresses --description "Print a list of known network addresses"
if command -s ip >/dev/null
command ip --oneline address | cut -d" " -f7 | sed "s:\(.*\)/.*:\1:"
else if command -s ifconfig >/dev/null
# This is for OSX/BSD
# There's also linux ifconfig but that has at least two different output formats
# is basically dead, and ip is installed on everything now
ifconfig | awk '/^\tinet/ { print $2 } '
end
if command -s ip >/dev/null
command ip --oneline address | cut -d" " -f7 | sed "s:\(.*\)/.*:\1:"
else if command -s ifconfig >/dev/null
# This is for OSX/BSD
# There's also linux ifconfig but that has at least two different output formats
# is basically dead, and ip is installed on everything now
ifconfig | awk '/^\tinet/ { print $2 } '
end
end

View file

@ -1,4 +1,4 @@
function __fish_print_arch_daemons --description 'Print arch daemons'
find /etc/rc.d/ -executable -type f -printf '%f\n'
find /etc/rc.d/ -executable -type f -printf '%f\n'
end

View file

@ -1,6 +1,6 @@
function __fish_print_debian_apache_confs
# Helper script for completions for a2enconf/a2disconf
for conf in /etc/apache2/conf-available/*.conf
basename "$conf" .conf
end
# Helper script for completions for a2enconf/a2disconf
for conf in /etc/apache2/conf-available/*.conf
basename "$conf" .conf
end
end

View file

@ -1,6 +1,6 @@
function __fish_print_debian_apache_mods
# Helper script for completions for a2enmod/a2dismod
for mod in /etc/apache2/mods-available/*.load
basename "$mod" .load
end
# Helper script for completions for a2enmod/a2dismod
for mod in /etc/apache2/mods-available/*.load
basename "$mod" .load
end
end

View file

@ -1,6 +1,6 @@
function __fish_print_debian_apache_sites
# Helper script for completions for a2ensite/a2dissite
for site in /etc/apache2/sites-available/*
basename "$site" .conf
end
# Helper script for completions for a2ensite/a2dissite
for site in /etc/apache2/sites-available/*
basename "$site" .conf
end
end

View file

@ -1,7 +1,7 @@
function __fish_print_debian_services --description 'Prints services installed'
for service in /etc/init.d/*
if [ -x $service ]
basename $service
for service in /etc/init.d/*
if [ -x $service ]
basename $service
end
end
end
end

View file

@ -1,3 +1,3 @@
function __fish_print_encodings -d "Complete using available character encodings"
iconv --list|sed -e 's|//||'
iconv --list | sed -e 's|//||'
end

View file

@ -1,9 +1,9 @@
function __fish_print_filesystems -d "Print a list of all known filesystem types"
set -l fs adfs affs autofs coda coherent cramfs devpts efs ext ext2 ext3
set fs $fs hfs hpfs iso9660 jfs minix msdos ncpfs nfs ntfs proc qnx4 ramfs
set fs $fs reiserfs romfs smbfs sysv tmpfs udf ufs umsdos vfat xenix xfs xiafs
# Mount has helper binaries to mount filesystems
# These are called mount.* and are placed somewhere in $PATH
printf "%s\n" $fs (string replace -ra ".*/mount." "" -- $PATH/mount.*)
set -l fs adfs affs autofs coda coherent cramfs devpts efs ext ext2 ext3
set fs $fs hfs hpfs iso9660 jfs minix msdos ncpfs nfs ntfs proc qnx4 ramfs
set fs $fs reiserfs romfs smbfs sysv tmpfs udf ufs umsdos vfat xenix xfs xiafs
# Mount has helper binaries to mount filesystems
# These are called mount.* and are placed somewhere in $PATH
printf "%s\n" $fs (string replace -ra ".*/mount." "" -- $PATH/mount.*)
end

View file

@ -1,5 +1,5 @@
function __fish_print_function_prototypes -d "Prints the names of all function prototypes found in the headers in the current directory"
cat *.h*|sed -n "s/^\(.*[^[a-zA-Z_0-9]\|\)\([a-zA-Z_][a-zA-Z_0-9]*\) *(.*);.*\$/\2/p"
cat *.h* | sed -n "s/^\(.*[^[a-zA-Z_0-9]\|\)\([a-zA-Z_][a-zA-Z_0-9]*\) *(.*);.*\$/\2/p"
end

View file

@ -1,41 +1,39 @@
function __fish_print_hostnames -d "Print a list of known hostnames"
# HACK: This only deals with ipv4
# HACK: This only deals with ipv4
# Print all hosts from /etc/hosts
# use 'getent hosts' on OSes that support it (OpenBSD and Cygwin do not)
if type -q getent; and getent hosts > /dev/null 2>&1 # test if 'getent hosts' works and redirect output so errors don't print
# Ignore zero ips
getent hosts | string match -r -v '^0.0.0.0' \
| string replace -r '[0-9.]*\s*' '' | string split " "
else if test -r /etc/hosts
# Ignore commented lines and functionally empty lines
string match -r -v '^\s*0.0.0.0|^\s*#|^\s*$' < /etc/hosts \
# Strip comments
| string replace -ra '#.*$' '' \
| string replace -r '[0-9.]*\s*' '' | string trim | string replace -ra '\s+' '\n'
end
# Print nfs servers from /etc/fstab
if test -r /etc/fstab
string match -r '^\s*[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3]:|^[a-zA-Z\.]*:' </etc/fstab | string replace -r ':.*' ''
end
# Check hosts known to ssh
set -l known_hosts ~/.ssh/known_hosts{,2} /etc/ssh/known_hosts{,2} # Yes, seriously - the default specifies both with and without "2"
for file in /etc/ssh/ssh_config ~/.ssh/config
if test -r $file
# Print hosts from system wide ssh configuration file
# Note the non-capturing group to avoid printing "name"
string match -ri '\s*Host(?:name)?(?:\s+|\s*=\s*)\w.*' < $file | string replace -ri '^\s*Host(?:name)?\s*(\S+)' '$1' \
| string replace -r '\s+' ' ' | string split ' '
set known_hosts $known_hosts (string match -ri '^\s*UserKnownHostsFile|^\s*GlobalKnownHostsFile' < $file \
| string replace -ri '.*KnownHostsFile\s*' '')
end
end
for file in $known_hosts
# Ignore hosts that are hashed, commented or have custom ports (like [localhost]:2200)
test -r $file; and string replace -ra '(\S+) .*' '$1' < $file | string match -r '^[^#|[=]+$' | string split ","
end
return 0
# Print all hosts from /etc/hosts
# use 'getent hosts' on OSes that support it (OpenBSD and Cygwin do not)
if type -q getent
and getent hosts >/dev/null 2>&1 # test if 'getent hosts' works and redirect output so errors don't print
# Ignore zero ips
getent hosts | string match -r -v '^0.0.0.0' | string replace -r '[0-9.]*\s*' '' | string split " "
else if test -r /etc/hosts
# Ignore commented lines and functionally empty lines
string match -r -v '^\s*0.0.0.0|^\s*#|^\s*$' </etc/hosts # Strip comments
| string replace -ra '#.*$' '' | string replace -r '[0-9.]*\s*' '' | string trim | string replace -ra '\s+' '\n'
end
# Print nfs servers from /etc/fstab
if test -r /etc/fstab
string match -r '^\s*[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3]:|^[a-zA-Z\.]*:' </etc/fstab | string replace -r ':.*' ''
end
# Check hosts known to ssh
set -l known_hosts ~/.ssh/known_hosts{,2} /etc/ssh/known_hosts{,2} # Yes, seriously - the default specifies both with and without "2"
for file in /etc/ssh/ssh_config ~/.ssh/config
if test -r $file
# Print hosts from system wide ssh configuration file
# Note the non-capturing group to avoid printing "name"
string match -ri '\s*Host(?:name)?(?:\s+|\s*=\s*)\w.*' <$file | string replace -ri '^\s*Host(?:name)?\s*(\S+)' '$1' | string replace -r '\s+' ' ' | string split ' '
set known_hosts $known_hosts (string match -ri '^\s*UserKnownHostsFile|^\s*GlobalKnownHostsFile' < $file \
| string replace -ri '.*KnownHostsFile\s*' '')
end
end
for file in $known_hosts
# Ignore hosts that are hashed, commented or have custom ports (like [localhost]:2200)
test -r $file
and string replace -ra '(\S+) .*' '$1' <$file | string match -r '^[^#|[=]+$' | string split ","
end
return 0
end

View file

@ -1,10 +1,10 @@
function __fish_print_interfaces --description "Print a list of known network interfaces"
if test -d /sys/class/net
cd /sys/class/net
for i in *
echo $i
end
else # OSX/BSD
command ifconfig -l | string split ' '
end
if test -d /sys/class/net
cd /sys/class/net
for i in *
echo $i
end
else # OSX/BSD
command ifconfig -l | string split ' '
end
end

View file

@ -1,4 +1,4 @@
function __fish_print_lpr_options --description 'Print lpr options'
lpoptions -l ^ /dev/null | sed 's+\(.*\)/\(.*\):.*$+\1\t\2+'
lpoptions -l ^/dev/null | sed 's+\(.*\)/\(.*\):.*$+\1\t\2+'
end

View file

@ -1,5 +1,5 @@
function __fish_print_lpr_printers --description 'Print lpr printers'
lpstat -p ^ /dev/null | sed 's/^\S*\s\(\S*\)\s\(.*\)$/\1\t\2/'
lpstat -p ^/dev/null | sed 's/^\S*\s\(\S*\)\s\(.*\)$/\1\t\2/'
end

View file

@ -1,4 +1,4 @@
function __fish_print_lsblk_columns --description 'Print available lsblk columns'
lsblk --help | sed '1,/Available columns:/d; /^$/,$d; s/^\s\+//; s/\s/\t/'
lsblk --help | sed '1,/Available columns:/d; /^$/,$d; s/^\s\+//; s/\s/\t/'
end

View file

@ -1,15 +1,15 @@
function __fish_print_make_targets
# Some seds (e.g. on Mac OS X), don't support \n in the RHS
# Use a literal newline instead
# http://sed.sourceforge.net/sedfaq4.html#s4.1
# The 'rev | cut | rev' trick removes everything after the last colon
for file in GNUmakefile Makefile makefile
if test -f $file
__fish_sgrep -h -o -E '^[^#%=$[:space:]][^#%=$]*:([^=]|$)' $file ^/dev/null | rev | cut -d ":" -f 2- | rev | sed -e 's/^ *//;s/ *$//;s/ */\\
# Some seds (e.g. on Mac OS X), don't support \n in the RHS
# Use a literal newline instead
# http://sed.sourceforge.net/sedfaq4.html#s4.1
# The 'rev | cut | rev' trick removes everything after the last colon
for file in GNUmakefile Makefile makefile
if test -f $file
__fish_sgrep -h -o -E '^[^#%=$[:space:]][^#%=$]*:([^=]|$)' $file ^/dev/null | rev | cut -d ":" -f 2- | rev | sed -e 's/^ *//;s/ *$//;s/ */\\
/g' ^/dev/null
# On case insensitive filesystems, Makefile and makefile are the same; stop now so we don't double-print
break
end
end
# On case insensitive filesystems, Makefile and makefile are the same; stop now so we don't double-print
break
end
end
end

View file

@ -1,4 +1,4 @@
# Helper function for completions that need to enumerate Linux modules
function __fish_print_modules
find /lib/modules/(uname -r)/{kernel,misc} -type f ^ /dev/null | sed -e 's$/.*/\([^/.]*\).*$\1$'
find /lib/modules/(uname -r)/{kernel,misc} -type f ^/dev/null | sed -e 's$/.*/\([^/.]*\).*$\1$'
end

View file

@ -1,13 +1,12 @@
function __fish_print_mounted --description 'Print mounted devices'
if test -r /etc/mtab
# In mtab, spaces are replaced by a literal '\040'
# So it's safe to get the second "field" and then replace it
# \011 encodes a tab, \012 encodes a newline and \\ encodes a backslash
# This will probably break on newlines because of our splitting, though
# and tabs because of descriptions
string replace -r '\S+ (\S+) .*' '$1' </etc/mtab | string replace -a "\040" " " \
| string replace -a "\011" \t | string replace -a "\012" \n | string replace -a "\\\\" "\\"
else
mount | cut -d " " -f 1-3|tr " " \n|sed -e "s/[0-9\.]*:\//\//"| __fish_sgrep "^/"
end
if test -r /etc/mtab
# In mtab, spaces are replaced by a literal '\040'
# So it's safe to get the second "field" and then replace it
# \011 encodes a tab, \012 encodes a newline and \\ encodes a backslash
# This will probably break on newlines because of our splitting, though
# and tabs because of descriptions
string replace -r '\S+ (\S+) .*' '$1' </etc/mtab | string replace -a "\040" " " | string replace -a "\011" \t | string replace -a "\012" \n | string replace -a "\\\\" "\\"
else
mount | cut -d " " -f 1-3 | tr " " \n | sed -e "s/[0-9\.]*:\//\//" | __fish_sgrep "^/"
end
end

View file

@ -1,5 +1,5 @@
function __fish_print_ninja_targets
if [ -f build.ninja ]
ninja -t targets 2> /dev/null | string replace -r ':.*' ''
ninja -t targets 2>/dev/null | string replace -r ':.*' ''
end
end

View file

@ -1,139 +1,139 @@
function __fish_print_packages
# apt-cache is much, much faster than rpm, and can do this in real
# time. We use it if available.
# apt-cache is much, much faster than rpm, and can do this in real
# time. We use it if available.
switch (commandline -tc)
case '-**'
return
end
switch (commandline -tc)
case '-**'
return
end
#Get the word 'Package' in the current language
set -l package (_ Package)
#Get the word 'Package' in the current language
set -l package (_ Package)
# Set up cache directory
if test -z "$XDG_CACHE_HOME"
set XDG_CACHE_HOME $HOME/.cache
end
mkdir -m 700 -p $XDG_CACHE_HOME
# Set up cache directory
if test -z "$XDG_CACHE_HOME"
set XDG_CACHE_HOME $HOME/.cache
end
mkdir -m 700 -p $XDG_CACHE_HOME
if type -q -f apt-cache
# Do not generate the cache as apparently sometimes this is slow.
# http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=547550
apt-cache --no-generate pkgnames (commandline -tc) ^/dev/null | sed -e 's/$/'\t$package'/'
return
end
if type -q -f apt-cache
# Do not generate the cache as apparently sometimes this is slow.
# http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=547550
apt-cache --no-generate pkgnames (commandline -tc) ^/dev/null | sed -e 's/$/'\t$package'/'
return
end
# Pkg is fast on FreeBSD and provides versioning info which we want for
# installed packages
if begin
type -q -f pkg
and test (uname) = "FreeBSD"
end
pkg query "%n-%v"
return
end
# Pkg is fast on FreeBSD and provides versioning info which we want for
# installed packages
if begin
type -q -f pkg
and test (uname) = "FreeBSD"
end
pkg query "%n-%v"
return
end
# Caches for 5 minutes
if type -q -f pacman
set cache_file $XDG_CACHE_HOME/.pac-cache.$USER
if test -f $cache_file
cat $cache_file
set age (math (date +%s) - (stat -c '%Y' $cache_file))
set max_age 250
if test $age -lt $max_age
return
end
end
if type -q -f pacman
set cache_file $XDG_CACHE_HOME/.pac-cache.$USER
if test -f $cache_file
cat $cache_file
set age (math (date +%s) - (stat -c '%Y' $cache_file))
set max_age 250
if test $age -lt $max_age
return
end
end
# prints: <package name> Package
pacman -Ssq | sed -e 's/$/\t'$package'/' >$cache_file &
return
end
# prints: <package name> Package
pacman -Ssq | sed -e 's/$/\t'$package'/' >$cache_file &
return
end
# Zypper needs caching as it is slow
if type -q -f zypper
# Use libzypp cache file if available
if test -f /var/cache/zypp/solv/@System/solv.idx
cat /var/cache/zypp/solv/*/solv.idx | awk '!/application:|srcpackage:|product:|pattern:|patch:/ {print $1'\t$package'}'
return
end
# Zypper needs caching as it is slow
if type -q -f zypper
# Use libzypp cache file if available
if test -f /var/cache/zypp/solv/@System/solv.idx
cat /var/cache/zypp/solv/*/solv.idx | awk '!/application:|srcpackage:|product:|pattern:|patch:/ {print $1'\t$package'}'
return
end
# If the cache is less than five minutes old, we do not recalculate it
# If the cache is less than five minutes old, we do not recalculate it
set -l cache_file $XDG_CACHE_HOME/.zypper-cache.$USER
if test -f $cache_file
cat $cache_file
set -l age (math (date +%s) - (stat -c '%Y' $cache_file))
set -l max_age 300
if test $age -lt $max_age
return
end
end
set -l cache_file $XDG_CACHE_HOME/.zypper-cache.$USER
if test -f $cache_file
cat $cache_file
set -l age (math (date +%s) - (stat -c '%Y' $cache_file))
set -l max_age 300
if test $age -lt $max_age
return
end
end
# Remove package version information from output and pipe into cache file
zypper --quiet --non-interactive search --type=package | tail -n +4 | sed -r 's/^. \| ((\w|[-_.])+).*/\1\t'$package'/g' > $cache_file &
return
end
# Remove package version information from output and pipe into cache file
zypper --quiet --non-interactive search --type=package | tail -n +4 | sed -r 's/^. \| ((\w|[-_.])+).*/\1\t'$package'/g' >$cache_file &
return
end
# yum is slow, just like rpm, so go to the background
if type -q -f /usr/share/yum-cli/completion-helper.py
# yum is slow, just like rpm, so go to the background
if type -q -f /usr/share/yum-cli/completion-helper.py
# If the cache is less than six hours old, we do not recalculate it
# If the cache is less than six hours old, we do not recalculate it
set cache_file $XDG_CACHE_HOME/.yum-cache.$USER
if test -f $cache_file
cat $cache_file
set age (math (date +%s) - (stat -c '%Y' $cache_file))
set max_age 21600
if test $age -lt $max_age
return
end
end
set cache_file $XDG_CACHE_HOME/.yum-cache.$USER
if test -f $cache_file
cat $cache_file
set age (math (date +%s) - (stat -c '%Y' $cache_file))
set max_age 21600
if test $age -lt $max_age
return
end
end
# Remove package version information from output and pipe into cache file
/usr/share/yum-cli/completion-helper.py list all -d 0 -C | sed "s/\..*/\t$package/" >$cache_file &
return
end
# Remove package version information from output and pipe into cache file
/usr/share/yum-cli/completion-helper.py list all -d 0 -C | sed "s/\..*/\t$package/" >$cache_file &
return
end
# Rpm is too slow for this job, so we set it up to do completions
# as a background job and cache the results.
# Rpm is too slow for this job, so we set it up to do completions
# as a background job and cache the results.
if type -q -f rpm
if type -q -f rpm
# If the cache is less than five minutes old, we do not recalculate it
# If the cache is less than five minutes old, we do not recalculate it
set cache_file $XDG_CACHE_HOME/.rpm-cache.$USER
if test -f $cache_file
cat $cache_file
set age (math (date +%s) - (stat -c '%Y' $cache_file))
set max_age 250
if test $age -lt $max_age
return
end
end
set cache_file $XDG_CACHE_HOME/.rpm-cache.$USER
if test -f $cache_file
cat $cache_file
set age (math (date +%s) - (stat -c '%Y' $cache_file))
set max_age 250
if test $age -lt $max_age
return
end
end
# Remove package version information from output and pipe into cache file
rpm -qa |sed -e 's/-[^-]*-[^-]*$/\t'$package'/' >$cache_file &
return
end
# Remove package version information from output and pipe into cache file
rpm -qa | sed -e 's/-[^-]*-[^-]*$/\t'$package'/' >$cache_file &
return
end
# This completes the package name from the portage tree.
# True for installing new packages. Function for printing
# installed on the system packages is in completions/emerge.fish
# This completes the package name from the portage tree.
# True for installing new packages. Function for printing
# installed on the system packages is in completions/emerge.fish
# eix is MUCH faster than emerge so use it if it is available
if type -q -f eix
eix --only-names "^"(commandline -tc) | cut -d/ -f2
return
else
# FIXME? Seems to be broken
if type -q -f emerge
emerge -s \^(commandline -tc) | __fish_sgrep "^*" |cut -d\ -f3 |cut -d/ -f2
return
end
end
# eix is MUCH faster than emerge so use it if it is available
if type -q -f eix
eix --only-names "^"(commandline -tc) | cut -d/ -f2
return
else
# FIXME? Seems to be broken
if type -q -f emerge
emerge -s \^(commandline -tc) | __fish_sgrep "^*" | cut -d\ -f3 | cut -d/ -f2
return
end
end
end

View file

@ -1,3 +1,3 @@
function __fish_print_pacman_repos --description "Print the repositories configured for arch's pacman package manager"
string replace -r -a "\[(.+)\]" "\1" < /etc/pacman.conf | string match -r -v "^#|options"
string replace -r -a "\[(.+)\]" "\1" </etc/pacman.conf | string match -r -v "^#|options"
end

View file

@ -1,13 +1,13 @@
function __fish_print_service_names -d 'All services known to the system'
if test -d /run/systemd/system # Systemd systems
# For the `service` command, this needs to be without the type suffix
# on Debian at least
__fish_systemctl_services | string replace -r '.service$' ''
# For the `service` command, this needs to be without the type suffix
# on Debian at least
__fish_systemctl_services | string replace -r '.service$' ''
else if type -f rc-service ^/dev/null # OpenRC (Gentoo)
command rc-service -l
else if test -d /etc/init.d # SysV on Debian and other linuxen
string replace '/etc/init.d/' '' -- /etc/init.d/*
else # Freebsd
command service -l
string replace '/etc/init.d/' '' -- /etc/init.d/*
else # Freebsd
command service -l
end
end

View file

@ -1,3 +1,3 @@
function __fish_print_svn_rev --description 'Print svn revisions'
printf '%s' (svnversion | sed 's=[^0-9:]*==g')
printf '%s' (svnversion | sed 's=[^0-9:]*==g')
end

View file

@ -1,11 +1,11 @@
function __fish_print_users --description "Print a list of local users"
if test -x /usr/bin/getent
getent passwd | cut -d : -f 1
else if test -x /usr/bin/dscl # OS X support
dscl . -list /Users | string match -r -v '^_'
else
string match -v -r '^\w*#' < /etc/passwd | cut -d : -f 1
end
if test -x /usr/bin/getent
getent passwd | cut -d : -f 1
else if test -x /usr/bin/dscl # OS X support
dscl . -list /Users | string match -r -v '^_'
else
string match -v -r '^\w*#' </etc/passwd | cut -d : -f 1
end
end

View file

@ -1,4 +1,4 @@
function __fish_print_xdg_mimeapps --description 'Print xdg mime applications'
find ~/.local/share/applications/ /usr/share/applications/ -name \*.desktop \( -type f -or -type l \) -printf '%P\n' | sort -u
find ~/.local/share/applications/ /usr/share/applications/ -name \*.desktop \( -type f -or -type l \) -printf '%P\n' | sort -u
end

View file

@ -1,5 +1,5 @@
function __fish_print_xdg_mimetypes --description 'Print XDG mime types'
cat ~/.local/share/applications/mimeinfo.cache | grep -v "\[MIME Cache\]" | tr = \t
cat /usr/share/applications/mimeinfo.cache | grep -v "\[MIME Cache\]" | tr = \t
cat /usr/share/applications/mimeinfo.cache | grep -v "\[MIME Cache\]" | tr = \t
end

View file

@ -1,13 +1,13 @@
function __fish_print_xrandr_modes --description 'Print xrandr modes'
set -l out
xrandr | sed '/^Screen/d; s/^ \+/mode: /' | while read -l output mode misc
switch $output
case mode:
echo $mode\t(echo $misc | sed 's/\(^ \+\)\|\( *$\)//') [$out]
case '*'
set out $output
end
end
set -l out
xrandr | sed '/^Screen/d; s/^ \+/mode: /' | while read -l output mode misc
switch $output
case mode:
echo $mode\t(echo $misc | sed 's/\(^ \+\)\|\( *$\)//') [$out]
case '*'
set out $output
end
end
end

View file

@ -1,5 +1,5 @@
function __fish_print_xrandr_outputs --description 'Print xrandr outputs'
xrandr | sed '/^Screen\|^ /d; s/^\(\S\+\) \+\(.\+\)/\1\t\2/'
xrandr | sed '/^Screen\|^ /d; s/^\(\S\+\) \+\(.\+\)/\1\t\2/'
end

View file

@ -1,4 +1,4 @@
function __fish_print_xwindows --description 'Print X windows'
xwininfo -root -children | grep '^\s\+0x' | sed '/(has no name)/d; s/^\s*\(\S\+\)\s\+"\(.\+\)":\s\+(\(.*\)).*$/\1\t\2 (\3)/'
xwininfo -root -children | grep '^\s\+0x' | sed '/(has no name)/d; s/^\s*\(\S\+\)\s\+"\(.\+\)":\s\+(\(.*\)).*$/\1\t\2 (\3)/'
end

View file

@ -1,11 +1,11 @@
# A function to verify if prt-get (the crux package management tool) needs to be completed by a further command
function __fish_prt_no_subcommand -d 'Test if prt-get has yet to be given the command'
for i in (commandline -opc)
if contains -- $i install depinst grpinst update remove sysup lock unlock listlocked diff quickdiff search dsearch fsearch info path readme depends quickdep dependent deptree dup list printf listinst listorphans isinst current ls cat edit help dumpconfig version cache
return 1
end
end
return 0
for i in (commandline -opc)
if contains -- $i install depinst grpinst update remove sysup lock unlock listlocked diff quickdiff search dsearch fsearch info path readme depends quickdep dependent deptree dup list printf listinst listorphans isinst current ls cat edit help dumpconfig version cache
return 1
end
end
return 0
end

View file

@ -1,4 +1,4 @@
# a function to obtain a list of installed packages with prt-get
function __fish_prt_packages -d 'Obtain a list of installed packages'
prt-get listinst
prt-get listinst
end

View file

@ -1,5 +1,5 @@
# a function to obtain a list of ports with prt-get
function __fish_prt_ports -d 'Obtain a list of ports'
prt-get list
prt-get list
end

View file

@ -1,9 +1,9 @@
# a function to verify if prt-get should have packages as potential completion
function __fish_prt_use_package -d 'Test if prt-get should have packages as potential completion'
for i in (commandline -opc)
if contains -- $i update remove lock unlock current
return 0
end
end
return 1
for i in (commandline -opc)
if contains -- $i update remove lock unlock current
return 0
end
end
return 1
end

View file

@ -1,9 +1,9 @@
# a function to test if prt-get should have ports as potential completions
function __fish_prt_use_port -d 'Test if prt-get should have ports as potential completion'
for i in (commandline -opc)
if contains -- $i install depinst grpinst diff depends quickdep dependent deptree isinst info path readme ls cat edit
return 0
end
end
return 1
for i in (commandline -opc)
if contains -- $i install depinst grpinst diff depends quickdep dependent deptree isinst info path readme ls cat edit
return 0
end
end
return 1
end

View file

@ -1,10 +1,10 @@
switch (uname)
case 'CYGWIN_*'
function __fish_pwd --description "Show current path"
pwd | sed -e 's-^/cygdrive/\(.\)/\?-\u\1:/-'
end
case '*'
function __fish_pwd --description "Show current path"
pwd
end
case 'CYGWIN_*'
function __fish_pwd --description "Show current path"
pwd | sed -e 's-^/cygdrive/\(.\)/\?-\u\1:/-'
end
case '*'
function __fish_pwd --description "Show current path"
pwd
end
end

View file

@ -1,5 +1,5 @@
function __fish_sgrep -d "Call grep without honoring GREP_OPTIONS settings"
set -l GREP_OPTIONS
command grep $argv
set -l GREP_OPTIONS
command grep $argv
end

View file

@ -10,7 +10,7 @@ function __fish_shared_key_bindings -d "Bindings shared between emacs and vi mod
end
bind $argv \cy yank
or return # protect against invalid $argv
or return # protect against invalid $argv
bind $argv \ey yank-pop
# Left/Right arrow

View file

@ -68,80 +68,82 @@ set -g __fish_svn_prompt_char_token_broken_color --bold magenta
# ==============================
function __fish_svn_prompt_parse_status --argument flag_status_string --description "helper function that does pretty formatting on svn status"
# SVN status symbols
# Do not change these! These are the expected characters that are output from `svn status`, they are taken from `svn help status`
set -l __fish_svn_prompt_chars A C D I M R X \? ! ~ L + S K O T B
# this sets up an array of all the types of status codes that could be returned.
set -l __fish_svn_prompt_flag_names added conflicted deleted ignored modified replaced unversioned_external unversioned missing locked scheduled switched token_present token_other token_stolen token_broken
# iterate over the different status types
for flag_type in $__fish_svn_prompt_flag_names
# resolve the name of the variable for the character representing the current status type
set -l flag_index (contains -i $flag_type $__fish_svn_prompt_flag_names)
# check to see if the status string for this column contains the character representing the current status type
if test (echo $flag_status_string | grep -c $__fish_svn_prompt_chars[$flag_index]) -eq 1
# if it does, then get the names of the variables for the display character and colour to format it with
set -l flag_var_display __fish_svn_prompt_char_{$flag_type}_display
set -l flag_var_color __fish_svn_prompt_char_{$flag_type}_color
# set the colour and print display character, then restore to default display colour
printf '%s%s%s' (set_color $$flag_var_color) $$flag_var_display (set_color normal)
end
end
# SVN status symbols
# Do not change these! These are the expected characters that are output from `svn status`, they are taken from `svn help status`
set -l __fish_svn_prompt_chars A C D I M R X \? ! ~ L + S K O T B
# this sets up an array of all the types of status codes that could be returned.
set -l __fish_svn_prompt_flag_names added conflicted deleted ignored modified replaced unversioned_external unversioned missing locked scheduled switched token_present token_other token_stolen token_broken
# iterate over the different status types
for flag_type in $__fish_svn_prompt_flag_names
# resolve the name of the variable for the character representing the current status type
set -l flag_index (contains -i $flag_type $__fish_svn_prompt_flag_names)
# check to see if the status string for this column contains the character representing the current status type
if test (echo $flag_status_string | grep -c $__fish_svn_prompt_chars[$flag_index]) -eq 1
# if it does, then get the names of the variables for the display character and colour to format it with
set -l flag_var_display __fish_svn_prompt_char_{$flag_type}_display
set -l flag_var_color __fish_svn_prompt_char_{$flag_type}_color
# set the colour and print display character, then restore to default display colour
printf '%s%s%s' (set_color $$flag_var_color) $$flag_var_display (set_color normal)
end
end
end
function __fish_svn_prompt --description "Prompt function for svn"
# if svn isn't installed then don't do anything
if not command -s svn > /dev/null
return 1
end
# if svn isn't installed then don't do anything
if not command -s svn >/dev/null
return 1
end
# make sure that this is a svn repo
set -l checkout_info (command svn info ^/dev/null)
if [ $status -ne 0 ];
return
end
# make sure that this is a svn repo
set -l checkout_info (command svn info ^/dev/null)
if [ $status -ne 0 ]
# get the current revision number
printf '(%s%s%s' (set_color $__fish_svn_prompt_color_revision) (__fish_print_svn_rev) (set_color normal)
return
end
# resolve the status of the checkout
# 1. perform `svn status`
# 2. remove extra lines that aren't necessary
# 3. cut the output down to the first 7 columns, as these contain the information needed
set -l svn_status_lines (command svn status | sed -e 's=^Summary of conflicts.*==' -e 's=^ Text conflicts.*==' -e 's=^ Property conflicts.*==' -e 's=^ Tree conflicts.*==' -e 's=.*incoming .* upon update.*==' | cut -c 1-7)
# get the current revision number
printf '(%s%s%s' (set_color $__fish_svn_prompt_color_revision) (__fish_print_svn_rev) (set_color normal)
# track the last column to contain a status flag
set -l last_column 0
# resolve the status of the checkout
# 1. perform `svn status`
# 2. remove extra lines that aren't necessary
# 3. cut the output down to the first 7 columns, as these contain the information needed
set -l svn_status_lines (command svn status | sed -e 's=^Summary of conflicts.*==' -e 's=^ Text conflicts.*==' -e 's=^ Property conflicts.*==' -e 's=^ Tree conflicts.*==' -e 's=.*incoming .* upon update.*==' | cut -c 1-7)
# iterate over the 7 columns of output (the 7 columns are defined on `svn help status`)
for col in (seq 7)
# get the output for a particular column
# 1. echo the whole status flag text
# 2. cut out the current column of characters
# 3. remove spaces and newline characters
set -l column_status (printf '%s\n' $svn_status_lines | cut -c $col | tr -d ' \n')
# track the last column to contain a status flag
set -l last_column 0
# check that the character count is not zero (this would indicate that there are status flags in this column)
if [ (count $column_status) -ne 0 ];
# we only want to display unique status flags (eg: if there are 5 modified files, the prompt should only show the modified status once)
set -l column_unique_status (echo $column_status | sort | uniq)
# parse the status flags for this column and create the formatting by calling out to the helper function
set -l svn_status_flags (__fish_svn_prompt_parse_status $column_unique_status)
# iterate over the 7 columns of output (the 7 columns are defined on `svn help status`)
for col in (seq 7)
# get the output for a particular column
# 1. echo the whole status flag text
# 2. cut out the current column of characters
# 3. remove spaces and newline characters
set -l column_status (printf '%s\n' $svn_status_lines | cut -c $col | tr -d ' \n')
# the default separator is empty
set -l prompt_separator ""
for index in (seq (math "$col - $last_column"))
# the prompt separator variable has to be updated with the number of separators needed to represent empty status columns (eg: if a file has the status "A +" then it should display as "A|||+" in the prompt)
set prompt_separator $prompt_separator$__fish_svn_prompt_char_separator
end
# check that the character count is not zero (this would indicate that there are status flags in this column)
if [ (count $column_status) -ne 0 ]
# record that the current column was the last one printed to the prompt
set last_column $col
# print the separator string then the current column's status flags
printf '%s%s' $prompt_separator $svn_status_flags
end
end
# we only want to display unique status flags (eg: if there are 5 modified files, the prompt should only show the modified status once)
set -l column_unique_status (echo $column_status | sort | uniq)
# parse the status flags for this column and create the formatting by calling out to the helper function
set -l svn_status_flags (__fish_svn_prompt_parse_status $column_unique_status)
# print the close of the svn status prompt
printf ')'
# the default separator is empty
set -l prompt_separator ""
for index in (seq (math "$col - $last_column"))
# the prompt separator variable has to be updated with the number of separators needed to represent empty status columns (eg: if a file has the status "A +" then it should display as "A|||+" in the prompt)
set prompt_separator $prompt_separator$__fish_svn_prompt_char_separator
end
# record that the current column was the last one printed to the prompt
set last_column $col
# print the separator string then the current column's status flags
printf '%s%s' $prompt_separator $svn_status_flags
end
end
# print the close of the svn status prompt
printf ')'
end

View file

@ -1,9 +1,9 @@
function __fish_systemctl_automounts
if type -q systemctl
if __fish_contains_opt user
systemctl --user list-unit-files --no-legend --type=automount ^/dev/null | cut -f 1 -d ' '
else
systemctl list-unit-files --no-legend --type=automount ^/dev/null | cut -f 1 -d ' '
end
end
if type -q systemctl
if __fish_contains_opt user
systemctl --user list-unit-files --no-legend --type=automount ^/dev/null | cut -f 1 -d ' '
else
systemctl list-unit-files --no-legend --type=automount ^/dev/null | cut -f 1 -d ' '
end
end
end

View file

@ -1,11 +1,11 @@
function __fish_systemctl_devices
if type -q systemctl
if __fish_contains_opt user
# Devices are usually generated at runtime
# Therefore show known _units_, not unit-files
systemctl --user list-units --no-legend --type=device ^/dev/null | cut -f 1 -d ' '
else
systemctl list-units --no-legend --type=device ^/dev/null | cut -f 1 -d ' '
end
end
if type -q systemctl
if __fish_contains_opt user
# Devices are usually generated at runtime
# Therefore show known _units_, not unit-files
systemctl --user list-units --no-legend --type=device ^/dev/null | cut -f 1 -d ' '
else
systemctl list-units --no-legend --type=device ^/dev/null | cut -f 1 -d ' '
end
end
end

View file

@ -1,9 +1,9 @@
function __fish_systemctl_mounts
if type -q systemctl
if __fish_contains_opt user
systemctl --user list-unit-files --no-legend --type=mount ^/dev/null | cut -f 1 -d ' '
else
systemctl list-unit-files --no-legend --type=mount ^/dev/null | cut -f 1 -d ' '
end
end
if type -q systemctl
if __fish_contains_opt user
systemctl --user list-unit-files --no-legend --type=mount ^/dev/null | cut -f 1 -d ' '
else
systemctl list-unit-files --no-legend --type=mount ^/dev/null | cut -f 1 -d ' '
end
end
end

View file

@ -1,11 +1,11 @@
function __fish_systemctl_scopes
if type -q systemctl
if __fish_contains_opt user
# Scopes are usually generated at runtime
# Therefore show known _units_, not unit-files
systemctl --user list-units --no-legend --type=scope ^/dev/null | cut -f 1 -d ' '
else
systemctl list-units --no-legend --type=scope ^/dev/null | cut -f 1 -d ' '
end
end
if type -q systemctl
if __fish_contains_opt user
# Scopes are usually generated at runtime
# Therefore show known _units_, not unit-files
systemctl --user list-units --no-legend --type=scope ^/dev/null | cut -f 1 -d ' '
else
systemctl list-units --no-legend --type=scope ^/dev/null | cut -f 1 -d ' '
end
end
end

View file

@ -1,9 +1,9 @@
function __fish_systemctl_service_paths
if type -q systemctl
if __fish_contains_opt user
systemctl --user list-unit-files --no-legend --type=path ^/dev/null $argv | cut -f 1 -d ' '
else
systemctl list-unit-files --no-legend --type=path ^/dev/null $argv | cut -f 1 -d ' '
end
end
if type -q systemctl
if __fish_contains_opt user
systemctl --user list-unit-files --no-legend --type=path ^/dev/null $argv | cut -f 1 -d ' '
else
systemctl list-unit-files --no-legend --type=path ^/dev/null $argv | cut -f 1 -d ' '
end
end
end

View file

@ -1,13 +1,13 @@
function __fish_systemctl_services
if type -q systemctl
if __fish_contains_opt user
systemctl --user list-unit-files --no-legend --type=service ^/dev/null $argv | cut -f 1 -d ' '
systemctl --user list-units --state=loaded --no-legend --type=service ^/dev/null | cut -f 1 -d ' '
else
# list-unit-files will also show disabled units
systemctl list-unit-files --no-legend --type=service ^/dev/null $argv | cut -f 1 -d ' '
# list-units will not show disabled units but will show instances (like wpa_supplicant@wlan0.service)
systemctl list-units --state=loaded --no-legend --type=service ^/dev/null | cut -f 1 -d ' '
end
end
if type -q systemctl
if __fish_contains_opt user
systemctl --user list-unit-files --no-legend --type=service ^/dev/null $argv | cut -f 1 -d ' '
systemctl --user list-units --state=loaded --no-legend --type=service ^/dev/null | cut -f 1 -d ' '
else
# list-unit-files will also show disabled units
systemctl list-unit-files --no-legend --type=service ^/dev/null $argv | cut -f 1 -d ' '
# list-units will not show disabled units but will show instances (like wpa_supplicant@wlan0.service)
systemctl list-units --state=loaded --no-legend --type=service ^/dev/null | cut -f 1 -d ' '
end
end
end

View file

@ -1,11 +1,11 @@
function __fish_systemctl_slices
if type -q systemctl
if __fish_contains_opt user
# Slices are usually generated at runtime
# Therefore show known _units_, not unit-files
systemctl --user list-units --no-legend --type=slice ^/dev/null | cut -f 1 -d ' '
else
systemctl list-units --no-legend --type=slice ^/dev/null | cut -f 1 -d ' '
end
end
if type -q systemctl
if __fish_contains_opt user
# Slices are usually generated at runtime
# Therefore show known _units_, not unit-files
systemctl --user list-units --no-legend --type=slice ^/dev/null | cut -f 1 -d ' '
else
systemctl list-units --no-legend --type=slice ^/dev/null | cut -f 1 -d ' '
end
end
end

Some files were not shown because too many files have changed in this diff Show more