Skip to content

Commit 507c9cc

Browse files
committed
Preserve fish_plugins plugin order (#689)
Fix #689.
1 parent 5622dd6 commit 507c9cc

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

functions/fisher.fish

+16-4
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,15 @@ function fisher --argument-names cmd --description "A plugin manager for Fish"
2929
set --local old_plugins $_fisher_plugins
3030
set --local new_plugins
3131

32+
test -e $fish_plugins && set --local file_plugins (string match --regex -- '^[^\s]+$' <$fish_plugins)
33+
3234
if ! set --query argv[2]
3335
if test "$cmd" != update
3436
echo "fisher: Not enough arguments for command: \"$cmd\"" >&2 && return 1
35-
else if test ! -e $fish_plugins
37+
else if ! set --query file_plugins
3638
echo "fisher: \"$fish_plugins\" file not found: \"$cmd\"" >&2 && return 1
3739
end
38-
set arg_plugins (string match --regex -- '^[^\s]+$' <$fish_plugins)
40+
set arg_plugins $file_plugins
3941
end
4042

4143
for plugin in $arg_plugins
@@ -125,6 +127,7 @@ function fisher --argument-names cmd --description "A plugin manager for Fish"
125127
emit {$name}_uninstall
126128
end
127129
printf "%s\n" Removing\ (set_color red --bold)$plugin(set_color normal) " "$$plugin_files_var
130+
set --erase _fisher_plugins[$index]
128131
end
129132

130133
command rm -rf $$plugin_files_var
@@ -134,7 +137,6 @@ function fisher --argument-names cmd --description "A plugin manager for Fish"
134137
complete --erase --command $name
135138
end
136139

137-
set --erase _fisher_plugins[$index]
138140
set --erase $plugin_files_var
139141
end
140142
end
@@ -184,7 +186,17 @@ function fisher --argument-names cmd --description "A plugin manager for Fish"
184186
command rm -rf $source_plugins
185187

186188
if set --query _fisher_plugins[1]
187-
printf "%s\n" $_fisher_plugins >$fish_plugins
189+
set --local commit_plugins
190+
191+
for plugin in $file_plugins
192+
contains -- $plugin $_fisher_plugins && set --append commit_plugins $plugin
193+
end
194+
195+
for plugin in $_fisher_plugins
196+
contains -- $plugin $commit_plugins || set --append commit_plugins $plugin
197+
end
198+
199+
printf "%s\n" $commit_plugins >$fish_plugins
188200
else
189201
set --erase _fisher_plugins
190202
command rm -f $fish_plugins

0 commit comments

Comments
 (0)