From: Marlon Richert <marlon.richert@gmail.com>
To: Bart Schaefer <schaefer@brasslantern.com>,
Zsh hackers list <zsh-workers@zsh.org>
Subject: Let run-help filter cmd_args before calling run-help-<command> (was Re: [RFC][PATCH] Try calling command with help flags in run-help)
Date: Wed, 2 Jun 2021 23:58:01 +0300 [thread overview]
Message-ID: <CAHLkEDvhcTi-q-yKiwYAhyuSWTjB-mof0RCKqWyhmFrFQjPOsA@mail.gmail.com> (raw)
In-Reply-To: <CAH+w=7Y1M-TkTJNb0q8LECy6-fViN=As5cn6KohneyeDLdPv4Q@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 468 bytes --]
And here's another part of workers 48926 as a separate patch.
On Tue, May 25, 2021 at 11:57 PM Bart Schaefer
<schaefer@brasslantern.com> wrote:
>
> On Tue, May 25, 2021 at 1:49 PM Marlon Richert <marlon.richert@gmail.com> wrote:
> >
> > When there isn't a man page, try calling the command with --help or -h.
>
> This is not a good idea, because we can't predict what will happen if
> a given command does not support those options, or interprets them
> differently.
[-- Attachment #2: 0001-Let-run-help-filter-cmd_args-before-calling-run-help.txt --]
[-- Type: text/plain, Size: 3646 bytes --]
From 29d2c303c43039a333e9ad3a5c495f33af85d955 Mon Sep 17 00:00:00 2001
From: Marlon Richert <marlon.richert@gmail.com>
Date: Wed, 2 Jun 2021 22:58:42 +0300
Subject: [PATCH] Let run-help filter cmd_args before calling
run-help-<command>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
…to make it easier to write run-help-<command> functions.
---
Functions/Misc/run-help | 27 +++++++++++++++++++++------
Functions/Misc/run-help-btrfs | 4 ----
Functions/Misc/run-help-ip | 4 ----
Functions/Misc/run-help-p4 | 2 +-
Functions/Misc/run-help-svk | 2 +-
Functions/Misc/run-help-svn | 2 +-
6 files changed, 24 insertions(+), 17 deletions(-)
diff --git a/Functions/Misc/run-help b/Functions/Misc/run-help
index e351dd6a6..19f51a7f8 100644
--- a/Functions/Misc/run-help
+++ b/Functions/Misc/run-help
@@ -101,12 +101,27 @@ do
builtin getln cmd_args
builtin print -z "$cmd_args"
cmd_args=( ${(z)cmd_args} )
- # Discard environment assignments, etc.
- while [[ $cmd_args[1] != ${run_help_orig_cmd:-$1} ]]
- do
- shift cmd_args || return 1
- done
- eval "run-help-$1:t ${(q@)cmd_args[2,-1]}"
+
+ # Discard environment assignments, etc.
+ while [[ $cmd_args[1] != ${run_help_orig_cmd:-$1} ]]; do
+ shift cmd_args ||
+ return 1
+ done
+
+ # Discard the command itself.
+ shift cmd_args
+
+ # Discard the first -, -- or ; and everything after it.
+ shift -p (( $#cmd_args + 1 - cmd_args[(i)(-|--|;)] )) cmd_args
+
+ # Discard options, parameter assignments & paths.
+ while [[ $#cmd_args[@] -gt 0 &&
+ ( $cmd_args[1] == ([-+]|*=*|*/*|~*) ||
+ -e ${(e)~cmd_args[1]} ) ]]; do
+ shift cmd_args
+ done
+
+ eval "run-help-$1:t ${(@q)cmd_args}"
else
POSIXLY_CORRECT=1 man $@:t
fi
diff --git a/Functions/Misc/run-help-btrfs b/Functions/Misc/run-help-btrfs
index 0dc1dabcb..cb139e9b7 100644
--- a/Functions/Misc/run-help-btrfs
+++ b/Functions/Misc/run-help-btrfs
@@ -1,7 +1,3 @@
-while [[ $# != 0 && $1 == -* ]]; do
- shift
-done
-
case $1 in
(b*) man btrfs-balance ;;
(c*) man btrfs-check ;;
diff --git a/Functions/Misc/run-help-ip b/Functions/Misc/run-help-ip
index 8807f9ef1..b811ce352 100644
--- a/Functions/Misc/run-help-ip
+++ b/Functions/Misc/run-help-ip
@@ -14,10 +14,6 @@ if ! man -w ip-address >/dev/null 2>&1; then
return
fi
-while [[ $# != 0 && $1 == -* ]]; do
- shift
-done
-
case $1 in
(addrl*) man ip-addrlabel ;;
(a*) man ip-address ;;
diff --git a/Functions/Misc/run-help-p4 b/Functions/Misc/run-help-p4
index 662ce94fe..e48a4d068 100644
--- a/Functions/Misc/run-help-p4
+++ b/Functions/Misc/run-help-p4
@@ -2,4 +2,4 @@ if (( ! $# )); then
p4 help commands
else
p4 help $1
-fi | ${=PAGER:-less}
+fi | ${=PAGER:-more}
diff --git a/Functions/Misc/run-help-svk b/Functions/Misc/run-help-svk
index 92438a53f..782538246 100644
--- a/Functions/Misc/run-help-svk
+++ b/Functions/Misc/run-help-svk
@@ -1 +1 @@
-svk help ${${@:#-*}[1]} | ${=PAGER:-more}
+svk help $1 | ${=PAGER:-more}
diff --git a/Functions/Misc/run-help-svn b/Functions/Misc/run-help-svn
index 5d1068588..d55a493a6 100644
--- a/Functions/Misc/run-help-svn
+++ b/Functions/Misc/run-help-svn
@@ -1 +1 @@
-svn help ${${@:#-*}[1]} | ${=PAGER:-more}
+svn help $1 | ${=PAGER:-more}
--
2.30.1 (Apple Git-130)
next prev parent reply other threads:[~2021-06-02 20:58 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-25 20:47 [RFC][PATCH] Try calling command with help flags in run-help Marlon Richert
2021-05-25 20:57 ` Bart Schaefer
2021-06-02 18:26 ` [PATCH] Let run-help try to show function source from file (was Re: [RFC][PATCH] Try calling command with help flags in run-help) Marlon Richert
2021-06-20 21:23 ` Lawrence Velázquez
2021-07-18 18:38 ` Lawrence Velázquez
2021-07-28 2:03 ` Bart Schaefer
2021-06-02 20:58 ` Marlon Richert [this message]
2021-06-03 4:34 ` Let run-help filter cmd_args before calling run-help-<command> " Bart Schaefer
2021-06-03 4:38 ` Bart Schaefer
2021-06-03 21:26 ` Marlon Richert
2021-06-03 21:45 ` Lawrence Velázquez
2021-06-03 21:52 ` Bart Schaefer
2021-06-03 22:00 ` Lawrence Velázquez
2021-06-03 23:33 ` Bart Schaefer
2021-06-05 19:15 ` Marlon Richert
2021-06-20 18:01 ` Lawrence Velázquez
2021-07-18 18:45 ` Lawrence Velázquez
2021-07-28 17:58 ` Bart Schaefer
2021-07-29 12:11 ` Marlon Richert
2021-07-30 16:55 ` Bart Schaefer
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=CAHLkEDvhcTi-q-yKiwYAhyuSWTjB-mof0RCKqWyhmFrFQjPOsA@mail.gmail.com \
--to=marlon.richert@gmail.com \
--cc=schaefer@brasslantern.com \
--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).