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: Tue, 13 Jun 2006 01:01:40 +0200
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.0.50 (gnu/linux)

Richard Stallman <address@hidden> writes:

>     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.
>
> It is part of what you get, but now it is no longer the whole of what
> you get.
>
> Perhaps we should undo the recent change in sit-for.
> I don't remember the specific case for which we made it.
> If it was one specific caller that needed another facility,
> let's make (sit-for -1) do this, as someone else suggested.

Here is a way to do that.  Note that it binds redisplay-dont-pause
to ensure that redisplay isn't interrupted.


*** dispnew.c   13 Jun 2006 00:09:47 +0200      1.367
--- dispnew.c   13 Jun 2006 00:58:56 +0200      
***************
*** 6495,6509 ****
  sit_for (sec, usec, reading, display, initial_display)
       int sec, usec, reading, display, initial_display;
  {
    swallow_events (display);
  
!   if ((detect_input_pending_run_timers (display)
!        && !redisplay_dont_pause)
        || !NILP (Vexecuting_kbd_macro))
      return Qnil;
  
    if (initial_display)
!     redisplay_preserve_echo_area (2);
  
    if (sec == 0 && usec == 0)
      return Qt;
--- 6495,6516 ----
  sit_for (sec, usec, reading, display, initial_display)
       int sec, usec, reading, display, initial_display;
  {
+   int preempt = (sec >= 0) || (sec == 0 && usec >= 0);
+ 
    swallow_events (display);
  
!   if ((detect_input_pending_run_timers (display) && preempt)
        || !NILP (Vexecuting_kbd_macro))
      return Qnil;
  
    if (initial_display)
!     {
!       int count = SPECPDL_INDEX ();
!       if (!preempt)
!       specbind (Qredisplay_dont_pause, Qt);
!       redisplay_preserve_echo_area (2);
!       unbind_to (count, Qnil);
!     }
  
    if (sec == 0 && usec == 0)
      return Qt;
***************
*** 6529,6536 ****
  if input is available before it starts.
  Value is t if waited the full time with no input arriving.
  
! Redisplay will occur even when input is available if you bind
! `redisplay-dont-pause' to a non-nil value.
  
  An obsolete but still supported form is
  \(sit-for SECONDS &optional MILLISECONDS NODISP)
--- 6536,6542 ----
  if input is available before it starts.
  Value is t if waited the full time with no input arriving.
  
! Redisplay will occur even when input is available if SECONDS is negative.
  
  An obsolete but still supported form is
  \(sit-for SECONDS &optional MILLISECONDS NODISP)

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





reply via email to

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