zsh-users
 help / color / mirror / code / Atom feed
* 'zle redisplay' bug in 5.3?
@ 2017-01-05  3:01 Jan Larres
  2017-01-05  9:09 ` Bart Schaefer
  0 siblings, 1 reply; 2+ messages in thread
From: Jan Larres @ 2017-01-05  3:01 UTC (permalink / raw)
  To: zsh-users

Hi,

I have this function in my zshrc:

  expand-or-complete-with-dots() {
      echo -ne "\e[31m......\e[0m"
      zle expand-or-complete
      zle redisplay
  }
  zle -N expand-or-complete-with-dots
  bindkey "^I" expand-or-complete-with-dots

This shows a few dots after the position where I pressed TAB to indicate that
the completion is working. This is helpful if the completion takes a bit
longer so I know that I did press the key correctly and I just have to wait a
bit. The 'zle redisplay' after the completion function is then supposed to
redraw the prompt as it was before inserting the dots.

After upgrading to 5.3 I ran into an issue, though. I use a multi-line prompt,
and now whenever I press TAB the 'zle redisplay' erases the prompt and puts
the cursor on the first line of the prompt, but at the correct column, while
the completion is active. Only after inserting something from the menu does
the prompt get redrawn correctly.

I didn't find anything in the changelog and incompatibilities lists, so my
assumption would be that this is a bug.

In case it is relevant, here is the rest of my completion config:
https://github.com/majutsushi/etc/blob/master/zsh/zsh/zshrc.d/20_completion


-Jan

-- 
-[ OpenPGP key ID: 00A0FD5F ]-
Fantasy is an exercise bicycle for the mind. It might not take you anywhere,
but it tones up the muscles that can.
                -- Terry Pratchett


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: 'zle redisplay' bug in 5.3?
  2017-01-05  3:01 'zle redisplay' bug in 5.3? Jan Larres
@ 2017-01-05  9:09 ` Bart Schaefer
  0 siblings, 0 replies; 2+ messages in thread
From: Bart Schaefer @ 2017-01-05  9:09 UTC (permalink / raw)
  To: Jan Larres, zsh-users

On Jan 5,  4:01pm, Jan Larres wrote:
}
}   expand-or-complete-with-dots() {
}       echo -ne "\e[31m......\e[0m"
}       zle expand-or-complete
}       zle redisplay
}   }

Hmm.  Indeed, with multi-line prompts, invoking redisplay immediately
after a completion menu is displayed will move the cursor upward as
many extra lines as the prompt is tall but then does not finish the
repainting of the prompt, leaving the cursor in the wrong place.

You don't even need compinit, just do:

    % PS1=$':first line\n'"$PS1"
    :first line
    % ls <TAB>
    :first line
    % ls <M-x redisplay><RET>

and you'll observe zle get confused.

This is from workers/38048 ... where I asked for additional feedback
and got none ... discussion starts in users/21315.

I suspect something is different about the complist module vs. plain
completion menu and the change in 38048 does not account for the
latter.


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-01-05  9:09 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-01-05  3:01 'zle redisplay' bug in 5.3? Jan Larres
2017-01-05  9:09 ` Bart Schaefer

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).