249 |
(gdb-enqueue-input (list "server list MAIN__\n" 'ignore)) ; Fortran program |
(gdb-enqueue-input (list "server list MAIN__\n" 'ignore)) ; Fortran program |
250 |
(gdb-enqueue-input (list "server info source\n" 'gdb-source-info)) |
(gdb-enqueue-input (list "server info source\n" 'gdb-source-info)) |
251 |
;; |
;; |
252 |
|
(set-window-dedicated-p (get-buffer-window gud-comint-buffer) t) |
253 |
|
;; |
254 |
(run-hooks 'gdba-mode-hook)) |
(run-hooks 'gdba-mode-hook)) |
255 |
|
|
256 |
(defcustom gdb-use-colon-colon-notation nil |
(defcustom gdb-use-colon-colon-notation nil |
1586 |
|
|
1587 |
|
|
1588 |
;;;; Window management |
;;;; Window management |
|
|
|
|
;;; The way we abuse the dedicated-p flag is pretty gross, but seems |
|
|
;;; to do the right thing. Seeing as there is no way for Lisp code to |
|
|
;;; get at the use_time field of a window, I'm not sure there exists a |
|
|
;;; more elegant solution without writing C code. |
|
|
|
|
1589 |
(defun gdb-display-buffer (buf &optional size) |
(defun gdb-display-buffer (buf &optional size) |
1590 |
(let ((must-split nil) |
(let ((must-split nil) |
1591 |
(answer nil)) |
(answer nil)) |
1592 |
(unwind-protect |
(setq answer (get-buffer-window buf 'visible)) |
1593 |
(progn |
(if (not answer) |
1594 |
(walk-windows |
(let ((window (get-lru-window))) |
1595 |
#'(lambda (win) |
(if window |
1596 |
(if (eq gud-comint-buffer (window-buffer win)) |
(progn |
1597 |
(set-window-dedicated-p win t)))) |
(set-window-buffer window buf) |
1598 |
(setq answer (get-buffer-window buf 'visible)) |
(setq answer window)) |
1599 |
(if (not answer) |
(setq must-split t)))) |
|
(let ((window (get-lru-window 'visible))) |
|
|
(if window |
|
|
(progn |
|
|
(set-window-buffer window buf) |
|
|
(setq answer window)) |
|
|
(setq must-split t))))) |
|
|
(walk-windows |
|
|
#'(lambda (win) |
|
|
(if (eq gud-comint-buffer (window-buffer win)) |
|
|
(set-window-dedicated-p win nil))))) |
|
1600 |
(if must-split |
(if must-split |
1601 |
(let* ((largest (get-largest-window 'visible)) |
(let* ((largest (get-largest-window)) |
1602 |
(cur-size (window-height largest)) |
(cur-size (window-height largest)) |
1603 |
(new-size (and size (< size cur-size) (- cur-size size)))) |
(new-size (and size (< size cur-size) (- cur-size size)))) |
1604 |
(setq answer (split-window largest new-size)) |
(setq answer (split-window largest new-size)) |
1605 |
(set-window-buffer answer buf))) |
(set-window-buffer answer buf))) |
1606 |
|
(set-window-dedicated-p answer t) |
1607 |
answer)) |
answer)) |
1608 |
|
|
1609 |
(defun gdb-display-source-buffer (buffer) |
(defun gdb-display-source-buffer (buffer) |
1702 |
:group 'gud |
:group 'gud |
1703 |
:version "21.4") |
:version "21.4") |
1704 |
|
|
1705 |
|
(defun dedicated-switch-to-buffer (name) |
1706 |
|
(set-window-dedicated-p |
1707 |
|
(get-buffer-window |
1708 |
|
(switch-to-buffer name)) t)) |
1709 |
|
|
1710 |
(defun gdb-setup-windows () |
(defun gdb-setup-windows () |
1711 |
"Layout the window pattern for gdb-many-windows." |
"Layout the window pattern for gdb-many-windows." |
1712 |
(gdb-display-locals-buffer) |
(gdb-display-locals-buffer) |
1714 |
(delete-other-windows) |
(delete-other-windows) |
1715 |
(gdb-display-breakpoints-buffer) |
(gdb-display-breakpoints-buffer) |
1716 |
(delete-other-windows) |
(delete-other-windows) |
1717 |
(switch-to-buffer gud-comint-buffer) |
(dedicated-switch-to-buffer gud-comint-buffer) |
1718 |
(split-window nil ( / ( * (window-height) 3) 4)) |
(split-window nil ( / ( * (window-height) 3) 4)) |
1719 |
(split-window nil ( / (window-height) 3)) |
(split-window nil ( / (window-height) 3)) |
1720 |
(split-window-horizontally) |
(split-window-horizontally) |
1721 |
(other-window 1) |
(other-window 1) |
1722 |
(switch-to-buffer (gdb-locals-buffer-name)) |
(dedicated-switch-to-buffer (gdb-locals-buffer-name)) |
1723 |
(other-window 1) |
(other-window 1) |
1724 |
(switch-to-buffer |
(dedicated-switch-to-buffer |
1725 |
(if (and gdb-view-source |
(if (and gdb-view-source |
1726 |
(eq gdb-selected-view 'source)) |
(eq gdb-selected-view 'source)) |
1727 |
(if gud-last-last-frame |
(if gud-last-last-frame |
1731 |
(when gdb-use-inferior-io-buffer |
(when gdb-use-inferior-io-buffer |
1732 |
(split-window-horizontally) |
(split-window-horizontally) |
1733 |
(other-window 1) |
(other-window 1) |
1734 |
(switch-to-buffer (gdb-inferior-io-name))) |
(dedicated-switch-to-buffer (gdb-inferior-io-name))) |
1735 |
(other-window 1) |
(other-window 1) |
1736 |
(switch-to-buffer (gdb-stack-buffer-name)) |
(dedicated-switch-to-buffer (gdb-stack-buffer-name)) |
1737 |
(split-window-horizontally) |
(split-window-horizontally) |
1738 |
(other-window 1) |
(other-window 1) |
1739 |
(switch-to-buffer (gdb-breakpoints-buffer-name)) |
(dedicated-switch-to-buffer (gdb-breakpoints-buffer-name)) |
1740 |
(other-window 1)) |
(other-window 1)) |
1741 |
|
|
1742 |
(defcustom gdb-many-windows nil |
(defcustom gdb-many-windows nil |
1773 |
(delete-other-windows) |
(delete-other-windows) |
1774 |
(split-window) |
(split-window) |
1775 |
(other-window 1) |
(other-window 1) |
1776 |
(switch-to-buffer |
(dedicated-switch-to-buffer |
1777 |
(if (and gdb-view-source |
(if (and gdb-view-source |
1778 |
(eq gdb-selected-view 'source)) |
(eq gdb-selected-view 'source)) |
1779 |
(if gud-last-last-frame |
(if gud-last-last-frame |
1793 |
(kill-buffer nil) |
(kill-buffer nil) |
1794 |
(gdb-remove-breakpoint-icons (point-min) (point-max) t) |
(gdb-remove-breakpoint-icons (point-min) (point-max) t) |
1795 |
(setq gud-minor-mode nil) |
(setq gud-minor-mode nil) |
1796 |
|
(set-window-dedicated-p (get-buffer-window buffer) nil) |
1797 |
(kill-local-variable 'tool-bar-map) |
(kill-local-variable 'tool-bar-map) |
1798 |
(setq gud-running nil)))))) |
(setq gud-running nil)))))) |
1799 |
(when (markerp gdb-overlay-arrow-position) |
(when (markerp gdb-overlay-arrow-position) |