GNU bug report logs - #55983
29.0.50; If xref-goto-xref pops up a frame, it doesn't set its input focus

Previous Next

Package: emacs;

Reported by: miha <at> kamnitnik.top

Date: Tue, 14 Jun 2022 20:06:01 UTC

Severity: normal

Found in version 29.0.50

Done: Dmitry Gutov <dgutov <at> yandex.ru>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 55983 in the body.
You can then email your comments to 55983 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#55983; Package emacs. (Tue, 14 Jun 2022 20:06:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to miha <at> kamnitnik.top:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Tue, 14 Jun 2022 20:06:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: miha <at> kamnitnik.top
To: bug-gnu-emacs <at> gnu.org
Subject: 29.0.50; If xref-goto-xref pops up a frame, it doesn't set its
 input focus
Date: Tue, 14 Jun 2022 22:17:49 +0200
[Message part 1 (text/plain, inline)]
To reproduce, customize pop-up-frames to non-nil and set up your window
manager such that it doesn't automatically set input focus on newly
created frames.

Now in an xref-mode buffer, press RET on a search result
(xref-goto-xref) and notice that the newly created frame doesn't receive
input focus. That is because xref-goto-xref uses `display-buffer',
followed by a `select-window'.

To contrast this behaviour with grep-mode, pressing RET in a grep-mode
buffer (compile-goto-error) does set input focus to the newly created
frame. That is because compile-goto-error uses `pop-to-buffer`, which
also calls `select-frame-set-input-focus'.

Best regards.

In GNU Emacs 29.0.50 (build 4, x86_64-pc-linux-gnu, GTK+ Version 3.24.33, cairo version 1.17.6)
 of 2022-06-14 built on miha-pc
Repository revision: 175bc8e5a53740432c844b5aae1981d4f47c96f7
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12101003
System Description: Arch Linux

Configured using:
 'configure --prefix=/usr --without-libsystemd'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
JSON LCMS2 LIBOTF LIBXML2 M17N_FLT MODULES NOTIFY INOTIFY PDUMPER PNG
RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS WEBP X11
XDBE XIM XINPUT2 XPM GTK3 ZLIB

Important settings:
  value of $LANG: en_US.utf8
  locale-coding-system: utf-8-unix

Major mode: Fundamental

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  blink-cursor-mode: t
  buffer-read-only: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message mailcap yank-media rmc puny
dired dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg
rfc6068 epg-config gnus-util text-property-search time-date seq gv
subr-x byte-opt bytecomp byte-compile cconv mm-decode mm-bodies
mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader cl-loaddefs
cl-lib sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils
iso-transl tooltip eldoc paren electric uniquify ediff-hook vc-hooks
lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd
tool-bar dnd fontset image regexp-opt fringe tabulated-list replace
newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar
rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock
font-lock syntax font-core term/tty-colors frame minibuffer nadvice
simple cl-generic indonesian philippine cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
cp51932 hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese composite emoji-zwj charscript charprop case-table
epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button
loaddefs faces cus-face macroexp files window text-properties overlay
sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads dbusbind inotify lcms2
dynamic-setting system-font-setting font-render-setting cairo
move-toolbar gtk x-toolkit xinput2 x multi-tty make-network-process
emacs)

Memory information:
((conses 16 44772 6206)
 (symbols 48 5717 0)
 (strings 32 15673 1842)
 (string-bytes 1 515461)
 (vectors 16 11098)
 (vector-slots 8 161431 8182)
 (floats 8 20 54)
 (intervals 56 340 1)
 (buffers 992 11))
[signature.asc (application/pgp-signature, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#55983; Package emacs. (Sun, 19 Jun 2022 00:03:01 GMT) Full text and rfc822 format available.

Message #8 received at 55983 <at> debbugs.gnu.org (full text, mbox):

From: Dmitry Gutov <dgutov <at> yandex.ru>
To: miha <at> kamnitnik.top, 55983 <at> debbugs.gnu.org
Subject: Re: bug#55983: 29.0.50; If xref-goto-xref pops up a frame, it doesn't
 set its input focus
Date: Sun, 19 Jun 2022 03:01:56 +0300
Hi!

Thanks for the report.

On 14.06.2022 23:17, miha--- via Bug reports for GNU Emacs, the Swiss 
army knife of text editors wrote:
> To reproduce, customize pop-up-frames to non-nil and set up your window
> manager such that it doesn't automatically set input focus on newly
> created frames.

TBH I'm not sure how to setup GNOME Shell to do this.

> Now in an xref-mode buffer, press RET on a search result
> (xref-goto-xref) and notice that the newly created frame doesn't receive
> input focus. That is because xref-goto-xref uses `display-buffer',
> followed by a `select-window'.
> 
> To contrast this behaviour with grep-mode, pressing RET in a grep-mode
> buffer (compile-goto-error) does set input focus to the newly created
> frame. That is because compile-goto-error uses `pop-to-buffer`, which
> also calls `select-frame-set-input-focus'.

Window management in Emacs is a tricky business, and the current 
implementation is a result of https://debbugs.gnu.org/28814 which 
implemented a particular kind of behavior and 
https://debbugs.gnu.org/33870 which did try to make it more customizable 
through display-buffer-alist. See both discussions for more detail.

I don't have the time at the moment to try to rework it myself.

Patches welcome, though. But please mind the original implementation intent.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#55983; Package emacs. (Sun, 19 Jun 2022 13:27:02 GMT) Full text and rfc822 format available.

Message #11 received at 55983 <at> debbugs.gnu.org (full text, mbox):

From: <miha <at> kamnitnik.top>
To: Dmitry Gutov <dgutov <at> yandex.ru>, 55983 <at> debbugs.gnu.org
Subject: Re: bug#55983: 29.0.50; If xref-goto-xref pops up a frame, it
 doesn't set its input focus
Date: Sun, 19 Jun 2022 15:37:45 +0200
[Message part 1 (text/plain, inline)]
Dmitry Gutov <dgutov <at> yandex.ru> writes:

> Hi!
>
> Thanks for the report.
>
> On 14.06.2022 23:17, miha--- via Bug reports for GNU Emacs, the Swiss 
> army knife of text editors wrote:
>> To reproduce, customize pop-up-frames to non-nil and set up your window
>> manager such that it doesn't automatically set input focus on newly
>> created frames.
>
> TBH I'm not sure how to setup GNOME Shell to do this.
>
>> Now in an xref-mode buffer, press RET on a search result
>> (xref-goto-xref) and notice that the newly created frame doesn't receive
>> input focus. That is because xref-goto-xref uses `display-buffer',
>> followed by a `select-window'.
>> 
>> To contrast this behaviour with grep-mode, pressing RET in a grep-mode
>> buffer (compile-goto-error) does set input focus to the newly created
>> frame. That is because compile-goto-error uses `pop-to-buffer`, which
>> also calls `select-frame-set-input-focus'.
>
> Window management in Emacs is a tricky business, and the current 
> implementation is a result of https://debbugs.gnu.org/28814 which 
> implemented a particular kind of behavior and 
> https://debbugs.gnu.org/33870 which did try to make it more customizable 
> through display-buffer-alist. See both discussions for more detail.
>
> I don't have the time at the moment to try to rework it myself.
>
> Patches welcome, though. But please mind the original implementation
> intent.

Please see the attached patch. The only thing it adds is setting frame
input focus if necessary before calling `select-window'. Other behaviour
should remain the same as before. (The code and the comment is lifted
from the function `pop-to-buffer'.)

Best regards.

[0001-xref-goto-xref-Set-input-focus-in-addition-to-select.patch (text/x-patch, attachment)]
[signature.asc (application/pgp-signature, inline)]

Reply sent to Dmitry Gutov <dgutov <at> yandex.ru>:
You have taken responsibility. (Mon, 20 Jun 2022 00:49:01 GMT) Full text and rfc822 format available.

Notification sent to miha <at> kamnitnik.top:
bug acknowledged by developer. (Mon, 20 Jun 2022 00:49:02 GMT) Full text and rfc822 format available.

Message #16 received at 55983-done <at> debbugs.gnu.org (full text, mbox):

From: Dmitry Gutov <dgutov <at> yandex.ru>
To: miha <at> kamnitnik.top, 55983-done <at> debbugs.gnu.org
Subject: Re: bug#55983: 29.0.50; If xref-goto-xref pops up a frame, it doesn't
 set its input focus
Date: Mon, 20 Jun 2022 03:48:10 +0300
On 19.06.2022 16:37, miha--- via Bug reports for GNU Emacs, the Swiss 
army knife of text editors wrote:
> Please see the attached patch. The only thing it adds is setting frame
> input focus if necessary before calling `select-window'. Other behaviour
> should remain the same as before. (The code and the comment is lifted
> from the function `pop-to-buffer'.)

Makes sense. Pushed to master, thanks!




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Mon, 18 Jul 2022 11:24:11 GMT) Full text and rfc822 format available.

This bug report was last modified 2 years and 335 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.