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