From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19813 invoked from network); 1 Jun 1999 08:37:59 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 1 Jun 1999 08:37:59 -0000 Received: (qmail 9851 invoked by alias); 1 Jun 1999 08:37:50 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 6411 Received: (qmail 9844 invoked from network); 1 Jun 1999 08:37:50 -0000 Date: Tue, 1 Jun 1999 10:37:48 +0200 (MET DST) Message-Id: <199906010837.KAA20029@beta.informatik.hu-berlin.de> From: Sven Wischnowsky To: zsh-workers@sunsite.auc.dk In-reply-to: Timothy J Luoma's message of Tue, 1 Jun 1999 01:15:46 -0400 Subject: Re: pws-20 bug >> completion makes partial line vanish Timothy J Luoma wrote: > # mv zsh[tab] gives me > # mv zsh-3.1.5-pws-20 > zsh* zsh.export zsh.mdhi zshxmods.h > zsh-3.1.5-pws-20* zsh.h zsh.mdhs > zsh-3.1.5-pws-20-NI* zsh.mdd zsh.test* > zsh-3.1.5-pws-20-m68k* zsh.mdh zshpaths.h > > (now I use my UP ARROW to get a history replacement and get this as a result) > > #mv zsh -NI /usr/bin > > (notice the big empty space?) That comes from trying to clear the list on terminals for which zsh thinks that they can't do TCMULTRIGHT (zsh thinks my xterm can't do that, hm...). In the excerpt below, the second moveto() has to move over the old line contents. But since it thinks, the terminal is not able to do TCMULTRIGHT, it starts inserting stuff from the new display buffer (nbuf), which is not yet set up. And because of that, it starts inserting spaces. At that place it really should use the old display-buffer contents, so the patch just temporarily makes it use that. Not a very nice patch, I agree. Bart, I haven't tried this with pre-3, but I think it may be important to have there, too (unless the display code in 3.1.5 has changed more than I think it has). Bye Sven --- os/Zle/zle_refresh.c Tue May 25 09:15:36 1999 +++ Src/Zle/zle_refresh.c Tue Jun 1 10:28:49 1999 @@ -268,10 +268,13 @@ if (clearlist && listshown) { if (tccan(TCCLEAREOD)) { int ovln = vln, ovcs = vcs; + char *nb = nbuf[vln]; + nbuf[vln] = obuf[vln]; moveto(nlnct, 0); tcout(TCCLEAREOD); moveto(ovln, ovcs); + nbuf[vln] = nb; } else { invalidatelist(); moveto(0, 0); -- Sven Wischnowsky wischnow@informatik.hu-berlin.de