mirror of
https://github.com/neovim/neovim.git
synced 2025-09-27 21:48:35 +00:00
'inccommand': Detect "non-interactive", "too slow".
command_line_changed: - Check (current_SID == 0) instead of KeyTyped - We want to update during mappings (KeyTyped is false then). - Check vpeekc_any() - Avoids unnecessary work. - Avoids triggering live preview during macros. - Caveat: This makes the redraw "stutter" if user spams (holds a key) in the replace pattern. But that scenario is not important. - Update screen if the command is changed to a non-live command. (`s->live` goes from true => false) => clears the preview command_line_execute: - Let CTRL-C cancel live preview do_sub: - Enforce a time limit ('redrawtime'). - Unset 'inccommand' if time limit is reached. Closes #5602 Closes #5585
This commit is contained in:
@@ -1583,29 +1583,27 @@ vungetc ( /* unget one character (can only be done once!) */
|
||||
old_mouse_col = mouse_col;
|
||||
}
|
||||
|
||||
/*
|
||||
* get a character:
|
||||
* 1. from the stuffbuffer
|
||||
* This is used for abbreviated commands like "D" -> "d$".
|
||||
* Also used to redo a command for ".".
|
||||
* 2. from the typeahead buffer
|
||||
* Stores text obtained previously but not used yet.
|
||||
* Also stores the result of mappings.
|
||||
* Also used for the ":normal" command.
|
||||
* 3. from the user
|
||||
* This may do a blocking wait if "advance" is TRUE.
|
||||
*
|
||||
* if "advance" is TRUE (vgetc()):
|
||||
* really get the character.
|
||||
* KeyTyped is set to TRUE in the case the user typed the key.
|
||||
* KeyStuffed is TRUE if the character comes from the stuff buffer.
|
||||
* if "advance" is FALSE (vpeekc()):
|
||||
* just look whether there is a character available.
|
||||
*
|
||||
* When "no_mapping" is zero, checks for mappings in the current mode.
|
||||
* Only returns one byte (of a multi-byte character).
|
||||
* K_SPECIAL and CSI may be escaped, need to get two more bytes then.
|
||||
*/
|
||||
/// get a character:
|
||||
/// 1. from the stuffbuffer
|
||||
/// This is used for abbreviated commands like "D" -> "d$".
|
||||
/// Also used to redo a command for ".".
|
||||
/// 2. from the typeahead buffer
|
||||
/// Stores text obtained previously but not used yet.
|
||||
/// Also stores the result of mappings.
|
||||
/// Also used for the ":normal" command.
|
||||
/// 3. from the user
|
||||
/// This may do a blocking wait if "advance" is TRUE.
|
||||
///
|
||||
/// if "advance" is TRUE (vgetc()):
|
||||
/// really get the character.
|
||||
/// KeyTyped is set to TRUE in the case the user typed the key.
|
||||
/// KeyStuffed is TRUE if the character comes from the stuff buffer.
|
||||
/// if "advance" is FALSE (vpeekc()):
|
||||
/// just look whether there is a character available.
|
||||
///
|
||||
/// When "no_mapping" is zero, checks for mappings in the current mode.
|
||||
/// Only returns one byte (of a multi-byte character).
|
||||
/// K_SPECIAL and CSI may be escaped, need to get two more bytes then.
|
||||
static int vgetorpeek(int advance)
|
||||
{
|
||||
int c, c1;
|
||||
|
Reference in New Issue
Block a user