# # Initializations that should only be performed when in interactive mode. # # # @configure_input@ # set -l configdir ~/.config if set -q XDG_CONFIG_HOME set configdir $XDG_CONFIG_HOME end if not set -q __fish_init_1_22_0 if test -f ~/.fish_history -o -f ~/.fish -o -d ~/.fish.d -a ! -d $configdir/fish # Perform upgrade of configuration file hierarchy if not test -d $configdir builtin mkdir $configdir >/dev/null end if test -d $configdir if builtin mkdir $configdir/fish # These files are sometimes overwritten to by fish, so # we want backups of them in case something goes wrong cp ~/.fishd.(hostname) $configdir/fish/fishd.(hostname).backup cp ~/.fish_history $configdir/fish/fish_history.backup # Move the files mv ~/.fish_history $configdir/fish/fish_history mv ~/.fish $configdir/fish/config.fish mv ~/.fish_inputrc $configdir/fish/fish_inputrc mv ~/.fish.d/functions $configdir/fish/functions mv ~/.fish.d/completions $configdir/fish/completions # # Move the fishd stuff from another shell to avoid concurrency problems # /bin/sh -c mv\ \~/.fishd.(hostname)\ $configdir/fish/fishd.(hostname)\;kill\ -9\ (echo %fishd) # Update paths to point to new configuration locations set fish_function_path (printf "%s\n" $fish_function_path|sed -e "s|@sysconfdir@/fish.d/|@sysconfdir@/fish/|") set fish_complete_path (printf "%s\n" $fish_complete_path|sed -e "s|@sysconfdir@/fish.d/|@sysconfdir@/fish/|") set fish_function_path (printf "%s\n" $fish_function_path|sed -e "s|$HOME/.fish.d/|$configdir/fish/|") set fish_complete_path (printf "%s\n" $fish_complete_path|sed -e "s|$HOME/.fish.d/|$configdir/fish/|") printf (_ "\nWARNING\n\nThe location for fish configuration files has changed to %s.\nYour old files have been moved to this location.\nYou can change to a different location by changing the value of the variable \$XDG_CONFIG_HOME.\n\n") $configdir end ^/dev/null end end # Make sure this is only done once set -U __fish_init_1_22_0 end # # Print a greeting # if not set -q fish_greeting set -l line1 (printf (_ 'Welcome to fish, the friendly interactive shell') ) set -l line2 (printf (_ 'Type %shelp%s for instructions on how to use fish') (set_color green) (set_color normal)) set -U fish_greeting $line1\n$line2 end if test "$fish_greeting" echo $fish_greeting end # # Set exit message # function fish_on_exit -d (_ "Commands to execute when fish exits") --on-process %self printf (_ "Good bye\n") end # # Set INPUTRC to something nice # # We override INPUTRC if already set, since it may be set by a shell # other than fish, which may use a different file. The new value should # be exported, since the fish inputrc file plays nice with other files # by including them when found. # for i in $configdir/fish/fish_inputrc @sysconfdir@/fish/fish_inputrc ~/.inputrc /etc/inputrc if test -f $i set -xg INPUTRC $i break end end # # Set various defaults using these throwaway functions # function set_default -d "Set an universal variable, unless it has already been set" if not set -q $argv[1] set -U -- $argv end end # Regular syntax highlighting colors set_default fish_color_normal normal set_default fish_color_command green set_default fish_color_redirection normal set_default fish_color_comment red set_default fish_color_error red --bold set_default fish_color_escape cyan set_default fish_color_operator cyan set_default fish_color_quote brown set_default fish_color_valid_path --underline set_default fish_color_cwd green # Background color for matching quotes and parenthesis set_default fish_color_match cyan # Background color for search matches set_default fish_color_search_match purple # Pager colors set_default fish_pager_color_prefix cyan set_default fish_pager_color_completion normal set_default fish_pager_color_description normal set_default fish_pager_color_progress cyan # # Directory history colors # set_default fish_color_history_current cyan # # Setup the CDPATH variable # set_default CDPATH . ~ # # Remove temporary functions for setting default variable values # functions -e set_default # # This event handler makes sure the prompt is repainted when # fish_color_cwd changes value. Like all event handlers, it can't be # autoloaded. # function __fish_repaint --on-variable fish_color_cwd -d (N_ "Event handler, repaints the prompt when fish_color_cwd changes") set -e __fish_prompt_cwd commandline -f null end # # A few minor convenience functions # # The naming heuristic is that __fish_complete_* prints completions # and descriptions, while __fish_print_* only prints the completions # and no descriptions # function __fish_complete_users -d "Print a list of local users, with the real user name as a description" cat /etc/passwd | sed -e "s/^\([^:]*\):[^:]*:[^:]*:[^:]*:\([^:]*\):.*/\1\t\2/" end function __fish_complete_groups -d "Print a list of local groups, with group members as the description" cat /etc/group | sed -e "s/^\([^:]*\):[^:]*:[^:]*:\(.*\)/\1\tMembers: \2/" end function __fish_complete_command -d "Complete using all available commands" printf "%s\n" (commandline -ct)(complete -C (commandline -ct)) end function __fish_print_interfaces -d "Print a list of known network interfaces" netstat -i -n -a | awk 'NR>2'|awk '{print $1}' end function __fish_print_addresses -d "Print a list of known network addresses" /sbin/ifconfig |sgrep 'inet addr'|cut -d : -f 2|cut -d ' ' -f 1 end function __fish_print_users -d "Print a list of local users" cat /etc/passwd | cut -d : -f 1 end # # Completions for the shell and it's builtin commands and functions # for i in (builtin -n|sgrep -E -v '(while|for|if|function|switch)' ) complete -c $i -s h -l help -d "Display help and exit" end # # Completions for SysV startup scripts # complete -x -p "/etc/init.d/*" -a start\t(_ 'Start service') complete -x -p "/etc/init.d/*" -a stop\t(_ 'Stop service') complete -x -p "/etc/init.d/*" -a status\t(_ 'Print service status') complete -x -p "/etc/init.d/*" -a restart\t(_ 'Stop and then start service') complete -x -p "/etc/init.d/*" -a reload\t(_ 'Reload service configuration')