Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

PATCH: Re: History bug (Re: Completion debugging)



Bart Schaefer wrote:

> Look at this snippet of "history" output:
> 
>    21  cd zsh-3.1.6
>    22  setup_compinit
>    24  emacs /tmp/zsh149find1 ;: find\ -
>    24  history
>    25  emacs /tmp/zsh149find1 ;: find\ -
>    26  history
>    28  emacs /tmp/zsh149find2 ;: find\ 
>    29  emacs /tmp/zsh149echo3 ;: echo\ foo\ 
>    29  history
>    30  reload _complete_debug
>    32  emacs /tmp/zsh149find4 ;: 'find -'
>    32  history
> 
> Why are there two of numbers 24, 29 and 32?  In each case, the first of the
> two was inserted by calling "print -s ..." during completion.  Apparently
> that doesn't work very well.

Of course this isn't only in completion, but in every widget.

The problem is that the history number for the currently edited line
is `reserved' and the `print -s' makes it be used. The patch below is
the simplest solution I can think of.

Bye
 Sven

Index: Src/builtin.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/builtin.c,v
retrieving revision 1.12
diff -u -r1.12 builtin.c
--- Src/builtin.c	2000/05/02 15:52:44	1.12
+++ Src/builtin.c	2000/05/03 07:07:17
@@ -2777,7 +2777,7 @@
 	int nwords = 0, nlen, iwords;
 	char **pargs = args;
 
-	ent = prepnexthistent(++curhist);
+	ent = prepnexthistent(zleactive ? curhist++ : ++curhist);
 	while (*pargs++)
 	    nwords++;
 	if ((ent->nwords = nwords)) {

--
Sven Wischnowsky                         wischnow@xxxxxxxxxxxxxxxxxxxxxxx



Messages sorted by: Reverse Date, Date, Thread, Author