Subject: bug#21732: 25.0.50; intermittent failure using windmove when in doc-view buffer

From: martin rudalics <[email-masked]>
Date: Mon, 09 Nov 2015 09:26:50 +0100

> To reproduce:
 > 1. Start emacs from master with -Q.
 > 2. (require 'windmove) and set `windmove-wrap-around' to t.
 > 3. Split the window horizontally, then vertically.
 > 4. Display a pdf with doc-view in the buffer at the bottom right.
 > 4. Use `windmove-left' or `windmove-right' into the frame border.

What does "into the frame border" mean here?

 > See the attached image to get an idea of what step #2 means (in this case, I'm
 > running `windmove-right', which only produces an error after I follow the above
 > steps; normally, it works just fine). I'm running graphical emacs on arch linux
 > in X. The error only occurs for the affected doc-view buffer; it does not affect
 > other doc-view buffers.

At the time you invoke ‘windmove-right’ and it fails the doc-view window
is selected.  Correct?  What does

M-: (window-in-direction 'right nil nil nil t) RET

in the doc-view window give?  And what do

M-: (window-in-direction 'right nil nil -1 t) RET

and

M-: (window-in-direction 'right nil nil 1 t) RET

give?

 >> Alternatively, you could try to add the function ‘window-in-direction’ (in
 >> window.el) temporarily to your .emacs.
 >
 > Added the revised version to .emacs and evaluated. The `when' clause was always
 > nil because `my-value' was always a positive number (this is on the window
 > erroring out when running windmove-left/right), but here's the value
 > `my-variable` it would have been set to if the `when' clause was true:
 >
 > ("window: #<window 4 on *Minibuf-1*> direction : above sign: nil wrap: nil mini:
 > nil posn-cons: (234 . 0)" "window: #<window 8 on project_guidelines.pdf>
 > direction : right sign: nil wrap: t mini: t posn-cons: (965 . 1011)")

IIRC the problem is that we have to trace the case where ‘my-value’ is
negative.  So these values are probably not useful.

martin