]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix how gdb-mi calls display-buffer to avoid switching frames.
authorChong Yidong <cyd@gnu.org>
Thu, 18 Oct 2012 19:46:18 +0000 (03:46 +0800)
committerChong Yidong <cyd@gnu.org>
Thu, 18 Oct 2012 19:46:18 +0000 (03:46 +0800)
* lisp/progmodes/gdb-mi.el (gdb-display-buffer-other-frame-action):
Convert to defcustom.
(gdb-get-source-file): Don't bind pop-up-windows.

* lisp/progmodes/gud.el (gud-display-line): Don't specially re-use
other frames for the gdb-mi case.

Fixes: debbugs:12648
lisp/ChangeLog
lisp/progmodes/gdb-mi.el
lisp/progmodes/gud.el

index 51e6b67b86c808c7e6613339efb2068cfcf0f6ec..46336af6e7161ad5e26482b40e325bfcf86f9db6 100644 (file)
@@ -1,3 +1,12 @@
+2012-10-18  Chong Yidong  <cyd@gnu.org>
+
+       * progmodes/gdb-mi.el (gdb-display-buffer-other-frame-action):
+       Convert to defcustom.
+       (gdb-get-source-file): Don't bind pop-up-windows.
+
+       * progmodes/gud.el (gud-display-line): Don't specially re-use
+       other frames for the gdb-mi case (Bug#12648).
+
 2012-10-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * emacs-lisp/advice.el: Clean up commentary a bit.
index 59c419abfc3e6be2c79ee904c9782c68cf567e7e..805ffa36e4e1ed8702c96bcd91956173ec25fc5a 100644 (file)
@@ -1516,9 +1516,9 @@ this trigger is subscribed to `gdb-buf-publisher' and called with
        (comint-exec io-buffer "gdb-inferior" nil nil nil)
        (gdb-inferior-io--init-proc (get-buffer-process io-buffer))))))
 
-(defvar gdb-display-buffer-other-frame-action
-  `((display-buffer-reuse-window display-buffer-pop-up-frame)
-    (reusable-frames . 0)
+(defcustom gdb-display-buffer-other-frame-action
+  '((display-buffer-reuse-window display-buffer-pop-up-frame)
+    (reusable-frames . visible)
     (inhibit-same-window . t)
     (pop-up-frame-parameters (height . 14)
                             (width . 80)
@@ -1526,8 +1526,11 @@ this trigger is subscribed to `gdb-buf-publisher' and called with
                             (tool-bar-lines . nil)
                             (menu-bar-lines . nil)
                             (minibuffer . nil)))
-  "A `display-buffer' action for displaying GDB utility frames.")
-(put 'gdb-display-buffer-other-frame-action 'risky-local-variable t)
+  "`display-buffer' action for displaying GDB utility frames."
+  :group 'gdb
+  :type display-buffer--action-custom-type
+  :risky t
+  :version "24.3")
 
 (defun gdb-frame-io-buffer ()
   "Display IO of debugged program in another frame."
@@ -4175,9 +4178,9 @@ buffers, if required."
   (if gdb-many-windows
       (gdb-setup-windows)
     (gdb-get-buffer-create 'gdb-breakpoints-buffer)
-    (if (and gdb-show-main gdb-main-file)
-        (let ((pop-up-windows t))
-          (display-buffer (gud-find-file gdb-main-file)))))
+    (and gdb-show-main
+        gdb-main-file
+        (display-buffer (gud-find-file gdb-main-file))))
   (gdb-force-mode-line-update
    (propertize "ready" 'face font-lock-variable-name-face)))
 
index 2e3858b2cc54508d76e8a551ac860378be6b0322..719471278a8448b4fe907694945a73750bf307ea 100644 (file)
@@ -2700,42 +2700,39 @@ Obeying it means displaying in another window the specified file and line."
            (gud-find-file true-file)))
         (window (and buffer
                      (or (get-buffer-window buffer)
-                         (if (eq gud-minor-mode 'gdbmi)
-                             (display-buffer buffer nil 'visible))
                          (display-buffer buffer))))
         (pos))
-    (if buffer
-       (progn
-         (with-current-buffer buffer
-           (unless (or (verify-visited-file-modtime buffer) gud-keep-buffer)
-                 (if (yes-or-no-p
-                      (format "File %s changed on disk.  Reread from disk? "
-                              (buffer-name)))
-                     (revert-buffer t t)
-                   (setq gud-keep-buffer t)))
-           (save-restriction
-             (widen)
-             (goto-char (point-min))
-             (forward-line (1- line))
-             (setq pos (point))
-             (or gud-overlay-arrow-position
-                 (setq gud-overlay-arrow-position (make-marker)))
-             (set-marker gud-overlay-arrow-position (point) (current-buffer))
-             ;; If they turned on hl-line, move the hl-line highlight to
-             ;; the arrow's line.
-             (when (featurep 'hl-line)
-               (cond
-                (global-hl-line-mode
-                 (global-hl-line-highlight))
-                ((and hl-line-mode hl-line-sticky-flag)
-                 (hl-line-highlight)))))
-           (cond ((or (< pos (point-min)) (> pos (point-max)))
-                  (widen)
-                  (goto-char pos))))
-         (when window
-           (set-window-point window gud-overlay-arrow-position)
-           (if (eq gud-minor-mode 'gdbmi)
-               (setq gdb-source-window window)))))))
+    (when buffer
+      (with-current-buffer buffer
+       (unless (or (verify-visited-file-modtime buffer) gud-keep-buffer)
+         (if (yes-or-no-p
+              (format "File %s changed on disk.  Reread from disk? "
+                      (buffer-name)))
+             (revert-buffer t t)
+           (setq gud-keep-buffer t)))
+       (save-restriction
+         (widen)
+         (goto-char (point-min))
+         (forward-line (1- line))
+         (setq pos (point))
+         (or gud-overlay-arrow-position
+             (setq gud-overlay-arrow-position (make-marker)))
+         (set-marker gud-overlay-arrow-position (point) (current-buffer))
+         ;; If they turned on hl-line, move the hl-line highlight to
+         ;; the arrow's line.
+         (when (featurep 'hl-line)
+           (cond
+            (global-hl-line-mode
+             (global-hl-line-highlight))
+            ((and hl-line-mode hl-line-sticky-flag)
+             (hl-line-highlight)))))
+       (cond ((or (< pos (point-min)) (> pos (point-max)))
+              (widen)
+              (goto-char pos))))
+      (when window
+       (set-window-point window gud-overlay-arrow-position)
+       (if (eq gud-minor-mode 'gdbmi)
+           (setq gdb-source-window window))))))
 
 ;; The gud-call function must do the right thing whether its invoking
 ;; keystroke is from the GUD buffer itself (via major-mode binding)