* src/xdisp.c (syms_of_xdisp): New var redisplay-skip-fontification-on-input
(handle_fontified_prop): Use it. * src/keyboard.h (input_was_pending): Declare. * src/keyboard.c (input_was_pending): Make non-static.
This commit is contained in:
parent
0c599ee2e2
commit
b2f8c9f96f
4 changed files with 22 additions and 2 deletions
6
etc/NEWS
6
etc/NEWS
|
@ -212,6 +212,12 @@ This makes debugging Emacs Lisp scripts run in batch mode easier. To
|
|||
get back the old behavior, set the new variable
|
||||
'backtrace-on-error-noninteractive' to a nil value.
|
||||
|
||||
** 'redisplay-skip-fontification-on-input' helps Emacs keep up with fast input.
|
||||
This is another attempt to solve the problem of handling high key repeat rate
|
||||
and other "slow scrolling" situations. It is hoped it behaves better
|
||||
than 'fast-but-imprecise-scrolling' and 'jit-lock-defer-time'.
|
||||
It is not enabled by default.
|
||||
|
||||
|
||||
* Editing Changes in Emacs 28.1
|
||||
|
||||
|
|
|
@ -285,7 +285,7 @@ bool input_pending;
|
|||
with the input rate, but if it can keep up just enough that there's no
|
||||
input_pending when we begin the command, then redisplay is not skipped
|
||||
which results in better feedback to the user. */
|
||||
static bool input_was_pending;
|
||||
bool input_was_pending;
|
||||
|
||||
/* Circular buffer for pre-read keyboard input. */
|
||||
|
||||
|
|
|
@ -432,7 +432,7 @@ extern int parse_solitary_modifier (Lisp_Object symbol);
|
|||
extern Lisp_Object real_this_command;
|
||||
|
||||
extern int quit_char;
|
||||
|
||||
extern bool input_was_pending;
|
||||
extern unsigned int timers_run;
|
||||
|
||||
extern bool menu_separator_name_p (const char *);
|
||||
|
|
14
src/xdisp.c
14
src/xdisp.c
|
@ -4262,6 +4262,7 @@ handle_fontified_prop (struct it *it)
|
|||
if (!STRINGP (it->string)
|
||||
&& it->s == NULL
|
||||
&& !NILP (Vfontification_functions)
|
||||
&& !(input_was_pending && redisplay_skip_fontification_on_input)
|
||||
&& !NILP (Vrun_hooks)
|
||||
&& (pos = make_fixnum (IT_CHARPOS (*it)),
|
||||
prop = Fget_char_property (pos, Qfontified, Qnil),
|
||||
|
@ -35598,6 +35599,19 @@ best except in special circumstances such as running redisplay tests
|
|||
in batch mode. */);
|
||||
redisplay_skip_initial_frame = true;
|
||||
|
||||
DEFVAR_BOOL ("redisplay-skip-fontification-on-input",
|
||||
redisplay_skip_fontification_on_input,
|
||||
doc: /* Skip `fontification_functions` when there is input pending.
|
||||
If non-nil and there was input pending at the beginning of the command,
|
||||
the `fontification_functions` hook is not run. This usually does not
|
||||
affect the display because redisplay is completely skipped anyway if input
|
||||
was pending, but it can make scrolling smoother by avoiding
|
||||
unnecessary fontification.
|
||||
It is similar to `fast-but-imprecise-scrolling' with similar tradeoffs,
|
||||
but with the advantage that it should only affect the behavior when Emacs
|
||||
has trouble keeping up with the incoming input rate. */);
|
||||
redisplay_skip_fontification_on_input = false;
|
||||
|
||||
DEFVAR_BOOL ("redisplay-adhoc-scroll-in-resize-mini-windows",
|
||||
redisplay_adhoc_scroll_in_resize_mini_windows,
|
||||
doc: /* If nil always use normal scrolling in minibuffer windows.
|
||||
|
|
Loading…
Add table
Reference in a new issue