diff options
author | Daniel Shahaf <d.s@daniel.shahaf.name> | 2016-08-04 15:53:27 +0000 |
---|---|---|
committer | Daniel Shahaf <d.s@daniel.shahaf.name> | 2016-08-05 12:37:26 +0000 |
commit | f026a4dc12d93518fded8df4f14fb3161ab1db98 (patch) | |
tree | 8c8d00032bc213014490ff0b42b3194669987cc0 | |
parent | dd6f79759fee9128bd99eff939655c34a1eb2813 (diff) | |
download | zsh-f026a4dc12d93518fded8df4f14fb3161ab1db98.tar.gz zsh-f026a4dc12d93518fded8df4f14fb3161ab1db98.tar.xz zsh-f026a4dc12d93518fded8df4f14fb3161ab1db98.zip |
38991: Make 'whence -v autoloaded-function' shows the defining filename.
This may also fix a problem whereby the %x prompt escape evaluated to a function name rather than a filename, since %x is also backed by scriptfilename.
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | Src/exec.c | 3 | ||||
-rw-r--r-- | Test/C04funcdef.ztst | 10 |
3 files changed, 15 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog index 71d4052fb..dc06dbe50 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2016-08-05 Daniel Shahaf <d.s@daniel.shahaf.name> + * 38991: Src/exec.c, Test/C04funcdef.ztst: Make 'whence -v + autoloaded-function' shows the defining filename. + * 38990: Completion/Debian/Type/_debbugs_bugnumber: Track bts's data dir migration. diff --git a/Src/exec.c b/Src/exec.c index 515406f33..ea9214d04 100644 --- a/Src/exec.c +++ b/Src/exec.c @@ -4915,7 +4915,8 @@ execautofn_basic(Estate state, UNUSED(int do_exec)) oldscriptname = scriptname; oldscriptfilename = scriptfilename; - scriptname = scriptfilename = dupstring(shf->node.nam); + scriptname = dupstring(shf->node.nam); + scriptfilename = dupstring(shf->filename); execode(shf->funcdef, 1, 0, "loadautofunc"); scriptname = oldscriptname; scriptfilename = oldscriptfilename; diff --git a/Test/C04funcdef.ztst b/Test/C04funcdef.ztst index 496577f6c..9f15e04ff 100644 --- a/Test/C04funcdef.ztst +++ b/Test/C04funcdef.ztst @@ -321,6 +321,16 @@ > print oops was successfully autoloaded >} + ( + fpath=(.) + printf '%s\n' 'oops(){}' 'ninjas-earring(){}' 'oops "$@"' >oops + autoload oops + oops + whence -v oops + ) +0:whence -v of zsh-style autoload +>oops is a shell function from ./oops + %clean rm -f file.in file.out |