unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Alin Soare <as1789@gmail.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: cyd@stupidchicken.com, emacs-devel@gnu.org
Subject: Re: Efficient debugging of the redisplay.
Date: Tue, 8 Dec 2009 14:34:16 -0500	[thread overview]
Message-ID: <de6e718a0912081134o7023e38dua2933df257b271d9@mail.gmail.com> (raw)
In-Reply-To: <83k4wxi8r6.fsf@gnu.org>

[-- Attachment #1: Type: text/plain, Size: 2753 bytes --]

> > However, this tells me nothing about an efficient debugging of
> > redisplay_internal, and about display in general.
> >
> > Could you suggest me something efficient, please?
>
> Please be more specific.  What problem(s) are you trying to debug, and
> what are your difficulties doing that?  The answer(s) depend heavily
> on this information.
>

In general, to insert a different criteria for displaying a frame.

For example, suppose that I change Vframe_list to look like this one:

Vframe_list = ( (  X Y ) ( Z T ) )

I want to write a function similar to other-frame, but that function should
commute from X to Y.

If Vframe_list had that form, then the actual code is good to commute from X
to Z or from Y to T, but I am interested about a code to commute from X to
Y.

I did write a specification last days for tabs for emacs, and I want to
adapt my code for tabs of console to that specification. I did commutation
between frames, but I cannot switch to a tab.

The specification must conform all the implementations: for console, gtk,
athena, etc.

Vframe_list = ( ( Xi . ( X1 X2 ... Xn))  ( Yj . ( Y1 Y2 ... Ym)) ... )

So I want Vframe_list to be composed of groups of frames. the CAR of every
group is the active tab of that group. Xi must be one of X1 ... Xn. Yj must
be one of Y1 ... Ym.

Every frame from every group has a flag main_frame, defined in struct frame
{ ... Lisp_Object main_frame; ...} that can be t or nil. If it is set to t,
then deleting such a frame , will delete all the group where the frame is
present.

The actual code of Emacs requires minimum changes to commute from the
visible tab of a group to a visible tab of another group.

frame-list will look something like:

DEFUN ("frame-list", Fframe_list, Sframe_list,
       0, 0, 0,
       doc: /* Return a list of all visible frames.  */)
     ()
{
  Lisp_Object frames, f, value;

  value = Qnil;
  FOR_EACH_FRAME(frames, f)
    {
      if (FRAME_LIVE_P (XFRAME (f)))
          value = Fcons (f, value);
    }

  frames = Fcopy_sequence (value);

  return frames;
}

FOR_EACH_FRAME looks like

#define FOR_EACH_FRAME(list_var, frame_var)            \
  for ((list_var) = Vframe_list;                \
       (CONSP (list_var)                    \
    && (frame_var = XCAR (XCAR (list_var)), 1));            \
       list_var = XCDR (list_var))


In general, the code requires little changes to implement the Vframe_list
so. However, to commute from a tab to another tab, requires more changes.
For example, visibility of a frame must be changes, the focus, etc. Here I
have no idea about what I have to do.

I will send the geeral specification for the tabs soon, and all the
implementations for console, gtk, etc must conform to that specification.





Alin.

[-- Attachment #2: Type: text/html, Size: 3228 bytes --]

  reply	other threads:[~2009-12-08 19:34 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-08 13:08 Efficient debugging of the redisplay Alin Soare
2009-12-08 18:55 ` Chong Yidong
2009-12-08 19:10   ` Alin Soare
2009-12-08 19:08 ` Eli Zaretskii
2009-12-08 19:34   ` Alin Soare [this message]
2009-12-08 19:52     ` Eli Zaretskii
2009-12-08 20:39       ` Alin Soare

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

  List information: https://www.gnu.org/software/emacs/

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

  git send-email \
    --in-reply-to=de6e718a0912081134o7023e38dua2933df257b271d9@mail.gmail.com \
    --to=as1789@gmail.com \
    --cc=cyd@stupidchicken.com \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    /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 public inbox

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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).