about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2003-07-21 17:01:34 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2003-07-21 17:01:34 +0000
commit48205cc72ff7ce3a1470226ae508e5194252db4e (patch)
tree2726d7ddc7ac72cdf7988dc490afcdfa7852d1e7
parent7209f6be5a34cfe936a3d14b0bd61a468e830838 (diff)
downloadzsh-48205cc72ff7ce3a1470226ae508e5194252db4e.tar.gz
zsh-48205cc72ff7ce3a1470226ae508e5194252db4e.tar.xz
zsh-48205cc72ff7ce3a1470226ae508e5194252db4e.zip
18859: Allow the sort style to override sorting by setting explicitly to false.
-rw-r--r--ChangeLog6
-rw-r--r--Completion/Base/Core/_description14
-rw-r--r--Doc/Zsh/compsys.yo22
3 files changed, 35 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index 3f63516be..e1b218f51 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2003-07-21  Peter Stephenson  <pws@csr.com>
+
+	* 18859: Completion/Base/Core/_description, Doc/Zsh/compsys.yo:
+	Allow sort style to be set to false to turn off sorting when
+	on by default.
+
 2003-07-21  Doug Kearns  <djkea2@mugca.its.monash.edu.au>
 
 	* 18872: Completion/Unix/Command/_java: update javac completion for
diff --git a/Completion/Base/Core/_description b/Completion/Base/Core/_description
index 41f4f2483..573bfbc3d 100644
--- a/Completion/Base/Core/_description
+++ b/Completion/Base/Core/_description
@@ -1,6 +1,6 @@
 #autoload
 
-local name gropt nopt xopt format gname hidden hide match opts tag
+local name gropt nopt xopt format gname hidden hide match opts tag sort
 
 opts=()
 
@@ -31,6 +31,18 @@ zstyle -s ":completion:${curcontext}:$1" matcher match &&
     opts=($opts -M "$match")
 [[ -n "$_matcher" ]] && opts=($opts -M "$_matcher")
 
+# Use sort style, but ignore `menu' value to help _expand.
+# Also don't override explicit use of -V.
+if { zstyle -s ":completion:${curcontext}:$1" sort sort ||
+     zstyle -s ":completion:${curcontext}:" sort sort; } &&
+    [[ "$gropt" = -J && $sort != menu ]]; then
+    if [[ "$sort" = (yes|true|1|on) ]]; then
+	gropt=(-J)
+    else
+	gropt=(-V)
+    fi
+fi
+
 if [[ -z "$_comp_no_ignore" ]]; then
   zstyle -a ":completion:${curcontext}:$1" ignored-patterns _comp_ignore ||
     _comp_ignore=()
diff --git a/Doc/Zsh/compsys.yo b/Doc/Zsh/compsys.yo
index e48a057f7..6b77fb8f8 100644
--- a/Doc/Zsh/compsys.yo
+++ b/Doc/Zsh/compsys.yo
@@ -2162,12 +2162,22 @@ is started, making it easy to select either of them.
 )
 kindex(sort, completion style)
 item(tt(sort))(
-If set to `true', completing words from the command
-history sorts the words alphabetically instead of
-keeping them in the order in which they appear in the history (from
-youngest to oldest).
-
-This is also used by the tt(_expand) completer. If it is set to
+Many completion widgets call tt(_description) at some point which
+decides whether the matches are added sorted or unsorted (often
+indirectly via tt(_wanted) or tt(_requested)).  This style can be set
+explicitly to one of the usual true or false values as an override.
+If it is not set for the context, the standard behaviour of the
+calling widget is used.
+
+The style is tested first against the full context including the tag, and
+if that fails to produce a value against the context without the tag.
+
+If the calling widget explicitly requests unsorted matches, this is usually
+honoured.  However, the default (unsorted) behaviour of completion
+for the command history may be overridden by setting the style to
+tt(true).
+
+In the tt(_expand) completer, if it is set to
 `true', the expansions generated will always be sorted.  If it is set
 to `tt(menu)', then the expansions are only sorted when they are offered 
 as single strings but not in the string containing all possible