Richard Stallman wrote:

I looked a bit, but I am not sure how it shall work. If I just to three windows, in the obvious way (C-x 2, C-x 2), I get three windows, one 11 lines, one 12 lines and one 24 lines. This gives me this window configuration:

0x86b6b10: vchild: 0x861d830, hchild: 0x0, next: 0x861d9c8, parent: 0x0, h: 47
0x861d830: vchild: 0x0, hchild: 0x0, next: 0x8694a50, parent: 0x86b6b10, h: 11
0x8694a50: vchild: 0x0, hchild: 0x0, next: 0x86b6ca8, parent: 0x86b6b10, h: 12
0x86b6ca8: vchild: 0x0, hchild: 0x0, next: 0x0, parent: 0x86b6b10, h: 24
0x861d9c8: vchild: 0x0, hchild: 0x0, next: 0x0, parent: 0x0, h: 1


That's the correct configuration for such a case.


But if I create the same three windows (11, 12 and 24 lines) with the method below, I get this window configuration:


0x8833558: vchild: 0x87f9978, hchild: 0x0, next: 0x861d9c8, parent: 0x0, h: 47
0x87f9978: vchild: 0x86a7a48, hchild: 0x0, next: 0x8820a48, parent: 0x8833558, h: 23
0x86a7a48: vchild: 0x0, hchild: 0x0, next: 0x87b6d68, parent: 0x87f9978, h: 11
0x87b6d68: vchild: 0x0, hchild: 0x0, next: 0x0, parent: 0x87f9978, h: 12
0x8820a48: vchild: 0x0, hchild: 0x0, next: 0x0, parent: 0x8833558, h: 24
0x861d9c8: vchild: 0x0, hchild: 0x0, next: 0x0, parent: 0x0, h: 1


This is a bug.  A window which is a vchild should never have a vchild.

Can you determine at which step the structure first becomes
incorrect?  That is where the bug is, I think.


I think it is correct up to the last delete, but correct me if I'm wrong. Steps in the chain are represented like this (arrow down = next, arrow diagonal = vchild, arrow horizontal = hchild, parent in parentesis):


w1 | w2

i0 -----> w1 (i0)
 |             |
 v             v
minibuf    w2 (i0)



   | W2
W1  |---
   | W3

i0 ----> w1 (i0)
| |
minibuf i1 (i0)
\
w2 (i1)
|
w3 (u1)




w2
-----
w3

i1
 |\
 | \
 |  \
 |   w2 (i1)
 |     |
minibuf w3 (i1)



W2 | W4
--------
  W3

i1
|\
| i2 (i1) --> w2 (i2)
| | |
| w3 (i1) w4 (i2)
| minibuf



| W4 W2 |--- | W5 - ------- W3


i1 | \ | i2 (i1) --> w2 (i2) | | | | w3 (i1) i3 (i2) | \ | w4 (i3) | | minibuf w5 (i3)




w4 ------ w5 ------ w3

 i1
 | \
 |  \
 |   i3 (i1)
 |    |    \
 | w3 (i1)  \
 |          w4 (i3)
 |           |
minibuf      w5 (i3)


I think it is correct up to the last delete of w2. But what the rule should be for eliminating i3 in the last step I don't know. I think this is the desired last step:

 i1
 | \
 |  \
 |  w4 (i1)
 |     |
 |  w5 (i1)
 |     |
 |  w3 (i1)
 |
minibuf

i1 possibly replaced with i3.



        Jan D.










_______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel

Reply via email to