about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2000-05-15 12:51:59 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2000-05-15 12:51:59 +0000
commit5ef2b518fdaf878ae095295db7387778494b5261 (patch)
tree9ab3a05d811df58e8182bebdc56ddaa02f14ea19
parent782f78043e068949c472f96c6d7ef6497e305f12 (diff)
downloadzsh-5ef2b518fdaf878ae095295db7387778494b5261.tar.gz
zsh-5ef2b518fdaf878ae095295db7387778494b5261.tar.xz
zsh-5ef2b518fdaf878ae095295db7387778494b5261.zip
11375: compinstall: menu style select=long and select=long-list
-rw-r--r--ChangeLog5
-rw-r--r--Completion/Core/compinstall77
2 files changed, 55 insertions, 27 deletions
diff --git a/ChangeLog b/ChangeLog
index 82459229b..70333aed7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2000-05-15  Peter Stephenson  <pws@cambridgesiliconradio.com>
+
+	* 11375: Completion/Core/compinstall: menu select keyword takes
+	values long and long-list.
+
 2000-05-15  Oliver Kiddle  <opk@zsh.org>
 
 	* 11376: Makefile.in: install functions before man pages
diff --git a/Completion/Core/compinstall b/Completion/Core/compinstall
index 8b907d88e..ae9cb1593 100644
--- a/Completion/Core/compinstall
+++ b/Completion/Core/compinstall
@@ -1053,9 +1053,7 @@ listings.
 
 3.  Make completion verbose, using option descriptions etc. (on by default).
 
-4.  Allow scrolling of long completion lists and set the prompt.
-
-5.  Make single-valued options display the value's description as
+4.  Make single-valued options display the value's description as
     part of the option's description.
 
 q.  Return without saving.
@@ -1126,25 +1124,6 @@ you want?
           esac
 	 ;;
       4) print "\
-You can make completion lists scroll when they don't fit on the screen.
-To do this, edit a prompt to show when scrolling is active; an empty string
-turns this feature off.  It can contain \`%l' to show the number of matches
-as \`current_number/total_number', \`%p' to show the fraction of the way
-down the list, or font-control sequences such as %B, %U, %S and the
-corresponding %b, %u, %s; quotes will be added automatically.  Note that
-this is the default behaviour; delete the whole line to turn it off, in
-which case the display of completions which don't fit on the screen is
-controlled by the LISTMAX parameter (currently ${LISTMAX:-unset}), which
-specifies the maximum number to show without asking.  Hit return to keep
-the current value.
-"
-         [[ -z $haslistp ]] &&
-	   listp='%SAt %p: Hit TAB for more, or the character to insert%s'
-	 vared -eh -p 'prompt> ' -c listp
-	 # Unconditionally use listp; will become '' if empty.
-	 haslistp=1
-	 ;;
-      5) print "\
 Many commands have options which take a single argument.  In some cases,
 completion is not set up to describe the option even though it has a
 description for the argument.  You can enter a string containing \`%d',
@@ -1172,8 +1151,6 @@ Quotation will be added automatically.
   __ci_set_this_style format format
   __ci_set_this_style group-name groupn
   __ci_set_this_style verbose verbose
-  [[ -n $haslistp ]] && listp=${(qq)listp}
-  __ci_set_this_style list-prompt listp
   [[ -n $autod ]] && autod=${(qq)autod}
   __ci_set_this_style auto-description autod
 }
@@ -1267,6 +1244,9 @@ __ci_do_selection() {
 
   __ci_get_this_style list-colors listc
   __ci_get_this_style menu menu
+  __ci_get_this_style list-prompt listp
+  [[ -n $listp ]] && haslistp=1
+  listp=${(Q)listp}
 
   while true; do
     clear
@@ -1277,6 +1257,8 @@ __ci_do_selection() {
 
 2.   Use cursor keys to select completions from completion lists.
 
+3.   Allow scrolling of long selection lists and set the prompt.
+
 q.   Return without saving.
 0.   Done setting options for insertion.
 "
@@ -1325,13 +1307,17 @@ number of completions.  Please enter:
 - 0 or 1, to turn this feature on unconditionally
 - a higher number to turn this feature on when there are that many
   completions
+- an \`l' for \`long' to turn it on for completions which don't fit on the
+  screen
+- an \`ll' for \`long list' to turn it on for completions which don't fit
+  on the screen, even for commands which only do listing of completions.
 - a negative number to turn this feature off
 - an empty line to leave the setting the way it is.
 "
          while true; do
            vared -eh -p 'value> ' select
-	   [[ -z $select || $select = (-|)<-> ]] && break;
-	   print "Type a number or an empty line." >&2
+	   [[ -z $select || $select = ((-|)<->|l#) ]] && break;
+	   print "Type a number, l, ll, or an empty line." >&2
 	 done
 	 amenu=(${=menu})
 	 elt=${amenu[(i)*select*]}
@@ -1344,6 +1330,18 @@ number of completions.  Please enter:
 	        fi
 		menu="$amenu"
 		;;
+	   l#) if [[ $select = l ]]; then
+                 select=long
+               else
+                 select=long-list
+               fi
+               if [[ -n $elt ]]; then
+                 amenu[$elt]="select=$select"
+               else
+                 amenu=($amenu "select=$select")
+               fi
+	       menu="$amenu"
+               ;;
 	   -<->) if [[ -n $elt ]]; then
 		    # i never liked the way indexing was done anyway
 		    if [[ $elt -eq 1 ]]; then
@@ -1356,6 +1354,28 @@ number of completions.  Please enter:
 		 ;;
 	 esac
          ;;
+      3) print "\
+You can make completion lists scroll when they don't fit on the screen.
+Note this is different from scrolling in menu selection --- a more basic
+pager is used which should work even with fairly stupid terminals.
+
+To enable this, edit a prompt to show when scrolling is active; an empty 
+string turns this feature off.  It can contain \`%l' to show the number of
+matches as \`current_number/total_number', \`%p' to show the fraction of
+the way down the list, or font-control sequences such as %B, %U, %S and the
+corresponding %b, %u, %s; quotes will be added automatically.  Note that
+this is the default behaviour; delete the whole line to turn it off, in
+which case the display of completions which don't fit on the screen is
+controlled by the LISTMAX parameter (currently ${LISTMAX:-unset}), which
+specifies the maximum number to show without asking.  Hit return to keep
+the current value.
+"
+         [[ -z $haslistp ]] &&
+	   listp='%SAt %p: Hit TAB for more, or the character to insert%s'
+	 vared -eh -p 'prompt> ' -c listp
+	 # Unconditionally use listp; will become '' if empty.
+	 haslistp=1
+	 ;;
       q) return 1
          ;;
     esac
@@ -1363,6 +1383,8 @@ number of completions.  Please enter:
 
   __ci_set_this_style list-colors listc
   __ci_set_this_style menu menu
+  [[ -n $haslistp ]] && listp=${(qq)listp}
+  __ci_set_this_style list-prompt listp
 
   return 0
 }
@@ -1385,7 +1407,8 @@ __ci_do_display() {
 2.  Change how completions are inserted: includes options for sorting,
     and keeping the original or an unambiguous prefix with correction etc.
 
-3.  Configure coloured/highlighted completion lists and selection of items.
+3.  Configure coloured/highlighted completion lists, selection of items
+    and scrolling.
 
 4.  Change whether old-style \`compctl' completions will be used.