zsh-workers
 help / color / mirror / code / Atom feed
* PATCH: Fix inverted condition for unique completions
@ 2022-03-15 11:56 Mikael Magnusson
  2022-03-17 17:08 ` Mikael Magnusson
  0 siblings, 1 reply; 9+ messages in thread
From: Mikael Magnusson @ 2022-03-15 11:56 UTC (permalink / raw)
  To: zsh-workers

This change makes most-recent-file[1] completion take a few milliseconds
instead of close to a minute in a directory of 30000 files. I'm not sure
exactly what's going on with these flags, but surely if they are not set,
then we should not deduplicate the set of matches. Most likely this was
a thinko-copy-paste-o from the first NOSORT case which does have to be
negated. I'm not sure why regular tab-press was always fast, but it is
still fast after this change for me.

I don't know when these flags are supposed to be set, so I haven't tested
that case.

[1]
zstyle ':completion:(*-|)most-recent-file:*' match-original both
zstyle ':completion:(*-|)most-recent-file:*' file-sort modification
zstyle ':completion:(*-|)most-recent-file:*' file-patterns '*:all\ files'
zstyle ':completion:most-recent-file:*' hidden all
zstyle ':completion:(*-|)most-recent-file:*' completer _files

---

This bug is present since before cvs, according to git blame.

 Src/Zle/compcore.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/Src/Zle/compcore.c b/Src/Zle/compcore.c
index ebcd7d85bb..778a4ff571 100644
--- a/Src/Zle/compcore.c
+++ b/Src/Zle/compcore.c
@@ -3254,7 +3254,7 @@ makearray(LinkList l, int type, int flags, int *np, int *nlp, int *llp)
 	    qsort((void *) rp, n, sizeof(Cmatch),
 		  (int (*) _((const void *, const void *)))matchcmp);
 
-	    if (!(flags & CGF_UNIQCON)) {
+	    if (flags & CGF_UNIQCON) {
 		int dup;
 
 		/* And delete the ones that occur more than once. */
@@ -3280,7 +3280,7 @@ makearray(LinkList l, int type, int flags, int *np, int *nlp, int *llp)
 		    nl++;
 	    }
 	} else {
-	    if (!(flags & CGF_UNIQALL) && !(flags & CGF_UNIQCON)) {
+	    if (flags & CGF_UNIQALL) {
                 int dup;
 
 		for (ap = rp; *ap; ap++) {
@@ -3303,7 +3303,7 @@ makearray(LinkList l, int type, int flags, int *np, int *nlp, int *llp)
                             (*ap)->flags |= CMF_FMULT;
                     }
 		}
-	    } else if (!(flags & CGF_UNIQCON)) {
+	    } else if (flags & CGF_UNIQCON) {
 		int dup;
 
 		for (ap = cp = rp; *ap; ap++) {
-- 
2.15.1



^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2022-03-30 18:33 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-15 11:56 PATCH: Fix inverted condition for unique completions Mikael Magnusson
2022-03-17 17:08 ` Mikael Magnusson
2022-03-17 19:17   ` Bart Schaefer
2022-03-17 19:32     ` Mikael Magnusson
2022-03-26  1:40       ` PATCH 1/2: Fix comments for UNIQCON/ALL Mikael Magnusson
2022-03-26  1:43         ` PATCH 2/2: [WIP] Efficient dedup for unsorted completions Mikael Magnusson
2022-03-29 16:07           ` PATCHv2 2/2: " Mikael Magnusson
2022-03-30 16:41           ` PATCH 2/2: [WIP] " Bart Schaefer
2022-03-30 18:33             ` Mikael Magnusson

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).