aboutsummaryrefslogtreecommitdiffhomepage
path: root/share/config_interactive.fish.in
blob: dd3084e9752e1db1ab71cad87ef9b3eec8dbf9c0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
#
# 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
			command mkdir $configdir >/dev/null
		end

		if test -d $configdir
			if command 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 --description "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 --description "Event handler, repaints the prompt when fish_color_cwd changes"
	set -e __fish_prompt_cwd
	commandline -f repaint
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 --description "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 --description "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 --description "Complete using all available commands"
	printf "%s\n" (commandline -ct)(complete -C (commandline -ct))
end

function __fish_print_interfaces --description "Print a list of known network interfaces"
	netstat -i -n -a | awk 'NR>2'|awk '{print $1}'
end

function __fish_print_addresses --description "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 --description "Print a list of local users"
	cat /etc/passwd | cut -d : -f 1
end

#
# Completions for SysV startup scripts
#

complete -x -p "/etc/init.d/*" -a start --description 'Start service'
complete -x -p "/etc/init.d/*" -a stop --description 'Stop service'
complete -x -p "/etc/init.d/*" -a status --description 'Print service status'
complete -x -p "/etc/init.d/*" -a restart --description 'Stop and then start service'
complete -x -p "/etc/init.d/*" -a reload --description 'Reload service configuration'