all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: David Kastrup <dak@gnu.org>
Cc: Slawomir Nowaczyk <slawomir.nowaczyk.847@student.lu.se>,
	emacs-devel@gnu.org
Subject: Re: redisplay-dont-pause does not work
Date: Fri, 09 Jun 2006 13:50:10 +0200	[thread overview]
Message-ID: <85lks6sg3x.fsf@lola.goethe.zz> (raw)
In-Reply-To: <m31wu2ikas.fsf@kfs-l.imdomain.dk> (Kim F. Storm's message of "Tue, 06 Jun 2006 13:40:43 +0200")

storm@cua.dk (Kim F. Storm) writes:

> David Kastrup <dak@gnu.org> writes:
>
>> If we are going to be mess around with sit-for's argument, we might as
>> well use
>>
>> (sit-for -1)
>>
>> This is perfectly logical, since then no input has been seen during
>> the time interval [0, limit].
>
> Excellent idea.

Given that `redisplay-dont-pause' did not work previously in
connection with sit-for (has there been some released Emacs version
where it did something useful?), I think changing the call interface
for sit-for to make negative arguments ignore pending input would be a
logical idea.

However, `redisplay-dont-pause' seems intended to be a user option,
and it is heeded at some points in the code.

In dispnew.c I find:

    /* Update display of window W.  FORCE_P non-zero means that we should
       not stop when detecting pending input.  */

    static int
    update_window (w, force_p)
         struct window *w;
         int force_p;
    {
      struct glyph_matrix *desired_matrix = w->desired_matrix;
      int paused_p;
      int preempt_count = baud_rate / 2400 + 1;
      extern int input_pending;
      extern Lisp_Object do_mouse_tracking;
    #if GLYPH_DEBUG
      /* Check that W's frame doesn't have glyph matrices.  */
      xassert (FRAME_WINDOW_P (XFRAME (WINDOW_FRAME (w))));
      xassert (updating_frame != NULL);
    #endif

      /* 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
         the update.  */

What is strange here is that if the function is entered with "force_p"
set, but not redisplay_dont_pause, then it will still do the input
detection thingy.  I don't know whether this is intended: I have no
clue about redisplay.

Other functions checking `redisplay_dont_pause' are update_frame_1,
and of course recently sit_for.  All of the functions appear to have a
"force_p" argument as well, which might suffice for passing the
information down the call chain from sit_for, but I am not too certain
about it.

And the way it reads in ChangeLog.21, `redisplay_dont_pause' might be
intended for use as a global variable representing a user preference.

It might probably make sense to retain that functionality (though I
have my doubts that it corresponds to consistent behavior), but still
make sit-for use its own argument for doing an unconditional refresh:
those functions seem not really too related.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

  reply	other threads:[~2006-06-09 11:50 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-05-25 10:52 redisplay-dont-pause does not work David Kastrup
2006-05-26  2:21 ` Richard Stallman
2006-05-26  7:19   ` David Kastrup
2006-05-27  3:36     ` Richard Stallman
2006-05-27  6:49       ` David Kastrup
2006-05-28  3:18         ` Richard Stallman
2006-05-28  7:47           ` David Kastrup
2006-05-29  6:38             ` Richard Stallman
2006-05-29  8:08               ` Kim F. Storm
2006-06-01  9:44                 ` David Kastrup
2006-06-01 12:11                   ` Eli Zaretskii
2006-06-01 13:52                   ` Kim F. Storm
2006-06-01 20:22                     ` David Kastrup
2006-06-05  9:00                     ` Lars Hansen
2006-06-05  9:05                       ` David Kastrup
2006-06-05  9:19                         ` Lars Hansen
2006-06-05  9:34                         ` Slawomir Nowaczyk
2006-06-05  9:38                           ` David Kastrup
2006-06-05 21:26                             ` Kim F. Storm
2006-06-06  8:21                               ` Lars Hansen
2006-06-06  9:47                                 ` Kim F. Storm
2006-06-06  9:58                                   ` David Kastrup
2006-06-06 11:40                                     ` Kim F. Storm
2006-06-09 11:50                                       ` David Kastrup [this message]
2006-06-13 23:04                                       ` Kim F. Storm
2006-06-06 12:44                                     ` Lars Hansen
2006-06-05  9:38                           ` Lars Hansen
2006-06-05 21:31                       ` Richard Stallman
2006-06-06  8:38                         ` Kim F. Storm
2006-05-27  8:24       ` Lars Hansen
2006-05-27 11:28         ` Eli Zaretskii
2006-05-27 14:14           ` Stefan Monnier
2006-05-27 14:21             ` David Kastrup
2006-05-27 20:57       ` Kim F. Storm
2006-05-27 21:22         ` David Kastrup
2006-05-27 22:54           ` Kim F. Storm
2006-05-27 23:01             ` David Kastrup

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=85lks6sg3x.fsf@lola.goethe.zz \
    --to=dak@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=slawomir.nowaczyk.847@student.lu.se \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.