/[emacs]/emacs/lisp/progmodes/gdb-ui.el
ViewVC logotype

Diff of /emacs/lisp/progmodes/gdb-ui.el

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.32 by nickrob, Mon Nov 22 20:08:26 2004 UTC revision 1.33 by nickrob, Wed Nov 24 10:31:15 2004 UTC
# Line 249  detailed description of this mode. Line 249  detailed description of this mode.
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
# Line 1584  static char *magick[] = { Line 1586  static char *magick[] = {
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)
# Line 1715  static char *magick[] = { Line 1702  static char *magick[] = {
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)
# Line 1722  static char *magick[] = { Line 1714  static char *magick[] = {
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
# Line 1739  static char *magick[] = { Line 1731  static char *magick[] = {
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
# Line 1781  This arrangement depends on the value of Line 1773  This arrangement depends on the value of
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
# Line 1801  Kills the gdb buffers and resets the sou Line 1793  Kills the gdb buffers and resets the sou
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)

Legend:
Removed from v.1.32  
changed lines
  Added in v.1.33

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26