* Remove special case sort from completion
@ 2017-06-07 7:25 Bart Schaefer
0 siblings, 0 replies; only message in thread
From: Bart Schaefer @ 2017-06-07 7:25 UTC (permalink / raw)
To: zsh-workers
In the context of the discussion about numericglobsort, there appears to
be some redundant and possibly inconsistently-implemented code used for
sorting completion results.
Other than that it may be somewhat slower, does anyone see a problem with
the following?
diff --git a/Src/Zle/compcore.c b/Src/Zle/compcore.c
index d1cf7a0..52b0c17 100644
--- a/Src/Zle/compcore.c
+++ b/Src/Zle/compcore.c
@@ -3135,7 +3135,9 @@ matchcmp(Cmatch *a, Cmatch *b)
if ((*b)->disp && !((*b)->flags & CMF_MORDER))
return 1;
- return zstrbcmp((*a)->str, (*b)->str);
+ return zstrcmp((*a)->str, (*b)->str, (SORTIT_IGNORING_BACKSLASHES|
+ (isset(NUMERICGLOBSORT) ?
+ SORTIT_NUMERICALLY : 0)));
}
/* This tests whether two matches are equal (would produce the same
diff --git a/Src/Zle/zle_tricky.c b/Src/Zle/zle_tricky.c
index 3d86791..5a9cccb 100644
--- a/Src/Zle/zle_tricky.c
+++ b/Src/Zle/zle_tricky.c
@@ -2407,53 +2407,6 @@ sfxlen(char *s, char *t)
}
#endif
-/* This is zstrcmp with ignoring backslashes. */
-
-/**/
-mod_export int
-zstrbcmp(const char *a, const char *b)
-{
- const char *astart = a;
-
- while (*a && *b) {
- if (*a == '\\')
- a++;
- if (*b == '\\')
- b++;
- if (*a != *b || !*a)
- break;
- a++;
- b++;
- }
- if (isset(NUMERICGLOBSORT) && (idigit(*a) || idigit(*b))) {
- for (; a > astart && idigit(a[-1]); a--, b--);
- if (idigit(*a) && idigit(*b)) {
- while (*a == '0')
- a++;
- while (*b == '0')
- b++;
- for (; idigit(*a) && *a == *b; a++, b++);
- if (idigit(*a) || idigit(*b)) {
- int cmp = (int) STOUC(*a) - (int) STOUC(*b);
-
- while (idigit(*a) && idigit(*b))
- a++, b++;
- if (idigit(*a) && !idigit(*b))
- return 1;
- if (idigit(*b) && !idigit(*a))
- return -1;
-
- return cmp;
- }
- }
- }
-#ifndef HAVE_STRCOLL
- return (int)(*a - *b);
-#else
- return strcoll(a,b);
-#endif
-}
-
/* This is used to print the strings (e.g. explanations). *
* It returns the number of lines printed. */
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2017-06-07 7:25 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-07 7:25 Remove special case sort from completion Bart Schaefer
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).