mirror of
https://github.com/fish-shell/fish-shell
synced 2025-01-14 14:03:58 +00:00
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:
parent
9eb2b69a51
commit
be36c96028
2 changed files with 3 additions and 1 deletions
|
@ -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])
|
||||
|
|
|
@ -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'
|
||||
|
|
Loading…
Reference in a new issue