From: Tomoki Sekiyama <tomoki.sekiyama@gmail.com>
To: zsh-workers@zsh.org
Subject: [PATCH] Add CORRECT_IGNORE_FILE for file names pattern ignored during CORRECT_ALL
Date: Mon, 28 Apr 2014 10:11:33 -0400 [thread overview]
Message-ID: <1398694293-30991-1-git-send-email-tomoki.sekiyama@gmail.com> (raw)
In-Reply-To: <1398377115-30146-1-git-send-email-tomoki.sekiyama@gmail.com>
It seems 'CORRECT_IGNORE_FILE' most acceptable, so I changed the name
of shell variable.
=====
Add CORRECT_IGNORE_FILE for file names pattern ignored during CORRECT_ALL
When CORRECT_ALL is enabled, spell checking for file names may suggest
unwanted correction for command arguments. For example, if a file named
'.status' exists in current directory, `git status' will ask:
zsh: correct 'status' to '.status' [nyae]?
With this patch, we can avoid this by set CORRECT_IGNORE_FILE shell variable
to '.*', that means dotfile names shouldn't be suggested.
---
Doc/Zsh/options.yo | 3 +++
Doc/Zsh/params.yo | 7 +++++++
Src/utils.c | 11 ++++++++++-
3 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/Doc/Zsh/options.yo b/Doc/Zsh/options.yo
index fbcf28c..f7e11d2 100644
--- a/Doc/Zsh/options.yo
+++ b/Doc/Zsh/options.yo
@@ -1098,6 +1098,9 @@ pindex(CORRECTALL)
pindex(NOCORRECTALL)
item(tt(CORRECT_ALL) (tt(-O)))(
Try to correct the spelling of all arguments in a line.
+
+The shell variable tt(CORRECT_IGNORE_FILE) may be set to a pattern to
+match file names that will never be offered as corrections.
)
pindex(DVORAK)
pindex(NO_DVORAK)
diff --git a/Doc/Zsh/params.yo b/Doc/Zsh/params.yo
index 8d95355..ec7a1f2 100644
--- a/Doc/Zsh/params.yo
+++ b/Doc/Zsh/params.yo
@@ -917,6 +917,13 @@ of file names, as applied by the tt(CORRECT_ALL) option (so with the
example just given files beginning with `tt(_)' in the current
directory would still be completed).
)
+vindex(CORRECT_IGNORE_FILE)
+item(tt(CORRECT_IGNORE_FILE))(
+If set, is treated as a pattern during spelling correction of file names.
+Any file names correction that matches the pattern is ignored. For example,
+if the value is `tt(.*)' then dot file names will never be offered
+as spelling corrections. This is useful with the tt(CORRECT_ALL) option.
+)
vindex(DIRSTACKSIZE)
item(tt(DIRSTACKSIZE))(
The maximum size of the directory stack, by default there is no limit. If the
diff --git a/Src/utils.c b/Src/utils.c
index e1fd7a3..9439227 100644
--- a/Src/utils.c
+++ b/Src/utils.c
@@ -2491,7 +2491,7 @@ getquery(char *valid_chars, int purge)
static int d;
static char *guess, *best;
-static Patprog spckpat;
+static Patprog spckpat, spnamepat;
/**/
static void
@@ -2562,6 +2562,13 @@ spckword(char **s, int hist, int cmd, int ask)
} else
spckpat = NULL;
+ if ((correct_ignore = getsparam("CORRECT_IGNORE_FILE")) != NULL) {
+ tokenize(correct_ignore = dupstring(correct_ignore));
+ remnulargs(correct_ignore);
+ spnamepat = patcompile(correct_ignore, 0, NULL);
+ } else
+ spnamepat = NULL;
+
if (**s == String && !*t) {
guess = *s + 1;
if (itype_end(guess, IIDENT, 1) == guess)
@@ -3783,6 +3790,8 @@ mindist(char *dir, char *mindistguess, char *mindistbest)
if (!(dd = opendir(unmeta(dir))))
return mindistd;
while ((fn = zreaddir(dd, 0))) {
+ if (spnamepat && pattry(spnamepat, fn))
+ continue;
nd = spdist(fn, mindistguess,
(int)strlen(mindistguess) / 4 + 1);
if (nd <= mindistd) {
--
1.9.0
prev parent reply other threads:[~2014-04-28 14:12 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-24 22:05 [PATCH] Add CORRECT_IGNORE_NAME " Tomoki Sekiyama
2014-04-25 16:01 ` Bart Schaefer
2014-04-25 16:09 ` Peter Stephenson
2014-04-28 14:11 ` Tomoki Sekiyama [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=1398694293-30991-1-git-send-email-tomoki.sekiyama@gmail.com \
--to=tomoki.sekiyama@gmail.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).