From: Alan Mackenzie <acm@muc.de>
To: emacs-devel@gnu.org
Subject: Re: Edebug, with Elisp source in different frame - Edebug doesn't select the source window. [PATCH]
Date: Thu, 18 Oct 2018 11:08:24 +0000 [thread overview]
Message-ID: <20181018110824.GA3929@ACM> (raw)
In-Reply-To: <20181017162253.GD4753@ACM>
Hello, Emacs.
On Wed, Oct 17, 2018 at 16:22:53 +0000, Alan Mackenzie wrote:
> On Wed, Oct 17, 2018 at 14:22:26 +0000, Alan Mackenzie wrote:
> > In a GUI Emacs (26.1 or master), instrument a function for edebug with
> > C-u C-M-x in frame F1. From a different frame, F2, cause this function
> > to be called, thus entering edebug. F2 is still selected. Surely edebug
> > should have selected F1?
> I've found the answer, I think. Edebug is using select-window to select
> the frame. What select-window doesn't do is to shift the X-Window focus.
> For that, one needs to call select-frame-set-input-focus, something which
> the current incarnation of edebug fails to do.
More precisely, the function to call is x-focus-frame.
> My first experimentation with s-f-set-i-focus indicates this is the
> problem. I will come up with a patch.
Here is the first version of that patch. Now, in X, when edebug is
entered, the focus is moved to edebug buffer's frame. When edebug is
terminated, it is moved back to the original frame.
edebug-bounce-point has not been working either, but is more difficult
to fix. :-(
Comments?
diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el
index fb567c9cce..4d9850c7f6 100644
--- a/lisp/emacs-lisp/edebug.el
+++ b/lisp/emacs-lisp/edebug.el
@@ -2328,6 +2328,7 @@ edebug-default-enter
(debugger edebug-debugger) ; only while edebug is active.
(edebug-outside-debug-on-error debug-on-error)
(edebug-outside-debug-on-quit debug-on-quit)
+ (outside-frame (selected-frame))
;; Binding these may not be the right thing to do.
;; We want to allow the global values to be changed.
(debug-on-error (or debug-on-error edebug-on-error))
@@ -2338,7 +2339,9 @@ edebug-default-enter
edebug-initial-mode
edebug-execution-mode)
edebug-next-execution-mode nil)
- (edebug-default-enter function args body))))
+ (edebug-default-enter function args body))
+ (if (frame-live-p outside-frame)
+ (x-focus-frame outside-frame))))
(let* ((edebug-data (get function 'edebug))
(edebug-def-mark (car edebug-data)) ; mark at def start
@@ -2647,6 +2650,7 @@ edebug--display-1
(edebug-eval-display eval-result-list)
;; The evaluation list better not have deleted edebug-window-data.
(select-window (car edebug-window-data))
+ (x-focus-frame (window-frame (selected-window)))
(set-buffer edebug-buffer)
(setq edebug-buffer-outside-point (point))
--
Alan Mackenzie (Nuremberg, Germany).
next prev parent reply other threads:[~2018-10-18 11:08 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-17 14:22 Edebug, with Elisp source in different frame - Edebug doesn't select the source window Alan Mackenzie
2018-10-17 16:22 ` Alan Mackenzie
2018-10-18 11:08 ` Alan Mackenzie [this message]
2018-10-18 14:26 ` Should FOCUS_OUT_EVENT be ignored for the purposes of input-pending-p? [was: Edebug, with Elisp source in different frame...] Alan Mackenzie
2018-10-18 16:28 ` Stefan Monnier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181018110824.GA3929@ACM \
--to=acm@muc.de \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).