emacs-pretest-bug
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: redisplay-dont-pause is not mentioned in the Emacs manual


From: Kim F. Storm
Subject: Re: redisplay-dont-pause is not mentioned in the Emacs manual
Date: Fri, 09 Jun 2006 00:10:44 +0200
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.0.50 (gnu/linux)

Richard Stallman <address@hidden> writes:

>     >     And (B) is what you get by setting `redisplay-dont-pause'.
>     >
>     > It WAS, but not any more.  
>
>     It still IS, since redisplay-dont-pause _also_ controls whether input
>     interrupts redisplay.
>
> No, what redisplay-dont-pause gives you is NOT (B).
> (B) says that redisplay still only starts when there is no input,
> and thanks to the recent change in sit-for, that is not what
> redisplay-dont-pause does nowadays.

I guess you are confused by the mixed-purpose of redisplay-dont-pause ...
it controls whether redisplay is started in sit-for (A), and whether
redisplay is pre-empted once it is started (B).

To repeat, (B) says:

  (B) Don't _interrupt_ redisplay once it has started.

And this definitely _is_ (part of) what you get by setting redisplay_dont_pause.


See update_window and update_frame_1 --- in both, force_p is set
if redisplay_dont_pause is set.  So setting redisplay_dont_pause will
force a complete redisplay.


Both functions may still call detect_input_pending_ignore_squeezables
if force_p is set (although input_pending is ignored).

The following patch fixes that:

*** dispnew.c   04 Jun 2006 20:58:14 +0200      1.366
--- dispnew.c   08 Jun 2006 23:58:51 +0200      
***************
*** 4119,4125 ****
    /* Check pending input the first time so that we can quickly return.  */
    if (redisplay_dont_pause)
      force_p = 1;
!   else
      detect_input_pending_ignore_squeezables ();
  
    /* If forced to complete the update, or if no input is pending, do
--- 4119,4125 ----
    /* Check pending input the first time so that we can quickly return.  */
    if (redisplay_dont_pause)
      force_p = 1;
!   else if (!force_p)
      detect_input_pending_ignore_squeezables ();
  
    /* If forced to complete the update, or if no input is pending, do
***************
*** 5200,5206 ****
                }
            }
  
!         if ((i - 1) % preempt_count == 0)
            detect_input_pending_ignore_squeezables ();
  
          update_frame_line (f, i);
--- 5200,5206 ----
                }
            }
  
!         if (!force_p && (i - 1) % preempt_count == 0)
            detect_input_pending_ignore_squeezables ();
  
          update_frame_line (f, i);



-- 
Kim F. Storm <address@hidden> http://www.cua.dk





reply via email to

[Prev in Thread] Current Thread [Next in Thread]