mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-04 01:34:25 +00:00 
			
		
		
		
	refactor(ui): cleanup 'redrawdebug', introduce "flush" mode
This commit is contained in:
		@@ -4765,7 +4765,7 @@ A jump table for the options with a short description can be found at |Q_op|.
 | 
			
		||||
	Flags to change the way redrawing works, for debugging purposes.
 | 
			
		||||
	Most useful with 'writedelay' set to some reasonable value.
 | 
			
		||||
	Supports the following flags:
 | 
			
		||||
	    compositor	Indicate what redraws come from the compositor
 | 
			
		||||
	    compositor	Indicate each redraw event handled by the compositor
 | 
			
		||||
			by briefly flashing the redrawn regions in colors
 | 
			
		||||
			indicating the redraw type. These are the highlight
 | 
			
		||||
			groups used (and their default colors):
 | 
			
		||||
@@ -4777,6 +4777,11 @@ A jump table for the options with a short description can be found at |Q_op|.
 | 
			
		||||
		RedrawDebugRecompose guibg=Red    redraw generated by the
 | 
			
		||||
						  compositor itself, due to a
 | 
			
		||||
						  grid being moved or deleted.
 | 
			
		||||
	    line	introduce a delay after each line drawn on the screen.
 | 
			
		||||
			When using the TUI or another single-grid UI, "compositor"
 | 
			
		||||
			gives more information and should be preferred (every
 | 
			
		||||
			line is processed as a separate event by the compositor)
 | 
			
		||||
	    flush	introduce a delay after each "flush" event.
 | 
			
		||||
	    nothrottle	Turn off throttling of the message grid. This is an
 | 
			
		||||
			optimization that joins many small scrolls to one
 | 
			
		||||
			larger scroll when drawing the message area (with
 | 
			
		||||
@@ -7372,8 +7377,7 @@ A jump table for the options with a short description can be found at |Q_op|.
 | 
			
		||||
						*'writedelay'* *'wd'*
 | 
			
		||||
'writedelay' 'wd'	number	(default 0)
 | 
			
		||||
			global
 | 
			
		||||
	The number of milliseconds to wait for each character sent to the
 | 
			
		||||
	screen.  When positive, characters are sent to the UI one by one.
 | 
			
		||||
	See 'redrawdebug' for more options.  For debugging purposes.
 | 
			
		||||
	Only takes effect toghether with 'redrawdebug'.
 | 
			
		||||
	The number of milliseconds to wait after each line or each flush
 | 
			
		||||
 | 
			
		||||
 vim:tw=78:ts=8:noet:ft=help:norl:
 | 
			
		||||
 
 | 
			
		||||
@@ -630,6 +630,8 @@ EXTERN unsigned rdb_flags;
 | 
			
		||||
#define RDB_NOTHROTTLE         0x002
 | 
			
		||||
#define RDB_INVALID            0x004
 | 
			
		||||
#define RDB_NODELTA            0x008
 | 
			
		||||
#define RDB_LINE               0x010
 | 
			
		||||
#define RDB_FLUSH              0x020
 | 
			
		||||
 | 
			
		||||
EXTERN long p_rdt;            // 'redrawtime'
 | 
			
		||||
EXTERN long p_re;             // 'regexpengine'
 | 
			
		||||
 
 | 
			
		||||
@@ -125,7 +125,8 @@ static char *(p_spo_values[]) = { "camel", "noplainbuffer", NULL };
 | 
			
		||||
static char *(p_icm_values[]) = { "nosplit", "split", NULL };
 | 
			
		||||
static char *(p_jop_values[]) = { "stack", "view", NULL };
 | 
			
		||||
static char *(p_tpf_values[]) = { "BS", "HT", "FF", "ESC", "DEL", "C0", "C1", NULL };
 | 
			
		||||
static char *(p_rdb_values[]) = { "compositor", "nothrottle", "invalid", "nodelta", NULL };
 | 
			
		||||
static char *(p_rdb_values[]) = { "compositor", "nothrottle", "invalid", "nodelta", "line",
 | 
			
		||||
                                  "flush", NULL };
 | 
			
		||||
static char *(p_sloc_values[]) = { "last", "statusline", "tabline", NULL };
 | 
			
		||||
 | 
			
		||||
/// All possible flags for 'shm'.
 | 
			
		||||
 
 | 
			
		||||
@@ -419,7 +419,7 @@ void ui_line(ScreenGrid *grid, int row, int startcol, int endcol, int clearcol,
 | 
			
		||||
                   (const sattr_T *)grid->attrs + off);
 | 
			
		||||
 | 
			
		||||
  // 'writedelay': flush & delay each time.
 | 
			
		||||
  if (p_wd && !(rdb_flags & RDB_COMPOSITOR)) {
 | 
			
		||||
  if (p_wd && (rdb_flags & RDB_LINE)) {
 | 
			
		||||
    // If 'writedelay' is active, set the cursor to indicate what was drawn.
 | 
			
		||||
    ui_call_grid_cursor_goto(grid->handle, row,
 | 
			
		||||
                             MIN(clearcol, (int)grid->cols - 1));
 | 
			
		||||
@@ -510,6 +510,10 @@ void ui_flush(void)
 | 
			
		||||
    pending_has_mouse = has_mouse;
 | 
			
		||||
  }
 | 
			
		||||
  ui_call_flush();
 | 
			
		||||
 | 
			
		||||
  if (p_wd && (rdb_flags & RDB_FLUSH)) {
 | 
			
		||||
    os_microdelay((uint64_t)labs(p_wd) * 1000U, true);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// Check if 'mouse' is active for the current mode
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user