yshui · GitHub

Normally the logic goes like this:

  1. press Tab -> (in src/reader/reader.rs, handle_readline_command, rl::Complete) compute_and_apply_completions(..) -> pager open and shows candidates.
  2. press Tab again -> (again in reader.rs, rl::Complete) self.rls().last_cmd == rl::Complete is now true -> select_completion_in_direction -> candidate selected.

However, is a repaint is issued (for example, by a signal handler function calling commandline -f repaint) between 1 and 2, self.rls().last_cmd becomes rl::Repaint. if I then press Tab again, the condition for candidate selection is no longer met and nothing is selected.

If repaint is triggered repeatedly, I will not be able to select anything.

Read the original on github.com ↗