zsh-workers
 help / color / mirror / code / Atom feed
From: Daniel Shahaf <d.s@daniel.shahaf.name>
To: Martin Steigerwald <martin.steigerwald@teamix.de>,
	844710@bugs.debian.org
Cc: zsh-workers@zsh.org, Axel Beckert <abe@debian.org>
Subject: Re: Bug#844710: Fwd: Re: [Pkg-zsh-devel] Bug#844710: autocorrection suggested rm for typing mr without typing "y"
Date: Sat, 19 Nov 2016 07:55:42 +0000	[thread overview]
Message-ID: <20161119075542.GA6750@fujitsu.shahaf.local2> (raw)
In-Reply-To: <3574167.p9ErITdPmY@merkaba>

Martin Steigerwald wrote on Fri, Nov 18, 2016 at 14:15:51 +0100:
> So two fixes to consider:
> 
> 1) Don´t confirm on space, as thats to easy to trigger accidentally. :)

The code confirms on both tabs (since commit 7f1ce570) and spaces (since
before CVS).  Does anyone know a reason for doing this?

The patch also downscopes a couple of local variables, with no
functional change.

diff --git a/README b/README
index 855e764..4834e00 100644
--- a/README
+++ b/README
@@ -116,6 +116,11 @@ are output as "export" commands unless the parameter is also local, and
 other parameters not local to the scope are output with the "-g" option.
 Previously, only "typeset" commands were output, never using "-g".
 
+8) At spelling-correction prompt ($SPROMPT), where the choices offered are
+[nyae], previously <Enter> would be accepted to mean [N] and <Space> and
+<Tab> would be accepted to mean [Y].  Now <Space> and <Tab> are invalid
+choices: typing either of them remains at the prompt.
+
 Incompatibilities between 5.0.8 and 5.2
 ---------------------------------------
 
diff --git a/Src/utils.c b/Src/utils.c
index 7bbd588..7f3ddad 100644
--- a/Src/utils.c
+++ b/Src/utils.c
@@ -2944,9 +2944,7 @@ mod_export void
 spckword(char **s, int hist, int cmd, int ask)
 {
     char *t, *correct_ignore;
-    int x;
     char ic = '\0';
-    int ne;
     int preflen = 0;
     int autocd = cmd && isset(AUTOCD) && strcmp(*s, ".") && strcmp(*s, "..");
 
@@ -3015,6 +3013,7 @@ spckword(char **s, int hist, int cmd, int ask)
     } else {
 	guess = *s;
 	if (*guess == Tilde || *guess == String) {
+	    int ne;
 	    ic = *guess;
 	    if (!*++t)
 		return;
@@ -3059,6 +3058,7 @@ spckword(char **s, int hist, int cmd, int ask)
     if (errflag)
 	return;
     if (best && (int)strlen(best) > 1 && strcmp(best, guess)) {
+	int x;
 	if (ic) {
 	    char *u;
 	    if (preflen) {
@@ -3088,14 +3088,14 @@ spckword(char **s, int hist, int cmd, int ask)
 		free(pptbuf);
 		fflush(shout);
 		zbeep();
-		x = getquery("nyae \t", 0);
+		x = getquery("nyae", 0);
 		if (cmd && x == 'n')
 		    pathchecked = path;
 	    } else
 		x = 'n';
 	} else
 	    x = 'y';
-	if (x == 'y' || x == ' ' || x == '\t') {
+	if (x == 'y') {
 	    *s = dupstring(best);
 	    if (hist)
 		hwrep(best);


On a tangent: what do "nyae" mean?  I couldn't find the answer in the
manual.

> 2) Don´t autocorrect to dangerous commands like "rm". Could be a bit 
> challenging to make a list of commands which are dangerous and can easily 
> trigger unwanted actions. "rm" would IMO definately be one of this, while with 
> "dd" it would be harder to trigger an unwanted action by accident due to 
> syntax requirements.
> 
> Axel made me aware that I tell Z-Shell to ignore dangerous commands with 
> CORRECT_IGNORE=rm, but I think it would be good to reconsider the standard 
> behavior.

Well, it _does_ prompt the user asking whether "rm" is correct.  Isn't
that sufficient?

Cheers,

Daniel


  reply	other threads:[~2016-11-19  7:58 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-18 13:15 Martin Steigerwald
2016-11-19  7:55 ` Daniel Shahaf [this message]
2016-11-19 11:27   ` Bug#844710: " Martin Steigerwald
2016-11-19 11:46     ` Frank Terbeck
2016-11-19 12:21       ` Daniel Shahaf
2016-11-19 18:00   ` Bart Schaefer
2016-11-19 21:54     ` Daniel Shahaf
2016-11-20 19:22       ` Peter Stephenson

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=20161119075542.GA6750@fujitsu.shahaf.local2 \
    --to=d.s@daniel.shahaf.name \
    --cc=844710@bugs.debian.org \
    --cc=abe@debian.org \
    --cc=martin.steigerwald@teamix.de \
    --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).