about summary refs log tree commit diff
path: root/Src
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2006-03-07 12:50:56 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2006-03-07 12:50:56 +0000
commite17fc5079394ce0c30dc0573676983e6f4a0a5bc (patch)
tree06981ab59bbc3b81d9d18cc8dd1daf8a7301ddad /Src
parent1c06bba93159db354447d6edc31e76e5b1ae736c (diff)
downloadzsh-e17fc5079394ce0c30dc0573676983e6f4a0a5bc.tar.gz
zsh-e17fc5079394ce0c30dc0573676983e6f4a0a5bc.tar.xz
zsh-e17fc5079394ce0c30dc0573676983e6f4a0a5bc.zip
22328, modified: add -o option to compadd
add _list_files helper to handle new file-list style for _path_files
Diffstat (limited to 'Src')
-rw-r--r--Src/Zle/comp.h1
-rw-r--r--Src/Zle/compcore.c4
-rw-r--r--Src/Zle/complete.c3
3 files changed, 6 insertions, 2 deletions
diff --git a/Src/Zle/comp.h b/Src/Zle/comp.h
index 5e25cdeb6..e88f8b927 100644
--- a/Src/Zle/comp.h
+++ b/Src/Zle/comp.h
@@ -131,6 +131,7 @@ struct cmatch {
 #define CMF_FMULT    (1<<12)	/* first of multiple equal strings */
 #define CMF_ALL      (1<<13)	/* a match representing all other matches */
 #define CMF_DUMMY    (1<<14)	/* unselectable dummy match */
+#define CMF_MORDER   (1<<15)    /* order by matches, not display strings */
 
 /* Stuff for completion matcher control. */
 
diff --git a/Src/Zle/compcore.c b/Src/Zle/compcore.c
index 1caad5484..008f49185 100644
--- a/Src/Zle/compcore.c
+++ b/Src/Zle/compcore.c
@@ -2735,7 +2735,7 @@ addexpl(int always)
 static int
 matchcmp(Cmatch *a, Cmatch *b)
 {
-    if ((*a)->disp) {
+    if ((*a)->disp && !((*a)->flags & CMF_MORDER)) {
 	if ((*b)->disp) {
 	    if ((*a)->flags & CMF_DISPLINE) {
 		if ((*b)->flags & CMF_DISPLINE)
@@ -2751,7 +2751,7 @@ matchcmp(Cmatch *a, Cmatch *b)
 	}
 	return -1;
     }
-    if ((*b)->disp)
+    if ((*b)->disp && !((*b)->flags & CMF_MORDER))
 	return 1;
 
     return strbpcmp(&((*a)->str), &((*b)->str));
diff --git a/Src/Zle/complete.c b/Src/Zle/complete.c
index e246e2b8a..c70c8c191 100644
--- a/Src/Zle/complete.c
+++ b/Src/Zle/complete.c
@@ -569,6 +569,9 @@ bin_compadd(char *name, char **argv, UNUSED(Options ops), UNUSED(int func))
 	    case 'l':
 		dat.flags |= CMF_DISPLINE;
 		break;
+	    case 'o':
+		dat.flags |= CMF_MORDER;
+		break;
 	    case 'E':
                 if (p[1]) {
                     dat.dummies = atoi(p + 1);