all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
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).



  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

* 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 external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.