Subject: RE: bug#14964: 24.3.50; doc of `compare-window-configurations'

From: Drew Adams <[email-masked]>
Date: Sun, 28 Jul 2013 07:49:42 -0700 (PDT)

>  > 3. I would also like to see functions that accept or produce window and
>  >    frame configurations optionally accept and produce also Lisp-readable
>  >    equivalents.
>  >
>  > IOW, today, such configurations always use actual window and frame
>  > objects, which are not Lisp-readable.  I would like to see them optionally
>  > (e.g. via optional arguments) use Lisp-readable frame and window states.
>  > IOW, make it simple to persist such configurations.
> 
> With window states I tried to approximate window configurations as close
> as possible.  I don't know enough about frames to do the same for them.
> I bet that currently Juanma knows best whether this can be done in some
> reasonable way.

Yes, I am hoping exactly that.  His work with desktop.el will apparently use
Lisp-readable representations of sets of frames.  I hope this will be
applied/extended to the frame-configuration functions, so we can optionally
get Lisp-readable frame configurations (with the same properties and
interfaces as we have now).

E.g., a frame config would continue to look like this, even when
Lisp-readable:

(frame-configuration FRAME+WINDOW-CONFIG...)

where FRAME+WINDOW-CONFIG would be a Lisp-readable representation of a frame
(a set of frame parameters, preferably at least the same ones recorded now)
plus the frame's window configuration.

And likewise for window configurations.  We have `window-state-(get|put)',
but I would also like to see Lisp-readable window configurations.  IOW, wrap
with (window-configuration...) what `window-state-get' with non-nil WRITABLE
arg returns.  E.g.:

(window-configuration
  (((min-height . 4)
    (min-width . 10)
    (min-height-ignore . 2)
    (min-width-ignore . 5)
    (min-height-safe . 1)
    (min-width-safe . 2))
   leaf
   (last . t)
   (total-height . 63)
   (total-width . 112)
   (normal-height . 1.0)
   (normal-width . 1.0)
   (buffer "foobar.el"
           (selected . t)
           (hscroll . 0)
           (fringes 0 0 nil)
           (margins nil)
           (scroll-bars 21 3 t nil)
           (vscroll . 0)
           (dedicated)
           (point . 426354)
           (start . 424331))))

Let me know if you (e.g. Juanma) prefer that I file this as a separate
bug (enhancement request).  If so, I will, repeating what I've said here.

Thanks to both of you for bring window and frame states to the Lisp world.

On that subject, I would like to see either:

a. these structures documented, i.e., the structure advertised as such, or
b. access functions defined for their parts.

IOW, either an open, advertised structure or a black box but providing
advertised ways to get at the various components.