alias.fish: unbreak listing aliases without backslashes

The description for an alias which already has escape sequences will
use backslash escapes for quoting; usually `string escape` can simply
quote it.  Use a regex that accepts either escaping style.
This commit is contained in:
Johannes Altmanninger 2020-04-18 09:35:33 +02:00
parent 9eb2b69a51
commit be36c96028
2 changed files with 3 additions and 1 deletions

View file

@ -17,7 +17,7 @@ function alias --description 'Creates a function wrapping a command'
if not set -q argv[1]
# Print the known aliases.
for func in (functions -n)
set -l output (functions $func | string match -r -- "^function .* --description '?alias(.*)")
set -l output (functions $func | string match -r -- "^function .* --description (?:'alias (.*)'|alias\\\\ (.*))\$")
if set -q output[2]
set output (string replace -r -- '^'$func'[= ]' '' $output[2])
echo alias $func (string escape -- $output[1])

View file

@ -9,6 +9,7 @@ my_alias
# CHECK: foo ran
alias a-2='echo "hello there"'
alias a-3='echo hello\ there'
alias foo '"a b" c d e'
# Bare `alias` should list the aliases we have created and nothing else
@ -16,5 +17,6 @@ alias foo '"a b" c d e'
# framework and we can't predict the definition.
alias | grep -Ev '^alias (fish_indent|fish_key_reader) '
# CHECK: alias a-2 'echo "hello there"'
# CHECK: alias a-3 echo\\\ hello\\\\\\\ there
# CHECK: alias foo '"a b" c d e'
# CHECK: alias my_alias 'foo; and echo foo ran'