about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBart Schaefer <barts@users.sourceforge.net>2004-07-12 04:00:29 +0000
committerBart Schaefer <barts@users.sourceforge.net>2004-07-12 04:00:29 +0000
commitdef0167e34a276bbcf6e1e63435dd77a79b12b18 (patch)
tree125e9dbf5ffd229e748c9b22da5e357f259bcbc6
parent86ae90bc1c2866b1b10a326d4cdbdb8b02a9f9a9 (diff)
downloadzsh-def0167e34a276bbcf6e1e63435dd77a79b12b18.tar.gz
zsh-def0167e34a276bbcf6e1e63435dd77a79b12b18.tar.xz
zsh-def0167e34a276bbcf6e1e63435dd77a79b12b18.zip
20145: Additional arguments to read-from-minibuffer specify initial values
of LBUFFER and RBUFFER.
-rw-r--r--ChangeLog6
-rw-r--r--Doc/Zsh/contrib.yo14
-rw-r--r--Functions/Zle/read-from-minibuffer4
3 files changed, 19 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index c83b389e0..e12eb3b46 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -8,6 +8,12 @@
 	prompt variable is always reread; fixes bug that if PS1
 	was altered the prompt string was invalid.
 
+2004-07-10  Bart Schaefer  <schaefer@zsh.org>
+
+	* 20145: Doc/Zsh/contrib.yo, Functions/Zle/read-from-minibuffer:
+	second and third arguments of read-from-minibuffer now specify the
+	initial values of LBUFFER and RBUFFER.
+
 2004-07-07  Peter Stephenson  <pws@csr.com>
 
 	* 20142: Test/A06assign.ztst: add test for bug fixed in
diff --git a/Doc/Zsh/contrib.yo b/Doc/Zsh/contrib.yo
index 5ab627352..17a0e0792 100644
--- a/Doc/Zsh/contrib.yo
+++ b/Doc/Zsh/contrib.yo
@@ -742,12 +742,20 @@ when executing, for example, tt(execute-named-cmd)).  The value is then
 returned to the calling function in the parameter tt($REPLY) and the
 editing buffer restored to its previous state.  If the read was aborted
 by a keyboard break (typically tt(^G)), the function returns status 1
-and tt($REPLY) is not set.  If an argument is supplied to the function
-it is taken as a prompt, otherwise `tt(? )' is used.
+and tt($REPLY) is not set.
+
+If one argument is supplied to the function it is taken as a prompt,
+otherwise `tt(? )' is used.  If two arguments are supplied, they are the
+prompt and the initial value of tt($LBUFFER), and if a third argument is
+given it is the initial value of tt($RBUFFER).  This provides a default
+value and starting cursor placement.  Upon return the entire buffer is the
+value of tt($REPLY).
 
 One option is available: `tt(-k) var(num)' specifies that var(num)
 characters are to be read instead of a whole line.  The line editor is not
-invoked recursively in this case.  Note that unlike the tt(read) builtin
+invoked recursively in this case, so depending on the terminal settings
+the input may not be visible, and only the input keys are placed in
+tt($REPLY), not the entire buffer.  Note that unlike the tt(read) builtin
 var(num) must be given; there is no default.
 
 The name is a slight misnomer, as in fact the shell's own minibuffer is
diff --git a/Functions/Zle/read-from-minibuffer b/Functions/Zle/read-from-minibuffer
index 6af7f2a39..c3848ae9f 100644
--- a/Functions/Zle/read-from-minibuffer
+++ b/Functions/Zle/read-from-minibuffer
@@ -20,8 +20,8 @@ done
 local savelbuffer=$LBUFFER saverbuffer=$RBUFFER
 local savepredisplay=$PREDISPLAY savepostdisplay=$POSTDISPLAY
 
-LBUFFER=
-RBUFFER=
+LBUFFER="$2"
+RBUFFER="$3"
 PREDISPLAY="$PREDISPLAY$savelbuffer$saverbuffer$POSTDISPLAY
 ${1:-? }"
 POSTDISPLAY=