aboutsummaryrefslogtreecommitdiffhomepage
path: root/init/fish_function.fish
diff options
context:
space:
mode:
Diffstat (limited to 'init/fish_function.fish')
-rw-r--r--init/fish_function.fish851
1 files changed, 0 insertions, 851 deletions
diff --git a/init/fish_function.fish b/init/fish_function.fish
index 47fa0e88..4ddadc35 100644
--- a/init/fish_function.fish
+++ b/init/fish_function.fish
@@ -47,117 +47,6 @@ function contains -d "Test if a key is contained in a set of values"
end
-#
-# help should use 'open' to find a suitable browser, but only
-# if there is a mime database _and_ DISPLAY is set, since the
-# browser will most likely be graphical. Since most systems which
-# have a mime databe also have the htmlview program, this is mostly a
-# theoretical problem.
-#
-
-function help -d "Show help for the fish shell"
-
- # Declare variables to set correct scope
- set -l fish_browser
- set -l fish_browser_bg
-
- set -l h syntax completion editor job-control todo bugs history killring help
- set h $h color prompt title variables builtin-overview changes expand
- set h $h expand-variable expand-home expand-brace expand-wildcard
- set -l help_topics $h expand-command-substitution expand-process
-
- #
- # Find a suitable browser for viewing the help pages. This is needed
- # by the help function defined below.
- #
- set -l graphical_browsers htmlview x-www-browser firefox galeon mozilla konqueror epiphany opera netscape
- set -l text_browsers htmlview www-browser links elinks lynx w3m
-
- if test $BROWSER
- # User has manualy set a preferred browser, so we respect that
- set fish_browser $BROWSER
-
- # If browser is known to be graphical, put into background
- if contains -- $BROWSER $graphical_browsers
- set fish_browser_bg 1
- end
- else
- # Check for a text-based browser.
- for i in $text_browsers
- if which $i 2>/dev/null >/dev/null
- set fish_browser $i
- break
- end
- end
-
- # If we are in a graphical environment, check if there is a graphical
- # browser to use instead.
- if test "$DISPLAY" -a \( "$XAUTHORITY" = "$HOME/.Xauthority" -o "$XAUTHORITY" = "" \)
- for i in $graphical_browsers
- if which $i 2>/dev/null >/dev/null
- set fish_browser $i
- set fish_browser_bg 1
- break
- end
- end
- end
- end
-
- if test -z $fish_browser
- printf (_ '%s: Could not find a web browser.\n') help
- printf (_ 'Please set the variable $BROWSER to a suitable browser and try again\n\n')
- return 1
- end
-
- set fish_help_item $argv[1]
-
- switch "$fish_help_item"
- case ""
- set fish_help_page index.html
- case "."
- set fish_help_page "builtins.html\#source"
- case difference
- set fish_help_page difference.html
- case globbing
- set fish_help_page "index.html\#expand"
- case (builtin -n)
- set fish_help_page "builtins.html\#$fish_help_item"
- case contains count dirh dirs help mimedb nextd open popd prevd pushd set_color tokenize psub umask type vared
- set fish_help_page "commands.html\#$fish_help_item"
- case $help_topics
- set fish_help_page "index.html\#$fish_help_item"
- case "*"
- if which $fish_help_item >/dev/null ^/dev/null
- man $fish_help_item
- return
- end
- set fish_help_page "index.html"
- end
-
- if test $fish_browser_bg
- eval $fish_browser file://$__fish_help_dir/$fish_help_page \&
- else
- eval $fish_browser file://$__fish_help_dir/$fish_help_page
- end
-end
-
-#
-# Make ls use colors if we are on a system that supports this
-#
-
-if ls --version 1>/dev/null 2>/dev/null
- # This is GNU ls
- function ls -d "List contents of directory"
- command ls --color=auto --indicator-style=classify $argv
- end
-else
- # BSD, OS X and a few more support colors through the -G switch instead
- if ls / -G 1>/dev/null 2>/dev/null
- function ls -d "List contents of directory"
- command ls -G $argv
- end
- end
-end
#
# These are very common and useful
@@ -170,16 +59,6 @@ function la -d "List contents of directory using long format, showing hidden fil
ls -lha $argv
end
-#
-# This allows us to use 'open FILENAME' to open a given file in the default
-# application for the file.
-#
-
-if not test (uname) = Darwin
- function open -d "Open file in default application"
- mimedb -l -- $argv
- end
-end
#
# Print the current working directory in a shortened form.This
@@ -215,52 +94,6 @@ function pwd -d "Print working directory"
end
#
-# This is a neat function, stolen from zsh. It allows you to edit the
-# value of a variable interactively.
-#
-
-function vared -d "Edit variable value"
- if test (count $argv) = 1
- switch $argv
-
- case '-h' '--h' '--he' '--hel' '--help'
- help vared
-
- case '-*'
- printf (_ "%s: Unknown option %s\n") vared $argv
-
- case '*'
- if test (count $$argv ) -lt 2
- set init ''
- if test $$argv
- set -- init $$argv
- end
- set prompt 'set_color green; echo '$argv'; set_color normal; echo "> "'
- read -p $prompt -c $init tmp
-
- # If variable already exists, do not add any
- # switches, so we don't change export rules. But
- # if it does not exist, we make the variable
- # global, so that it will not die when this
- # function dies
-
- if test $$argv
- set -- $argv $tmp
- else
- set -g -- $argv $tmp
- end
-
- else
-
- printf (_ '%s: %s is an array variable. Use %svared%s %s[n] to edit the n:th element of %s\n') $argv (set_color $fish_color_command) (set_color $fish_color_normal) vared $argv $argv
- end
- end
- else
- printf (_ '%s: Expected exactly one argument, got %s.\n\nSynopsis:\n\t%svared%s VARIABLE\n') vared (count $argv) (set_color $fish_color_command) (set_color $fish_color_normal)
- end
-end
-
-#
# This function is used internally by the fish command completion code
#
@@ -360,160 +193,6 @@ function cd -d "Change directory"
end
-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 size_src (count $$src)
-
- 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)
-
- set ssrc $$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]
-
- # All ok, return success
- return 0
-end
-
-
-function prevd -d "Move back in the directory history"
- # Parse arguments
- set -l show_hist 0
- set -l times 1
- for i in (seq (count $argv))
- switch $argv[$i]
- case '-l' --l --li --lis --list
- set show_hist 1
- continue
- case '-*'
- printf (_ "%s: Unknown option %s\n" ) prevd $argv[$i]
- return 1
- case '*'
- if test $argv[$i] -ge 0 ^/dev/null
- set times $argv[$i]
- else
- printf (_ "The number of positions to skip must be a non-negative integer\n")
- return 1
- end
- continue
- end
- end
-
- # Traverse history
- set -l code 1
- for i in (seq $times)
- # Try one step backward
- if __fish_move_last dirprev dirnext;
- # We consider it a success if we were able to do at least 1 step
- # (low expectations are the key to happiness ;)
- set code 0
- else
- break
- end
- end
-
- # Show history if needed
- if test $show_hist = 1
- dirh
- end
-
- # Set direction for 'cd -'
- if test $code = 0 ^/dev/null
- set -g __fish_cd_direction next
- end
-
- # All done
- return $code
-end
-
-
-function nextd -d "Move forward in the directory history"
- # Parse arguments
- set -l show_hist 0
- set -l times 1
- for i in (seq (count $argv))
- switch $argv[$i]
- case '-l' --l --li --lis --list
- set show_hist 1
- continue
- case '-*'
- printf (_ "%s: Unknown option %s\n" ) nextd $argv[$i]
- return 1
- case '*'
- if test $argv[$i] -ge 0 ^/dev/null
- set times $argv[$i]
- else
- printf (_ "%s: The number of positions to skip must be a non-negative integer\n" ) nextd
- return 1
- end
- continue
- end
- end
-
- # Traverse history
- set -l code 1
- for i in (seq $times)
- # Try one step backward
- if __fish_move_last dirnext dirprev;
- # We consider it a success if we were able to do at least 1 step
- # (low expectations are the key to happiness ;)
- set code 0
- else
- break
- end
- end
-
- # Show history if needed
- if test $show_hist = 1
- dirh
- end
-
- # Set direction for 'cd -'
- if test $code = 0 ^/dev/null
- set -g __fish_cd_direction prev
- end
-
- # All done
- return $code
-end
-
-
-function dirh -d "Print the current directory history (the back- and fwd- lists)"
- # Avoid set comment
- set -l current (command pwd)
- set -l separator " "
- set -l line_len (echo (count $dirprev) + (echo $dirprev $current $dirnext | wc -m) | bc)
- if test $line_len -gt $COLUMNS
- # Print one entry per line if history is long
- set separator "\n"
- end
-
- for i in $dirprev
- echo -n -e $i$separator
- end
-
- set_color $fish_color_history_current
- echo -n -e $current$separator
- set_color normal
-
- for i in (seq (echo (count $dirnext)) -1 1)
- echo -n -e $dirnext[$i]$separator
- end
-
- echo
-end
function __bold -d "Print argument in bold"
set_color --bold
@@ -522,536 +201,6 @@ function __bold -d "Print argument in bold"
end
-function __trap_translate_signal
- set upper (echo $argv[1]|tr a-z A-Z)
- if expr $upper : 'SIG.*' >/dev/null
- echo $upper | cut -c 4-
- else
- echo $upper
- end
-end
-
-function __trap_switch
-
- switch $argv[1]
- case EXIT
- echo --on-exit %self
-
- case '*'
- echo --on-signal $argv[1]
- end
-
-end
-
-function trap -d 'Perform an action when the shell recives a signal'
-
- set -l mode
- set -l cmd
- set -l sig
- set -l shortopt
- set -l longopt
-
- set -l shortopt -o lph
- set -l longopt
- if not getopt -T >/dev/null
- set longopt -l print,help,list-signals
- end
-
- if not getopt -n type -Q $shortopt $longopt -- $argv
- return 1
- end
-
- set -l tmp (getopt $shortopt $longopt -- $argv)
-
- eval set opt $tmp
-
- while count $opt >/dev/null
- switch $opt[1]
- case -h --help
- help trap
- return 0
-
- case -p --print
- set mode print
-
- case -l --list-signals
- set mode list
-
- case --
- set -e opt[1]
- break
-
- end
- set -e opt[1]
- end
-
- if not count $mode >/dev/null
-
- switch (count $opt)
-
- case 0
- set mode print
-
- case 1
- set mode clear
-
- case '*'
- if test opt[1] = -
- set -e opt[1]
- set mode clear
- else
- set mode set
- end
- end
- end
-
- switch $mode
- case clear
- for i in $opt
- set -- sig (__trap_translate_signal $i)
- if test $sig
- functions -e __trap_handler_$sig
- end
- end
-
- case set
- set -l cmd $opt[1]
- set -e opt[1]
-
- for i in $opt
-
- set -l -- sig (__trap_translate_signal $i)
- set -- sw (__trap_switch $sig)
-
- if test $sig
- eval "function __trap_handler_$sig $sw; $cmd; end"
- else
- return 1
- end
- end
-
- case print
- set -l names
-
- if count $opt >/dev/null
- set -- names $opt
- else
- set -- names (functions -na|grep "^__trap_handler_"|sed -e 's/__trap_handler_//' )
- end
-
- for i in $names
-
- set -- sig (__trap_translate_signal $i)
-
- if test sig
- functions __trap_handler_$i
- else
- return 1
- end
-
- end
-
- case list
- kill -l
-
- end
-
-end
-
-
-function type -d "Print the type of a command"
-
- # Initialize
- set -l status 1
- set -l mode normal
- set -l selection all
-
- #
- # Get options
- #
- set -l shortopt -o tpPafh
- set -l longopt
- if not getopt -T >/dev/null
- set longopt -l type,path,force-path,all,no-functions,help
- end
-
- if not getopt -n type -Q $shortopt $longopt -- $argv
- return 1
- end
-
- set -l tmp (getopt $shortopt $longopt -- $argv)
-
- set -l opt
- eval set opt $tmp
-
- for i in $opt
- switch $i
- case -t --type
- set mode type
-
- case -p --path
- set mode path
-
- case -P --force-path
- set mode path
- set selection files
-
- case -a --all
- set selection multi
-
- case -f --no-functions
- set selection files
-
- case -h --help
- help type
- return 0
-
- case --
- break
-
- end
- end
-
- # Check all possible types for the remaining arguments
- for i in $argv
-
- switch $i
- case '-*'
- continue
- end
-
- # Found will be set to 1 if a match is found
- set found 0
-
- if test $selection != files
-
- if contains -- $i (functions -na)
- set status 0
- set found 1
- switch $mode
- case normal
- printf (_ '%s is a function with definition\n') $i
- functions $i
-
- case type
- printf (_ 'function\n')
-
- case path
- echo
-
- end
- if test $selection != multi
- continue
- end
- end
-
- if contains -- $i (builtin -n)
- set status 0
- set found 1
- switch $mode
- case normal
- printf (_ '%s is a builtin\n') $i
-
- case type
- printf (_ 'builtin\n')
-
- case path
- echo
- end
- if test $selection != multi
- continue
- end
- end
-
- end
-
- if which $i ^/dev/null >/dev/null
- set status 0
- set found 1
- switch $mode
- case normal
- printf (_ '%s is %s\n') $i (which $i)
-
- case type
- printf (_ 'file\n')
-
- case path
- which $i
- end
- if test $selection != multi
- continue
- end
- end
-
- if test $found = 0
- printf (_ "%s: Could not find '%s'") type $i
- end
-
- end
-
- return $status
-end
-
-function __fish_umask_parse -d "Parses a file permission specification as into an octal version"
- # Test if already a valid octal mask, and pad it with zeros
- if echo $argv | grep -E '^(0|)[0-7]{1,3}$' >/dev/null
- for i in (seq (echo 5-(echo $argv|wc -c)|bc)); set argv 0$argv; end
- echo $argv
- else
- # Test if argument really is a valid symbolic mask
- if not echo $argv | grep -E '^(((u|g|o|a|)(=|\+|-)|)(r|w|x)*)(,(((u|g|o|a|)(=|\+|-)|)(r|w|x)*))*$' >/dev/null
- printf (_ "%s: Invalid mask '%s'\n") umask $argv >&2
- return 1
- end
-
- set -l implicit_all
-
- # Insert inverted umask into res variable
-
- set -l mode
- set -l val
- set -l tmp $umask
- set -l res
-
- for i in 1 2 3
- set tmp (echo $tmp|cut -c 2-)
- set res[$i] (echo 7-(echo $tmp|cut -c 1)|bc)
- end
-
- set -l el (echo $argv|tr , \n)
- for i in $el
- switch $i
- case 'u*'
- set idx 1
- set i (echo $i| cut -c 2-)
-
- case 'g*'
- set idx 2
- set i (echo $i| cut -c 2-)
-
- case 'o*'
- set idx 3
- set i (echo $i| cut -c 2-)
-
- case 'a*'
- set idx 1 2 3
- set i (echo $i| cut -c 2-)
-
- case '*'
- set implicit_all 1
- set idx 1 2 3
- end
-
- switch $i
- case '=*'
- set mode set
- set i (echo $i| cut -c 2-)
-
- case '+*'
- set mode add
- set i (echo $i| cut -c 2-)
-
- case '-*'
- set mode remove
- set i (echo $i| cut -c 2-)
-
- case '*'
- if not count $implicit_all >/dev/null
- printf (_ "%s: Invalid mask %s\n") umask $argv >&2
- return
- end
- set mode set
- end
-
- if not echo $perm|grep -E '^(r|w|x)*$' >/dev/null
- printf (_ "%s: Invalid mask %s\n") umask $argv >&2
- return
- end
-
- set val 0
- if echo $i |grep 'r' >/dev/null
- set val 4
- end
- if echo $i |grep 'w' >/dev/null
- set val (echo $val + 2|bc)
- end
- if echo $i |grep 'x' >/dev/null
- set val (echo $val + 1|bc)
- end
-
- for j in $idx
- switch $mode
- case set
- set res[$j] $val
-
- case add
- set res[$j] (perl -e 'print( ( '$res[$j]'|'$val[$j]' )."\n" )')
-
- case remove
- set res[$j] (perl -e 'print( ( (7-'$res[$j]')&'$val[$j]' )."\n" )')
- end
- end
- end
-
- for i in 1 2 3
- set res[$i] (echo 7-$res[$i]|bc)
- end
- echo 0$res[1]$res[2]$res[3]
- end
-end
-
-function __fish_umask_print_symbolic
- set -l res ""
- set -l letter a u g o
-
- for i in 2 3 4
- set res $res,$letter[$i]=
- set val (echo $umask|cut -c $i)
-
- if contains $val 0 1 2 3
- set res {$res}r
- end
-
- if contains $val 0 1 4 5
- set res {$res}w
- end
-
- if contains $val 0 2 4 6
- set res {$res}x
- end
-
- end
-
- echo $res|cut -c 2-
-end
-
-function umask -d "Set default file permission mask"
-
- set -l as_command 0
- set -l symbolic 0
-
- set -l shortopt -o pSh
- set -l longopt
- if not getopt -T >/dev/null
- set longopt -l as-command,symbolic,help
- end
-
- if not getopt -n umask -Q $shortopt $longopt -- $argv
- return 1
- end
-
- set -l tmp (getopt $shortopt $longopt -- $argv)
-
- eval set opt $tmp
-
- while count $opt >/dev/null
-
- switch $opt[1]
- case -h --help
- help umask
- return 0
-
- case -p --as-command
- set as_command 1
-
- case -S --symbolic
- set symbolic 1
-
- case --
- set -e opt[1]
- break
-
- end
-
- set -e opt[1]
-
- end
-
- switch (count $opt)
-
- case 0
- if not set -q umask
- set -g umask 113
- end
- if test $as_command -eq 1
- echo umask $umask
- else
- if test $symbolic -eq 1
- __fish_umask_print_symbolic $umask
- else
- echo $umask
- end
- end
-
- case 1
- set -l parsed (__fish_umask_parse $opt)
- if test (count $parsed) -eq 1
- set -g umask $parsed
- return 0
- end
- return 1
-
- case '*'
- printf (_ '%s: Too many arguments\n') umask >&2
-
- end
-
-end
-
-
-function psub -d "Read from stdin into a file and output the filename. Remove the file when the command that calles psub exits."
-
- set -l filename
- set -l funcname
-
- if count $argv >/dev/null
- switch $argv[1]
- case '-h*' --h --he --hel --help
-
- help psub
- return 0
-
- case '*'
- printf (_ "%s: Unknown argument '%s'\n") psub $argv[1]
- return 1
- end
- end
-
- if not status --is-command-substitution
- echo psub: Not inside of command substitution >&2
- return
- end
-
- # Find unique file name for writing output to
- while true
- set filename /tmp/.psub.(echo %self).(random);
- if not test -e $filename
- break;
- end
- end
-
- # Write output to pipe. This needs to be done in the background so
- # that the command substitution exits without needing to wait for
- # all the commands to exit
- mkfifo $filename
- cat >$filename &
-
- # Write filename to stdout
- echo $filename
-
- # Find unique function name
- while true
- set funcname __fish_psub_(random);
- if not functions $funcname >/dev/null ^/dev/null
- break;
- end
- end
-
- # Make sure we erase file when caller exits
- eval function $funcname --on-job-exit caller\; rm $filename\; functions -e $funcname\; end
-
-end
-
function prevd-or-backward-word --key-binding
if test -z (commandline)
prevd