mirror of
https://github.com/nix-community/home-manager
synced 2024-11-27 05:29:46 +01:00
fish: escape abbr expansions once again
Commit 8cedd6 `fish: support flexible abbreviations` removed shell escaping for fish shell abbr values. This was a dangerous breaking change offered little value and made writing abbr expansions more difficult. This commit restores automatic shell escaping of fish abbr values.
This commit is contained in:
parent
b897544a79
commit
8b797c8eea
2 changed files with 20 additions and 9 deletions
|
@ -207,7 +207,8 @@ let
|
||||||
modifiers = if isAttrs def then mods else "";
|
modifiers = if isAttrs def then mods else "";
|
||||||
expansion = if isAttrs def then def.expansion else def;
|
expansion = if isAttrs def then def.expansion else def;
|
||||||
in "abbr --add ${modifiers} -- ${name}"
|
in "abbr --add ${modifiers} -- ${name}"
|
||||||
+ optionalString (expansion != null) " \"${expansion}\"") cfg.shellAbbrs);
|
+ optionalString (expansion != null) " ${escapeShellArg expansion}")
|
||||||
|
cfg.shellAbbrs);
|
||||||
|
|
||||||
aliasesStr = concatStringsSep "\n"
|
aliasesStr = concatStringsSep "\n"
|
||||||
(mapAttrsToList (k: v: "alias ${k} ${escapeShellArg v}") cfg.shellAliases);
|
(mapAttrsToList (k: v: "alias ${k} ${escapeShellArg v}") cfg.shellAliases);
|
||||||
|
|
|
@ -26,8 +26,13 @@
|
||||||
};
|
};
|
||||||
"4DIRS" = {
|
"4DIRS" = {
|
||||||
setCursor = "!";
|
setCursor = "!";
|
||||||
expansion =
|
expansion = ''
|
||||||
"$(string join \\n -- 'for dir in */' 'cd $dir' '!' 'cd ..' 'end')";
|
for dir in */
|
||||||
|
cd $dir
|
||||||
|
!
|
||||||
|
cd ..
|
||||||
|
end
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
dotdot = {
|
dotdot = {
|
||||||
regex = "^\\.\\.+$";
|
regex = "^\\.\\.+$";
|
||||||
|
@ -41,19 +46,24 @@
|
||||||
"if fish.shellAbbrs is set, check fish.config contains valid abbreviations";
|
"if fish.shellAbbrs is set, check fish.config contains valid abbreviations";
|
||||||
script = ''
|
script = ''
|
||||||
assertFileContains home-files/.config/fish/config.fish \
|
assertFileContains home-files/.config/fish/config.fish \
|
||||||
'abbr --add -- l less'
|
"abbr --add -- l less"
|
||||||
assertFileContains home-files/.config/fish/config.fish \
|
assertFileContains home-files/.config/fish/config.fish \
|
||||||
'abbr --add -- gco "git checkout"'
|
"abbr --add -- gco 'git checkout'"
|
||||||
assertFileContains home-files/.config/fish/config.fish \
|
assertFileContains home-files/.config/fish/config.fish \
|
||||||
'abbr --add --position anywhere -- -C --color'
|
"abbr --add --position anywhere -- -C --color"
|
||||||
assertFileContains home-files/.config/fish/config.fish \
|
assertFileContains home-files/.config/fish/config.fish \
|
||||||
'abbr --add --position anywhere --set-cursor -- L "% | less"'
|
"abbr --add --position anywhere --set-cursor -- L '% | less'"
|
||||||
assertFileContains home-files/.config/fish/config.fish \
|
assertFileContains home-files/.config/fish/config.fish \
|
||||||
'abbr --add --function last_history_item --position anywhere -- !!'
|
"abbr --add --function last_history_item --position anywhere -- !!"
|
||||||
assertFileContains home-files/.config/fish/config.fish \
|
assertFileContains home-files/.config/fish/config.fish \
|
||||||
"abbr --add --function vim_edit --position command --regex '.+\.txt' -- vim_edit_texts"
|
"abbr --add --function vim_edit --position command --regex '.+\.txt' -- vim_edit_texts"
|
||||||
assertFileContains home-files/.config/fish/config.fish \
|
assertFileContains home-files/.config/fish/config.fish \
|
||||||
'abbr --add '"'"'--set-cursor=!'"'"' -- 4DIRS "$(string join \n -- '"'"'for dir in */'"'"' '"'"'cd $dir'"'"' '"'"'!'"'"' '"'"'cd ..'"'"' '"'"'end'"'"')'
|
"abbr --add '--set-cursor=!' -- 4DIRS 'for dir in */
|
||||||
|
cd \$dir
|
||||||
|
!
|
||||||
|
cd ..
|
||||||
|
end
|
||||||
|
'"
|
||||||
assertFileContains home-files/.config/fish/config.fish \
|
assertFileContains home-files/.config/fish/config.fish \
|
||||||
"abbr --add --function multicd --regex '^\.\.+$' -- dotdot"
|
"abbr --add --function multicd --regex '^\.\.+$' -- dotdot"
|
||||||
'';
|
'';
|
||||||
|
|
Loading…
Reference in a new issue