From: "Manuel Presnitz" <mpy@gmx.net>
To: "Phil Pennock" <zsh-workers+phil.pennock@spodhuis.org>
Cc: zsh-workers@zsh.org
Subject: Re[4]: Bug with named dirs in prompt expansion
Date: Sun, 28 Jul 2013 14:09:56 +0200 [thread overview]
Message-ID: <201307281409560722.00B85479@mail.gmx.net> (raw)
In-Reply-To: <20130727221545.GA58618@redoubt.spodhuis.org>
Phil Pennock hat am 27.07.2013 um 18:15 folgendes geschrieben:
> On 2013-07-27 at 10:24 +0200, Manuel Presnitz wrote:
> > For my apologies I want to quote the zshmisc manpage, which does
> > not mention that "shortening":
>
> Patches to the doc source are a good way to get involved with the
> project. :) "See more details under Foo" would avoid violating DRY
> while still making the content discoverable.
Thanks for the encouragement. Before posting with [PATCH] subject,
I'd like to have a second opinion, because I do not understand the
expression "with ties broken in favour of " in the current doc. Perhaps
other non-native speakers have the same problem, so I simplyfied it very
much, but it can be completely wrong now:
Current doc (Static named directories in zshexpn):
[ In certain circumstances (in prompts, for instance), when the shell
[ prints a path, the path is checked to see if it has a named directory
[ as its prefix. If so, then the prefix portion is replaced with a `~'
[ followed by the name of the directory. The shortest way of referring
[ to the directory is used, with ties broken in favour of using a named
[ directory, except when the directory is / itself
My proposal:
[ When the shell prints a path (e.g. when expanding %~ in prompts or
[ when printing the directory stack), the path is checked to see if it has a
[ named directory as its prefix. If so, then the prefix portion is replaced
[ with a `~' followed by the name of the directory. The shortest way
[ of referring to the directory is used, so either the directory name or the full
[ path.
I also deleted the part "except when the directory is / itself". It seems
unnecessary to me, because a named directory (>= 2 chars) can never be
shorter than "/".
Is there another case, where this applies -- apart from expanding %~ and
printing the directory stack? (I tried to figure it out by grepping the source
code and the man pages, but I failed.)
Because the prompt expansion %~ is IMHO the most important case wherer
the "shell prints a path", I propose a small repetition (despite of DRY),
where as for "dirs" a reference is enough.
I also mentioned $HOME replacement first, this should be much more
common than named directories.
Current doc (SIMPLE PROMPT ESCAPES (%~) in zshmisc)
[ As %d and %/, but if the current working directory has a named
[ directory as its prefix, that part is replaced by a `~' followed by
[ the name of the directory. If it starts with $HOME, that part is
[ replaced by a `~'.
My proposal:
[ As %d and %/, but if the current working directory starts with
[ $HOME, that part is replaced by a `~'. Furthermore, if it has a named
[ directory as its prefix, that part is replaced by a `~' followed by the name
[ of the directory, but only if the result is shorter compared to the full path;
[ see Dynamic and Static named directories in zshexpn(1).
Thanks,
Manuel.
----
diff --git a/Doc/Zsh/builtins.yo b/Doc/Zsh/builtins.yo
index 3623f9b..8e46a88 100644
--- a/Doc/Zsh/builtins.yo
+++ b/Doc/Zsh/builtins.yo
@@ -277,7 +277,9 @@ item(tt(-c))(
clear the directory stack.
)
item(tt(-l))(
-print directory names in full instead of using of using tt(~) expressions.
+print directory names in full instead of using of using tt(~) expressions (\
+ifzman(see em(Dynamic) and em(Static named directories) in zmanref(zshexpn))\
+ifnzman(noderef(Filename Expansion))).
)
item(tt(-p))(
print directory entries one per line.
diff --git a/Doc/Zsh/expn.yo b/Doc/Zsh/expn.yo
index e8d1ed2..9da46bd 100644
--- a/Doc/Zsh/expn.yo
+++ b/Doc/Zsh/expn.yo
@@ -1708,14 +1708,13 @@ Note that trailing slashes will be removed from the path to the directory
It is also possible to define directory names using the tt(-d) option to the
tt(hash) builtin.
-In certain circumstances (in prompts, for instance), when the shell
-prints a path, the path is checked to see if it has a named
-directory as its prefix. If so, then the prefix portion
-is replaced with a `tt(~)' followed by the name of the directory.
-The shortest way of referring to the directory is used,
-with ties broken in favour of using a named directory,
-except when the directory is tt(/) itself. The parameters tt($PWD) and
-tt($OLDPWD) are never abbreviated in this fashion.
+When the shell prints a path (e.g. when expanding tt(%~) in prompts or when
+printing the directory stack), the path is checked to see if it has a named
+directory as its prefix. If so, then the prefix portion is replaced with a
+`tt(~)' followed by the name of the directory.
+The shortest way of referring to the directory is used, so either the directory
+name or the full path.
+The parameters tt($PWD) and tt($OLDPWD) are never abbreviated in this fashion.
subsect(`=' expansion)
diff --git a/Doc/Zsh/prompt.yo b/Doc/Zsh/prompt.yo
index 8d79795..a6b9201 100644
--- a/Doc/Zsh/prompt.yo
+++ b/Doc/Zsh/prompt.yo
@@ -100,10 +100,13 @@ directory to show; zero means the whole path. A negative integer
specifies leading components, i.e. tt(%-1d) specifies the first component.
)
item(tt(%~))(
-As tt(%d) and tt(%/), but if the current working directory has a named
+As tt(%d) and tt(%/), but if the current working directory starts with
+tt($HOME), that part is replaced by a `tt(~)'. Furthermore, if it has a named
directory as its prefix, that part is replaced by a `tt(~)' followed by
-the name of the directory. If it starts with tt($HOME), that part is
-replaced by a `tt(~)'.
+the name of the directory, but only if the result is shorter compared
+to the full path;
+ifzman(see em(Dynamic) and em(Static named directories) in zmanref(zshexpn))\
+ifnzman(noderef(Filename Expansion)).
)
xitem(tt(%h))
item(tt(%!))(
prev parent reply other threads:[~2013-07-28 12:10 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-26 18:58 Manuel Presnitz
2013-07-26 22:31 ` Phil Pennock
2013-07-27 8:24 ` Re[2]: " Manuel Presnitz
2013-07-27 22:15 ` Phil Pennock
2013-07-28 12:09 ` Manuel Presnitz [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201307281409560722.00B85479@mail.gmx.net \
--to=mpy@gmx.net \
--cc=zsh-workers+phil.pennock@spodhuis.org \
--cc=zsh-workers@zsh.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).