unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
From: martin rudalics <rudalics@gmx.at>
Cc: help-gnu-emacs@gnu.org, michael@cadilhac.name
Subject: Re: MY window tree!
Date: Tue, 16 Jan 2007 15:23:42 +0100	[thread overview]
Message-ID: <45ACDFEE.8020608@gmx.at> (raw)
In-Reply-To: <45ACA9C6.40400@gmail.com>

 >>  > 1) I think I must search all buffers
 >>
 >> No.  Only the buffers that have an ovlwin-window association.
 >
 >
 >
 > There is unfortunately no way to find out if a buffer have that without
 > looking at the overlays in the buffer AFAICS.

It's all in the loop below where you ask "Why should I only investigate
those buffers?"

 >>  > 5) If that window is not on a frame any more I just replace the value
 >>
 >> Together steps 1) and 4) assert that the window is not on a frame any
 >> more, hence, you don't have to check this.
 >
 >
 >
 > If you are thinking of the normal use case (which is adding a BAR
 > window, see winsav.el) you are right, but there may be other ways to use
 > this too. In those cases the old windows may still be there on the old
 > frame. (The user of these functions may for some reason be copying the
 > window structure somewhere else. Do not ask me why, but the possibility
 > to do that is there.)

Why not?  The primary purpose of the 'window property is to make the
overlay appear in one and only one window.  Copying the window tree
somewhere else should move the overlay to a new window iff the old
window were deleted.  Perfectly valid.  Copying again from the saved
configuration would not see the overlay any more because it now names
another window.  Valid too.

If you really see a need to copy overlays make it optional.  In any case
there's no need to scan the entire `buffer-list' for overlays.  Any
buffer involved must have been displayed by the old window-tree and must
be displayed by the new window-tree.

Finally, if you really want to separate saving from restoring you have
to decide what to do with buffers that have been changed (window-point
or window-start are no longer valid) or deleted in the meantime.

The current problem is that of making non-orthodox window splitting as
transparent as possible.  That is, the user should not notice that you
delete and create any other windows but the very one she wanted to add.
I'd even suggest to write a `split-root-of-window-tree' command that
hides the saving and restoring stuff completely, 'horizontal non-nil
means add the new window on the left, nil at the bottom.  Interactively,
the buffer displayed in the new window would be that of the selected
window which also designates the root of the window-tree.

 >> (dolist (buf (let (buffer buffers)
 >>            (dolist (win win-list buffers)
 >>              ;; I presume cadr refers to the "new" window.
 >>          (setq buffer (window-buffer (cadr win)))
 >>          (unless (memq buffer buffers)
 >>            (setq buffers (cons buffer buffers))))))
 >>   ...
 >
 >
 >
 > Why should I only investigate those buffers?

Because people may have hundred buffers or more, many of them with
overlays.  Most overlays don't have a window property.

  reply	other threads:[~2007-01-16 14:23 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-01-13 10:11 MY window tree! martin rudalics
2007-01-14  9:35 ` Lennart Borgman (gmail)
2007-01-14 11:26   ` martin rudalics
2007-01-14 11:45     ` Lennart Borgman (gmail)
2007-01-14 15:03       ` Juanma Barranquero
2007-01-14 15:29         ` Lennart Borgman (gmail)
2007-01-14 17:41       ` martin rudalics
2007-01-14 17:56         ` Lennart Borgman (gmail)
2007-01-14 21:35         ` Lennart Borgman (gmail)
2007-01-14 22:57           ` Juanma Barranquero
2007-01-14 23:15             ` Lennart Borgman (gmail)
2007-01-15  7:27               ` martin rudalics
2007-01-15 13:07                 ` Lennart Borgman (gmail)
2007-01-15 13:50                   ` Juanma Barranquero
2007-01-15 14:09                     ` Lennart Borgman (gmail)
2007-01-15 14:33                       ` Juanma Barranquero
2007-01-15 14:41                         ` Lennart Borgman (gmail)
2007-01-15 14:56                           ` Juanma Barranquero
2007-01-15 16:32                             ` Lennart Borgman (gmail)
2007-01-15 17:33                               ` martin rudalics
2007-01-15 17:47                                 ` Lennart Borgman (gmail)
2007-01-15 17:58                                   ` martin rudalics
2007-01-15 18:16                                     ` Lennart Borgman (gmail)
2007-01-15 18:44                                       ` martin rudalics
2007-01-15 18:52                                         ` Lennart Borgman (gmail)
2007-01-15 17:26                           ` martin rudalics
2007-01-15 17:56                             ` Lennart Borgman (gmail)
2007-01-15 18:33                               ` martin rudalics
2007-01-15 18:14                             ` Lennart Borgman (gmail)
2007-01-15 19:22                               ` martin rudalics
2007-01-15 20:26                                 ` Lennart Borgman (gmail)
2007-01-15 22:44                                   ` martin rudalics
2007-01-16  0:14                                     ` Lennart Borgman (gmail)
2007-01-16  7:46                                       ` martin rudalics
2007-01-16 10:32                                         ` Lennart Borgman (gmail)
2007-01-16 14:23                                           ` martin rudalics [this message]
2007-01-16 17:59                                             ` Lennart Borgman (gmail)
2007-01-16 18:32                                               ` martin rudalics
2007-01-16 18:57                                                 ` Lennart Borgman (gmail)
2007-01-16 21:57                                                   ` martin rudalics
2007-01-16 22:32                                                     ` Lennart Borgman (gmail)
2007-01-17  6:36                                                       ` martin rudalics
  -- strict thread matches above, loose matches on Subject: below --
2007-01-13  0:17 Michaël Cadilhac
2007-01-13  0:33 ` Lennart Borgman (gmail)
2007-01-13  0:46   ` Michaël Cadilhac
2007-01-13  1:24     ` Lennart Borgman (gmail)
     [not found]     ` <mailman.3023.1168651462.2155.help-gnu-emacs@gnu.org>
2007-01-13  6:17       ` Stefan Monnier
2007-01-13  9:20 ` Michaël Cadilhac

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=45ACDFEE.8020608@gmx.at \
    --to=rudalics@gmx.at \
    --cc=help-gnu-emacs@gnu.org \
    --cc=michael@cadilhac.name \
    /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.
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).