Subject: bug#13898: closed (Re: [babc40c4] minibuffer-complete does not cycle anymore)

From: [email-masked] (GNU bug Tracking System)
Date: Thu, 05 Dec 2013 19:22:04 +0000

Your bug report

#13898: 24.3.50; Non-cycle completion can use the wrong window

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
13898: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13898
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: [babc40c4] minibuffer-complete does not cycle anymore
From: Ivan Shmakov <[email-masked]>
To: [email-masked]
Date: Thu, 05 Dec 2013 19:21:47 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

>>>>> Ivan Shmakov <[email-masked]> writes:

 > reopen 13898 thanks

 > … It may be due to a different bug, but as of babc40c41c5c,
 > minibuffer-complete does not cycle anymore.

	And even quite likely so, as as of 0dd4ebbcf94d, it all seem to
	work correctly.

	Sorry for the noise, closing this one back.

 > Example: C-h f TAB TAB TAB… – the TABs after the first seem to have
 > no visible effect whatsoever.

 > Since reverting the change made in 35b3f07859c4 restores the proper
 > minibuffer-complete behavior, I took the liberty to reopen #13898.
 > (Feel free to clone and close it if necessary.)

-- 
FSF associate member #7257

Subject: 24.3.50; Non-cycle completion can use the wrong window
From: Jorgen Schaefer <[email-masked]>
To: [email-masked]
Date: Thu, 07 Mar 2013 21:12:46 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello!

When using `completion-at-point' (or any minibuffer completion), the
completion can scroll a window different from the completions.

Reproduction:

1) Create three windows using C-x 2, let's call them A, B and C from top
to bottom.

2) Make sure all three of them are at the top of the buffer and have
more text in them than fits in them (i.e. can be scrolled up; down; er;
text can scroll up).

3) Start ielm (M-x ielm) in the bottommost. This is just to get a buffer
in which tab completion happens, as opposed to the minibuffer.

4) Go to the topmost window, A. Then switch directly to the bottommost,
i.e. switch to C so that A is still the "other" window. E.g. using M-:
(select-window (nth 2 (window-list)))

5) Start a completion, e.g. using f TAB. A completion buffer shows up in
window *B*. Hit TAB again. Notice that window *A* is cycling.

The problem is that `minibuffer-complete' calls `scroll-other-window'
even though that's not the correct window in this case.

Trivial fix:

--- lisp/minibuffer.el	2013-02-09 05:52:20 +0000
+++ lisp/minibuffer.el	2013-03-07 19:58:39 +0000
@@ -1050,7 +1050,8 @@
             ;; If end is in view, scroll up to the beginning.
             (set-window-start window (point-min) nil)
           ;; Else scroll down one screen.
-          (scroll-other-window))
+          (with-selected-window window
+            (scroll-up)))
         nil)))
    ;; If we're cycling, keep on cycling.
    ((and completion-cycling completion-all-sorted-completions)

Regards,
        -- Jorgen

PS. Not a regression, 24.2 already had this bug.

In GNU Emacs 24.3.50.1 (x86_64-unknown-linux-gnu)
 of 2013-03-02 on orion.kollektiv-hamburg.de
Bzr revision: 111915 [email-masked]
Configured using:
 `configure --without-x --with-x-toolkit=no'