aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/progmodes
diff options
context:
space:
mode:
authorKenichi Handa2012-08-28 22:44:20 +0900
committerKenichi Handa2012-08-28 22:44:20 +0900
commit4eb4de01df384be9b8d811f7ab476eeb37ece748 (patch)
treed04f0dae31dd8b533a0c3cd738430841ce7ebb84 /lisp/progmodes
parentfabc1281e9cde34ff9a19d843316d2ceca8647ad (diff)
parent4f2daf31078e2cc059710e129dffe0beed8fc7c2 (diff)
downloademacs-4eb4de01df384be9b8d811f7ab476eeb37ece748.tar.gz
emacs-4eb4de01df384be9b8d811f7ab476eeb37ece748.zip
merge trunk
Diffstat (limited to 'lisp/progmodes')
-rw-r--r--lisp/progmodes/compile.el5
-rw-r--r--lisp/progmodes/executable.el3
-rw-r--r--lisp/progmodes/gdb-mi.el241
-rw-r--r--lisp/progmodes/gud.el6
4 files changed, 113 insertions, 142 deletions
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index 21a323d8b45..eb966e8a90d 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -2461,10 +2461,7 @@ and overlay is highlighted between MK and END-MK."
2461 ;; the error location if the two buffers are in two 2461 ;; the error location if the two buffers are in two
2462 ;; different frames. So don't do it if it's not necessary. 2462 ;; different frames. So don't do it if it's not necessary.
2463 pre-existing 2463 pre-existing
2464 (let ((display-buffer-reuse-frames t) 2464 (display-buffer (marker-buffer msg))))
2465 (pop-up-windows t))
2466 ;; Pop up a window.
2467 (display-buffer (marker-buffer msg)))))
2468 (highlight-regexp (with-current-buffer (marker-buffer msg) 2465 (highlight-regexp (with-current-buffer (marker-buffer msg)
2469 ;; also do this while we change buffer 2466 ;; also do this while we change buffer
2470 (compilation-set-window w msg) 2467 (compilation-set-window w msg)
diff --git a/lisp/progmodes/executable.el b/lisp/progmodes/executable.el
index e5142571972..092e1a4d578 100644
--- a/lisp/progmodes/executable.el
+++ b/lisp/progmodes/executable.el
@@ -84,8 +84,9 @@ When this is `function', only ask when called non-interactively."
84 :group 'executable) 84 :group 'executable)
85 85
86 86
87(defcustom executable-prefix "#! " 87(defcustom executable-prefix "#!"
88 "Interpreter magic number prefix inserted when there was no magic number." 88 "Interpreter magic number prefix inserted when there was no magic number."
89 :version "24.3" ; "#! " -> "#!"
89 :type 'string 90 :type 'string
90 :group 'executable) 91 :group 'executable)
91 92
diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el
index 0a99c2f5c24..59c419abfc3 100644
--- a/lisp/progmodes/gdb-mi.el
+++ b/lisp/progmodes/gdb-mi.el
@@ -1413,29 +1413,6 @@ this trigger is subscribed to `gdb-buf-publisher' and called with
1413 (with-current-buffer ,buffer 1413 (with-current-buffer ,buffer
1414 (apply ',expr args)))) 1414 (apply ',expr args))))
1415 1415
1416;; Used to define all gdb-frame-*-buffer functions except
1417;; `gdb-frame-io-buffer'
1418(defmacro def-gdb-frame-for-buffer (name buffer &optional doc)
1419 "Define a function NAME which shows gdb BUFFER in a separate frame.
1420
1421DOC is an optional documentation string."
1422 `(defun ,name (&optional thread)
1423 ,(when doc doc)
1424 (interactive)
1425 (let ((special-display-regexps (append special-display-regexps '(".*")))
1426 (special-display-frame-alist gdb-frame-parameters))
1427 (display-buffer (gdb-get-buffer-create ,buffer thread)))))
1428
1429(defmacro def-gdb-display-buffer (name buffer &optional doc)
1430 "Define a function NAME which shows gdb BUFFER.
1431
1432DOC is an optional documentation string."
1433 `(defun ,name (&optional thread)
1434 ,(when doc doc)
1435 (interactive)
1436 (gdb-display-buffer
1437 (gdb-get-buffer-create ,buffer thread) t)))
1438
1439;; Used to display windows with thread-bound buffers 1416;; Used to display windows with thread-bound buffers
1440(defmacro def-gdb-preempt-display-buffer (name buffer &optional doc 1417(defmacro def-gdb-preempt-display-buffer (name buffer &optional doc
1441 split-horizontal) 1418 split-horizontal)
@@ -1511,8 +1488,7 @@ DOC is an optional documentation string."
1511(defun gdb-display-io-buffer () 1488(defun gdb-display-io-buffer ()
1512 "Display IO of debugged program in a separate window." 1489 "Display IO of debugged program in a separate window."
1513 (interactive) 1490 (interactive)
1514 (gdb-display-buffer 1491 (gdb-display-buffer (gdb-get-buffer-create 'gdb-inferior-io)))
1515 (gdb-get-buffer-create 'gdb-inferior-io) t))
1516 1492
1517(defun gdb-inferior-io--init-proc (proc) 1493(defun gdb-inferior-io--init-proc (proc)
1518 ;; Set up inferior I/O. Needs GDB 6.4 onwards. 1494 ;; Set up inferior I/O. Needs GDB 6.4 onwards.
@@ -1540,19 +1516,24 @@ DOC is an optional documentation string."
1540 (comint-exec io-buffer "gdb-inferior" nil nil nil) 1516 (comint-exec io-buffer "gdb-inferior" nil nil nil)
1541 (gdb-inferior-io--init-proc (get-buffer-process io-buffer)))))) 1517 (gdb-inferior-io--init-proc (get-buffer-process io-buffer))))))
1542 1518
1543(defconst gdb-frame-parameters 1519(defvar gdb-display-buffer-other-frame-action
1544 '((height . 14) (width . 80) 1520 `((display-buffer-reuse-window display-buffer-pop-up-frame)
1545 (unsplittable . t) 1521 (reusable-frames . 0)
1546 (tool-bar-lines . nil) 1522 (inhibit-same-window . t)
1547 (menu-bar-lines . nil) 1523 (pop-up-frame-parameters (height . 14)
1548 (minibuffer . nil))) 1524 (width . 80)
1525 (unsplittable . t)
1526 (tool-bar-lines . nil)
1527 (menu-bar-lines . nil)
1528 (minibuffer . nil)))
1529 "A `display-buffer' action for displaying GDB utility frames.")
1530(put 'gdb-display-buffer-other-frame-action 'risky-local-variable t)
1549 1531
1550(defun gdb-frame-io-buffer () 1532(defun gdb-frame-io-buffer ()
1551 "Display IO of debugged program in a new frame." 1533 "Display IO of debugged program in another frame."
1552 (interactive) 1534 (interactive)
1553 (let ((special-display-regexps (append special-display-regexps '(".*"))) 1535 (display-buffer (gdb-get-buffer-create 'gdb-inferior-io)
1554 (special-display-frame-alist gdb-frame-parameters)) 1536 gdb-display-buffer-other-frame-action))
1555 (display-buffer (gdb-get-buffer-create 'gdb-inferior-io))))
1556 1537
1557(defvar gdb-inferior-io-mode-map 1538(defvar gdb-inferior-io-mode-map
1558 (let ((map (make-sparse-keymap))) 1539 (let ((map (make-sparse-keymap)))
@@ -1571,7 +1552,7 @@ DOC is an optional documentation string."
1571 1552
1572(defun gdb-inferior-filter (proc string) 1553(defun gdb-inferior-filter (proc string)
1573 (unless (string-equal string "") 1554 (unless (string-equal string "")
1574 (gdb-display-buffer (gdb-get-buffer-create 'gdb-inferior-io) t)) 1555 (gdb-display-buffer (gdb-get-buffer-create 'gdb-inferior-io)))
1575 (with-current-buffer (gdb-get-buffer-create 'gdb-inferior-io) 1556 (with-current-buffer (gdb-get-buffer-create 'gdb-inferior-io)
1576 (comint-output-filter proc string))) 1557 (comint-output-filter proc string)))
1577 1558
@@ -2615,15 +2596,16 @@ If not in a source or disassembly buffer just set point."
2615(defun gdb-breakpoints-buffer-name () 2596(defun gdb-breakpoints-buffer-name ()
2616 (concat "*breakpoints of " (gdb-get-target-string) "*")) 2597 (concat "*breakpoints of " (gdb-get-target-string) "*"))
2617 2598
2618(def-gdb-display-buffer 2599(defun gdb-display-breakpoints-buffer (&optional thread)
2619 gdb-display-breakpoints-buffer 2600 "Display GDB breakpoints."
2620 'gdb-breakpoints-buffer 2601 (interactive)
2621 "Display status of user-settable breakpoints.") 2602 (gdb-display-buffer (gdb-get-buffer-create 'gdb-breakpoints-buffer thread)))
2622 2603
2623(def-gdb-frame-for-buffer 2604(defun gdb-frame-breakpoints-buffer (&optional thread)
2624 gdb-frame-breakpoints-buffer 2605 "Display GDB breakpoints in another frame."
2625 'gdb-breakpoints-buffer 2606 (interactive)
2626 "Display status of user-settable breakpoints in a new frame.") 2607 (display-buffer (gdb-get-buffer-create 'gdb-breakpoints-buffer thread)
2608 gdb-display-buffer-other-frame-action))
2627 2609
2628(defvar gdb-breakpoints-mode-map 2610(defvar gdb-breakpoints-mode-map
2629 (let ((map (make-sparse-keymap)) 2611 (let ((map (make-sparse-keymap))
@@ -2684,15 +2666,16 @@ corresponding to the mode line clicked."
2684(defun gdb-threads-buffer-name () 2666(defun gdb-threads-buffer-name ()
2685 (concat "*threads of " (gdb-get-target-string) "*")) 2667 (concat "*threads of " (gdb-get-target-string) "*"))
2686 2668
2687(def-gdb-display-buffer 2669(defun gdb-display-threads-buffer (&optional thread)
2688 gdb-display-threads-buffer 2670 "Display GDB threads."
2689 'gdb-threads-buffer 2671 (interactive)
2690 "Display GDB threads.") 2672 (gdb-display-buffer (gdb-get-buffer-create 'gdb-threads-buffer thread)))
2691 2673
2692(def-gdb-frame-for-buffer 2674(defun gdb-frame-threads-buffer (&optional thread)
2693 gdb-frame-threads-buffer 2675 "Display GDB threads in another frame."
2694 'gdb-threads-buffer 2676 (interactive)
2695 "Display GDB threads in a new frame.") 2677 (display-buffer (gdb-get-buffer-create 'gdb-threads-buffer thread)
2678 gdb-display-buffer-other-frame-action))
2696 2679
2697(def-gdb-trigger-and-handler 2680(def-gdb-trigger-and-handler
2698 gdb-invalidate-threads (gdb-current-context-command "-thread-info") 2681 gdb-invalidate-threads (gdb-current-context-command "-thread-info")
@@ -2868,26 +2851,22 @@ on the current line."
2868(def-gdb-thread-buffer-simple-command 2851(def-gdb-thread-buffer-simple-command
2869 gdb-frame-stack-for-thread 2852 gdb-frame-stack-for-thread
2870 gdb-frame-stack-buffer 2853 gdb-frame-stack-buffer
2871 "Display a new frame with stack buffer for the thread at 2854 "Display another frame with stack buffer for thread at current line.")
2872current line.")
2873 2855
2874(def-gdb-thread-buffer-simple-command 2856(def-gdb-thread-buffer-simple-command
2875 gdb-frame-locals-for-thread 2857 gdb-frame-locals-for-thread
2876 gdb-frame-locals-buffer 2858 gdb-frame-locals-buffer
2877 "Display a new frame with locals buffer for the thread at 2859 "Display another frame with locals buffer for thread at current line.")
2878current line.")
2879 2860
2880(def-gdb-thread-buffer-simple-command 2861(def-gdb-thread-buffer-simple-command
2881 gdb-frame-registers-for-thread 2862 gdb-frame-registers-for-thread
2882 gdb-frame-registers-buffer 2863 gdb-frame-registers-buffer
2883 "Display a new frame with registers buffer for the thread at 2864 "Display another frame with registers buffer for the thread at current line.")
2884current line.")
2885 2865
2886(def-gdb-thread-buffer-simple-command 2866(def-gdb-thread-buffer-simple-command
2887 gdb-frame-disassembly-for-thread 2867 gdb-frame-disassembly-for-thread
2888 gdb-frame-disassembly-buffer 2868 gdb-frame-disassembly-buffer
2889 "Display a new frame with disassembly buffer for the thread at 2869 "Display another frame with disassembly buffer for the thread at current line.")
2890current line.")
2891 2870
2892(defmacro def-gdb-thread-buffer-gud-command (name gud-command &optional doc) 2871(defmacro def-gdb-thread-buffer-gud-command (name gud-command &optional doc)
2893 "Define a NAME which will execute GUD-COMMAND with 2872 "Define a NAME which will execute GUD-COMMAND with
@@ -3290,21 +3269,16 @@ DOC is an optional documentation string."
3290(defun gdb-memory-buffer-name () 3269(defun gdb-memory-buffer-name ()
3291 (concat "*memory of " (gdb-get-target-string) "*")) 3270 (concat "*memory of " (gdb-get-target-string) "*"))
3292 3271
3293(def-gdb-display-buffer 3272(defun gdb-display-memory-buffer (&optional thread)
3294 gdb-display-memory-buffer 3273 "Display GDB memory contents."
3295 'gdb-memory-buffer 3274 (interactive)
3296 "Display memory contents.") 3275 (gdb-display-buffer (gdb-get-buffer-create 'gdb-memory-buffer thread)))
3297 3276
3298(defun gdb-frame-memory-buffer () 3277(defun gdb-frame-memory-buffer ()
3299 "Display memory contents in a new frame." 3278 "Display memory contents in another frame."
3300 (interactive) 3279 (interactive)
3301 (let* ((special-display-regexps (append special-display-regexps '(".*"))) 3280 (display-buffer (gdb-get-buffer-create 'gdb-memory-buffer)
3302 (special-display-frame-alist 3281 gdb-display-buffer-other-frame-action))
3303 `((left-fringe . 0)
3304 (right-fringe . 0)
3305 (width . 83)
3306 ,@gdb-frame-parameters)))
3307 (display-buffer (gdb-get-buffer-create 'gdb-memory-buffer))))
3308 3282
3309 3283
3310;;; Disassembly view 3284;;; Disassembly view
@@ -3313,19 +3287,20 @@ DOC is an optional documentation string."
3313 (gdb-current-context-buffer-name 3287 (gdb-current-context-buffer-name
3314 (concat "disassembly of " (gdb-get-target-string)))) 3288 (concat "disassembly of " (gdb-get-target-string))))
3315 3289
3316(def-gdb-display-buffer 3290(defun gdb-display-disassembly-buffer (&optional thread)
3317 gdb-display-disassembly-buffer 3291 "Display GDB disassembly information."
3318 'gdb-disassembly-buffer 3292 (interactive)
3319 "Display disassembly for current stack frame.") 3293 (gdb-display-buffer (gdb-get-buffer-create 'gdb-disassembly-buffer thread)))
3320 3294
3321(def-gdb-preempt-display-buffer 3295(def-gdb-preempt-display-buffer
3322 gdb-preemptively-display-disassembly-buffer 3296 gdb-preemptively-display-disassembly-buffer
3323 'gdb-disassembly-buffer) 3297 'gdb-disassembly-buffer)
3324 3298
3325(def-gdb-frame-for-buffer 3299(defun gdb-frame-disassembly-buffer (&optional thread)
3326 gdb-frame-disassembly-buffer 3300 "Display GDB disassembly information in another frame."
3327 'gdb-disassembly-buffer 3301 (interactive)
3328 "Display disassembly in a new frame.") 3302 (display-buffer (gdb-get-buffer-create 'gdb-disassembly-buffer thread)
3303 gdb-display-buffer-other-frame-action))
3329 3304
3330(def-gdb-auto-update-trigger gdb-invalidate-disassembly 3305(def-gdb-auto-update-trigger gdb-invalidate-disassembly
3331 (let* ((frame (gdb-current-buffer-frame)) 3306 (let* ((frame (gdb-current-buffer-frame))
@@ -3560,19 +3535,20 @@ member."
3560 (gdb-current-context-buffer-name 3535 (gdb-current-context-buffer-name
3561 (concat "stack frames of " (gdb-get-target-string)))) 3536 (concat "stack frames of " (gdb-get-target-string))))
3562 3537
3563(def-gdb-display-buffer 3538(defun gdb-display-stack-buffer (&optional thread)
3564 gdb-display-stack-buffer 3539 "Display GDB backtrace for current stack."
3565 'gdb-stack-buffer 3540 (interactive)
3566 "Display backtrace of current stack.") 3541 (gdb-display-buffer (gdb-get-buffer-create 'gdb-stack-buffer thread)))
3567 3542
3568(def-gdb-preempt-display-buffer 3543(def-gdb-preempt-display-buffer
3569 gdb-preemptively-display-stack-buffer 3544 gdb-preemptively-display-stack-buffer
3570 'gdb-stack-buffer nil t) 3545 'gdb-stack-buffer nil t)
3571 3546
3572(def-gdb-frame-for-buffer 3547(defun gdb-frame-stack-buffer (&optional thread)
3573 gdb-frame-stack-buffer 3548 "Display GDB backtrace for current stack in another frame."
3574 'gdb-stack-buffer 3549 (interactive)
3575 "Display backtrace of current stack in a new frame.") 3550 (display-buffer (gdb-get-buffer-create 'gdb-stack-buffer thread)
3551 gdb-display-buffer-other-frame-action))
3576 3552
3577(defvar gdb-frames-mode-map 3553(defvar gdb-frames-mode-map
3578 (let ((map (make-sparse-keymap))) 3554 (let ((map (make-sparse-keymap)))
@@ -3719,19 +3695,20 @@ member."
3719 (gdb-current-context-buffer-name 3695 (gdb-current-context-buffer-name
3720 (concat "locals of " (gdb-get-target-string)))) 3696 (concat "locals of " (gdb-get-target-string))))
3721 3697
3722(def-gdb-display-buffer 3698(defun gdb-display-locals-buffer (&optional thread)
3723 gdb-display-locals-buffer 3699 "Display the local variables of current GDB stack."
3724 'gdb-locals-buffer 3700 (interactive)
3725 "Display local variables of current stack and their values.") 3701 (gdb-display-buffer (gdb-get-buffer-create 'gdb-locals-buffer thread)))
3726 3702
3727(def-gdb-preempt-display-buffer 3703(def-gdb-preempt-display-buffer
3728 gdb-preemptively-display-locals-buffer 3704 gdb-preemptively-display-locals-buffer
3729 'gdb-locals-buffer nil t) 3705 'gdb-locals-buffer nil t)
3730 3706
3731(def-gdb-frame-for-buffer 3707(defun gdb-frame-locals-buffer (&optional thread)
3732 gdb-frame-locals-buffer 3708 "Display the local variables of the current GDB stack in another frame."
3733 'gdb-locals-buffer 3709 (interactive)
3734 "Display local variables of current stack and their values in a new frame.") 3710 (display-buffer (gdb-get-buffer-create 'gdb-locals-buffer thread)
3711 gdb-display-buffer-other-frame-action))
3735 3712
3736 3713
3737;; Registers buffer. 3714;; Registers buffer.
@@ -3818,19 +3795,20 @@ member."
3818 (gdb-current-context-buffer-name 3795 (gdb-current-context-buffer-name
3819 (concat "registers of " (gdb-get-target-string)))) 3796 (concat "registers of " (gdb-get-target-string))))
3820 3797
3821(def-gdb-display-buffer 3798(defun gdb-display-registers-buffer (&optional thread)
3822 gdb-display-registers-buffer 3799 "Display GDB register contents."
3823 'gdb-registers-buffer 3800 (interactive)
3824 "Display integer register contents.") 3801 (gdb-display-buffer (gdb-get-buffer-create 'gdb-registers-buffer thread)))
3825 3802
3826(def-gdb-preempt-display-buffer 3803(def-gdb-preempt-display-buffer
3827 gdb-preemptively-display-registers-buffer 3804 gdb-preemptively-display-registers-buffer
3828 'gdb-registers-buffer nil t) 3805 'gdb-registers-buffer nil t)
3829 3806
3830(def-gdb-frame-for-buffer 3807(defun gdb-frame-registers-buffer (&optional thread)
3831 gdb-frame-registers-buffer 3808 "Display GDB register contents in another frame."
3832 'gdb-registers-buffer 3809 (interactive)
3833 "Display integer register contents in a new frame.") 3810 (display-buffer (gdb-get-buffer-create 'gdb-registers-buffer thread)
3811 gdb-display-buffer-other-frame-action))
3834 3812
3835;; Needs GDB 6.4 onwards (used to fail with no stack). 3813;; Needs GDB 6.4 onwards (used to fail with no stack).
3836(defun gdb-get-changed-registers () 3814(defun gdb-get-changed-registers ()
@@ -3917,26 +3895,26 @@ overlay arrow in source buffer."
3917 (setq gdb-filter-output (concat gdb-filter-output gdb-prompt-name))) 3895 (setq gdb-filter-output (concat gdb-filter-output gdb-prompt-name)))
3918 3896
3919;;;; Window management 3897;;;; Window management
3920(defun gdb-display-buffer (buf dedicated &optional frame) 3898(defun gdb-display-buffer (buf)
3921 "Show buffer BUF. 3899 "Show buffer BUF, and make that window dedicated."
3922 3900 (let ((window (display-buffer buf)))
3923If BUF is already displayed in some window, show it, deiconifying 3901 (set-window-dedicated-p window t)
3924the frame if necessary. Otherwise, find least recently used 3902 window))
3925window and show BUF there, if the window is not used for GDB 3903
3926already, in which case that window is split first." 3904 ;; (let ((answer (get-buffer-window buf 0)))
3927 (let ((answer (get-buffer-window buf (or frame 0)))) 3905 ;; (if answer
3928 (if answer 3906 ;; (display-buffer buf nil 0) ;Deiconify frame if necessary.
3929 (display-buffer buf nil (or frame 0)) ;Deiconify frame if necessary. 3907 ;; (let ((window (get-lru-window)))
3930 (let ((window (get-lru-window))) 3908 ;; (if (eq (buffer-local-value 'gud-minor-mode (window-buffer window))
3931 (if (eq (buffer-local-value 'gud-minor-mode (window-buffer window)) 3909 ;; 'gdbmi)
3932 'gdbmi) 3910 ;; (let ((largest (get-largest-window)))
3933 (let ((largest (get-largest-window))) 3911 ;; (setq answer (split-window largest))
3934 (setq answer (split-window largest)) 3912 ;; (set-window-buffer answer buf)
3935 (set-window-buffer answer buf) 3913 ;; (set-window-dedicated-p answer t)
3936 (set-window-dedicated-p answer dedicated) 3914 ;; answer)
3937 answer) 3915 ;; (set-window-buffer window buf)
3938 (set-window-buffer window buf) 3916 ;; window)))))
3939 window))))) 3917
3940 3918
3941(defun gdb-preempt-existing-or-display-buffer (buf &optional split-horizontal) 3919(defun gdb-preempt-existing-or-display-buffer (buf &optional split-horizontal)
3942 "Find window displaying a buffer with the same 3920 "Find window displaying a buffer with the same
@@ -3963,7 +3941,7 @@ SPLIT-HORIZONTAL and show BUF in the new window."
3963 (if dedicated-window 3941 (if dedicated-window
3964 (set-window-buffer 3942 (set-window-buffer
3965 (split-window dedicated-window nil split-horizontal) buf) 3943 (split-window dedicated-window nil split-horizontal) buf)
3966 (gdb-display-buffer buf t)))))) 3944 (gdb-display-buffer buf))))))
3967 (error "Null buffer"))) 3945 (error "Null buffer")))
3968 3946
3969;;; Shared keymap initialization: 3947;;; Shared keymap initialization:
@@ -4067,7 +4045,7 @@ SPLIT-HORIZONTAL and show BUF in the new window."
4067 'all-threads) 4045 'all-threads)
4068 4046
4069(defun gdb-frame-gdb-buffer () 4047(defun gdb-frame-gdb-buffer ()
4070 "Display GUD buffer in a new frame." 4048 "Display GUD buffer in another frame."
4071 (interactive) 4049 (interactive)
4072 (display-buffer-other-frame gud-comint-buffer)) 4050 (display-buffer-other-frame gud-comint-buffer))
4073 4051
@@ -4089,13 +4067,12 @@ window is dedicated."
4089 4067
4090(defun gdb-setup-windows () 4068(defun gdb-setup-windows ()
4091 "Layout the window pattern for `gdb-many-windows'." 4069 "Layout the window pattern for `gdb-many-windows'."
4092 (gdb-display-locals-buffer) 4070 (gdb-get-buffer-create 'gdb-locals-buffer)
4093 (gdb-display-stack-buffer) 4071 (gdb-get-buffer-create 'gdb-stack-buffer)
4094 (delete-other-windows) 4072 (gdb-get-buffer-create 'gdb-breakpoints-buffer)
4095 (gdb-display-breakpoints-buffer) 4073 (set-window-dedicated-p (selected-window) nil)
4096 (delete-other-windows)
4097 ;; Don't dedicate.
4098 (switch-to-buffer gud-comint-buffer) 4074 (switch-to-buffer gud-comint-buffer)
4075 (delete-other-windows)
4099 (let ((win0 (selected-window)) 4076 (let ((win0 (selected-window))
4100 (win1 (split-window nil ( / ( * (window-height) 3) 4))) 4077 (win1 (split-window nil ( / ( * (window-height) 3) 4)))
4101 (win2 (split-window nil ( / (window-height) 3))) 4078 (win2 (split-window nil ( / (window-height) 3)))
diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el
index 5946e93f34d..2e3858b2cc5 100644
--- a/lisp/progmodes/gud.el
+++ b/lisp/progmodes/gud.el
@@ -2685,7 +2685,6 @@ Obeying it means displaying in another window the specified file and line."
2685(declare-function global-hl-line-highlight "hl-line" ()) 2685(declare-function global-hl-line-highlight "hl-line" ())
2686(declare-function hl-line-highlight "hl-line" ()) 2686(declare-function hl-line-highlight "hl-line" ())
2687(declare-function gdb-display-source-buffer "gdb-mi" (buffer)) 2687(declare-function gdb-display-source-buffer "gdb-mi" (buffer))
2688(declare-function gdb-display-buffer "gdb-mi" (buf dedicated &optional size))
2689 2688
2690;; Make sure the file named TRUE-FILE is in a buffer that appears on the screen 2689;; Make sure the file named TRUE-FILE is in a buffer that appears on the screen
2691;; and that its line LINE is visible. 2690;; and that its line LINE is visible.
@@ -2702,10 +2701,7 @@ Obeying it means displaying in another window the specified file and line."
2702 (window (and buffer 2701 (window (and buffer
2703 (or (get-buffer-window buffer) 2702 (or (get-buffer-window buffer)
2704 (if (eq gud-minor-mode 'gdbmi) 2703 (if (eq gud-minor-mode 'gdbmi)
2705 (or (if (get-buffer-window buffer 'visible) 2704 (display-buffer buffer nil 'visible))
2706 (display-buffer buffer nil 'visible))
2707 (unless (gdb-display-source-buffer buffer)
2708 (gdb-display-buffer buffer nil 'visible))))
2709 (display-buffer buffer)))) 2705 (display-buffer buffer))))
2710 (pos)) 2706 (pos))
2711 (if buffer 2707 (if buffer