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

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

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

revision 1.35 by nickrob, Sun Jun 8 01:20:51 2003 UTC revision 1.36 by nickrob, Wed Jun 18 22:37:40 2003 UTC
# Line 41  Line 41 
41  ;; developing the mode itself, then see the Annotations section in the GDB  ;; developing the mode itself, then see the Annotations section in the GDB
42  ;; info manual.  ;; info manual.
43  ;;  ;;
44  ;;  Known Bugs:  ;; Known Bugs:
45  ;;  Does not auto-display arrays of structures or structures containing arrays.  ;; Does not auto-display arrays of structures or structures containing arrays.
46  ;;  On MS Windows, Gdb 5.1.1 from MinGW 2.0 does not flush the output from the  ;; On MS Windows, Gdb 5.1.1 from MinGW 2.0 does not flush the output from the
47  ;;  inferior.  ;; inferior.
48    
49  ;;; Code:  ;;; Code:
50    
# Line 60  Line 60 
60    :type 'integer    :type 'integer
61    :group 'gud)    :group 'gud)
62    
63  (defvar gdb-current-address nil "Initialisation for Assembler buffer.")  (defvar gdb-current-address "main" "Initialisation for Assembler buffer.")
64  (defvar gdb-previous-address nil)  (defvar gdb-previous-address nil)
65  (defvar gdb-previous-frame nil)  (defvar gdb-previous-frame nil)
66    (defvar gdb-current-frame "main")
67  (defvar gdb-display-in-progress nil)  (defvar gdb-display-in-progress nil)
68  (defvar gdb-dive nil)  (defvar gdb-dive nil)
69  (defvar gdb-view-source t "Non-nil means that source code can be viewed")  (defvar gdb-view-source t "Non-nil means that source code can be viewed")
# Line 162  The following interactive lisp functions Line 163  The following interactive lisp functions
163    (setq gdb-current-address "main")    (setq gdb-current-address "main")
164    (setq gdb-previous-address nil)    (setq gdb-previous-address nil)
165    (setq gdb-previous-frame nil)    (setq gdb-previous-frame nil)
166      (setq gdb-current-frame "main")
167    (setq gdb-display-in-progress nil)    (setq gdb-display-in-progress nil)
168    (setq gdb-dive nil)    (setq gdb-dive nil)
169    (setq gdb-view-source t)    (setq gdb-view-source t)
# Line 176  The following interactive lisp functions Line 178  The following interactive lisp functions
178        (gdb-enqueue-input (list "set new-console off\n" 'ignore)))        (gdb-enqueue-input (list "set new-console off\n" 'ignore)))
179    (gdb-enqueue-input (list "set height 0\n" 'ignore))    (gdb-enqueue-input (list "set height 0\n" 'ignore))
180    ;; find source file and compilation directory here    ;; find source file and compilation directory here
181    (gdb-enqueue-input (list "server list\n" 'ignore))          ; C program    (gdb-enqueue-input (list "server list main\n" 'ignore))     ; C program
182    (gdb-enqueue-input (list "server list MAIN__\n" 'ignore))   ; Fortran program    (gdb-enqueue-input (list "server list MAIN__\n" 'ignore))   ; Fortran program
183    (gdb-enqueue-input (list "server info source\n"    (gdb-enqueue-input (list "server info source\n"
184                             'gdb-source-info))                             'gdb-source-info))
# Line 201  The following interactive lisp functions Line 203  The following interactive lisp functions
203      (goto-char (- (point-max) 1))      (goto-char (- (point-max) 1))
204      (if (equal (char-before) (string-to-char "\*"))      (if (equal (char-before) (string-to-char "\*"))
205          (gdb-enqueue-input          (gdb-enqueue-input
206           (list (concat "server display* " expr "\n") 'ignore))           (list (concat "display* " expr "\n") 'ignore))
207        (gdb-enqueue-input        (gdb-enqueue-input
208         (list (concat "server display " expr "\n") 'ignore)))))         (list (concat "display " expr "\n") 'ignore)))))
209    
210  ; this would messy because these bindings don't work with M-x gdb  ; this would messy because these bindings don't work with M-x gdb
211  ; (define-key global-map "\C-x\C-a\C-a" 'gud-display)  ; (define-key global-map "\C-x\C-a\C-a" 'gud-display)
# Line 744  output from the current command if that Line 746  output from the current command if that
746    (set-buffer (gdb-get-buffer 'gdb-partial-output-buffer))    (set-buffer (gdb-get-buffer 'gdb-partial-output-buffer))
747    (setq gdb-dive nil))    (setq gdb-dive nil))
748    
 (defvar gdb-current-frame nil)  
749  (defvar gdb-nesting-level)  (defvar gdb-nesting-level)
750  (defvar gdb-expression)  (defvar gdb-expression)
751  (defvar gdb-point)  (defvar gdb-point)
# Line 2049  the source buffer." Line 2050  the source buffer."
2050    (gdb-display-buffer    (gdb-display-buffer
2051     (gdb-get-create-buffer 'gdba)))     (gdb-get-create-buffer 'gdba)))
2052    
2053    (defvar gdb-main-file nil "Source file from which program execution begins.")
2054    
2055  (defun gdb-view-source()  (defun gdb-view-source()
2056  (interactive)    (interactive)
2057  (if gdb-view-source    (if gdb-view-source
2058    (if gud-last-last-frame        (if gud-last-last-frame
2059        (set-window-buffer gdb-source-window            (set-window-buffer gdb-source-window
2060                           (gud-find-file (car gud-last-last-frame)))                               (gud-find-file (car gud-last-last-frame)))
2061      (set-window-buffer gdb-source-window (gud-find-file gdb-main-file))))          (set-window-buffer gdb-source-window (gud-find-file gdb-main-file))))
2062  (setq gdb-selected-view 'source))    (setq gdb-selected-view 'source))
2063    
2064  (defun gdb-view-assembler()  (defun gdb-view-assembler()
2065  (interactive)    (interactive)
2066  (set-window-buffer gdb-source-window    (set-window-buffer gdb-source-window
2067                     (gdb-get-create-buffer 'gdb-assembler-buffer))                       (gdb-get-create-buffer 'gdb-assembler-buffer))
2068  (setq gdb-selected-view 'assembler))    (setq gdb-selected-view 'assembler))
2069    
2070  ;(defun gdb-view-both()  ;(defun gdb-view-both()
2071  ;(interactive)  ;(interactive)
2072  ;(setq gdb-selected-view 'both))  ;(setq gdb-selected-view 'both))
2073    
 (defvar gdb-main-file nil "Source file from which program execution begins.")  
   
2074  ;; layout for all the windows  ;; layout for all the windows
2075  (defun gdb-setup-windows ()  (defun gdb-setup-windows ()
2076    (gdb-display-locals-buffer)    (gdb-display-locals-buffer)
# Line 2135  This arrangement depends on the value of Line 2136  This arrangement depends on the value of
2136               (gud-find-file (car gud-last-last-frame))               (gud-find-file (car gud-last-last-frame))
2137             (gud-find-file gdb-main-file)))             (gud-find-file gdb-main-file)))
2138        (switch-to-buffer (gdb-get-create-buffer 'gdb-assembler-buffer)))        (switch-to-buffer (gdb-get-create-buffer 'gdb-assembler-buffer)))
2139        (setq gdb-source-window (get-buffer-window (current-buffer)))
2140      (other-window 1)))      (other-window 1)))
2141    
2142  (defun gdb-reset ()  (defun gdb-reset ()
# Line 2164  This arrangement depends on the value of Line 2166  This arrangement depends on the value of
2166    "Find the source file where the program starts and displays it with related    "Find the source file where the program starts and displays it with related
2167  buffers."  buffers."
2168    (goto-char (point-min))    (goto-char (point-min))
2169    (when (search-forward "directory is " nil t)    (if (search-forward "directory is " nil t)
2170      (if (looking-at "\\S-*:\\(\\S-*\\)")        (progn
2171          (setq gdb-cdir (match-string 1))          (if (looking-at "\\S-*:\\(\\S-*\\)")
2172        (looking-at "\\S-*")              (setq gdb-cdir (match-string 1))
2173        (setq gdb-cdir (match-string 0)))            (looking-at "\\S-*")
2174      (search-forward "Located in ")            (setq gdb-cdir (match-string 0)))
2175      (looking-at "\\S-*")          (search-forward "Located in ")
2176      (setq gdb-main-file (match-string 0))          (looking-at "\\S-*")
2177      ;; Make sure we are not in the minibuffer window when we try to delete          (setq gdb-main-file (match-string 0)))
2178      ;; all other windows.      (setq gdb-view-source nil))
2179      (if (window-minibuffer-p (selected-window))    (delete-other-windows)
2180          (other-window 1))    (if gdb-many-windows
2181          (gdb-setup-windows)
2182        (gdb-display-breakpoints-buffer)
2183        (gdb-display-display-buffer)
2184      (delete-other-windows)      (delete-other-windows)
2185      (if gdb-many-windows      (split-window)
2186          (gdb-setup-windows)      (other-window 1)
2187        (gdb-display-breakpoints-buffer)      (if gdb-view-source
2188        (gdb-display-display-buffer)          (switch-to-buffer (gud-find-file gdb-main-file))
2189        (delete-other-windows)        (switch-to-buffer (gdb-get-create-buffer 'gdb-assembler-buffer))
2190        (split-window)        (gdb-invalidate-assembler))
2191        (other-window 1)      (setq gdb-source-window (get-buffer-window (current-buffer)))
2192        (switch-to-buffer (gud-find-file gdb-main-file))      (other-window 1)))
       (setq gdb-source-window (get-buffer-window (current-buffer)))  
       (other-window 1))))  
2193    
2194  ;;from put-image  ;;from put-image
2195  (defun gdb-put-string (putstring pos)  (defun gdb-put-string (putstring pos)
# Line 2294  BUFFER nil or omitted means use the curr Line 2297  BUFFER nil or omitted means use the curr
2297    
2298  (defun gdb-assembler-custom ()  (defun gdb-assembler-custom ()
2299    (let ((buffer (gdb-get-buffer 'gdb-assembler-buffer))    (let ((buffer (gdb-get-buffer 'gdb-assembler-buffer))
2300          (address) (flag))          (gdb-arrow-position 1) (address) (flag))
2301      (with-current-buffer buffer      (with-current-buffer buffer
2302        (if (not (equal gdb-current-address "main"))        (if (not (equal gdb-current-address "main"))
2303            (progn            (progn
2304              (gdb-remove-arrow)              (gdb-remove-arrow)
2305              (goto-char (point-min))              (goto-char (point-min))
2306              (if (re-search-forward gdb-current-address nil t)              (if (re-search-forward gdb-current-address nil t)
2307                  (gdb-put-arrow "=>" (point)))))                  (progn
2308                      (setq gdb-arrow-position (point))
2309                      (gdb-put-arrow "=>" (point))))))
2310        ;; remove all breakpoint-icons in assembler buffer before updating.        ;; remove all breakpoint-icons in assembler buffer before updating.
2311        (if (eq window-system 'x)        (if (eq window-system 'x)
2312            (remove-images (point-min) (point-max))            (remove-images (point-min) (point-max))
# Line 2339  BUFFER nil or omitted means use the curr Line 2344  BUFFER nil or omitted means use the curr
2344                            (gdb-remove-strings start end)                            (gdb-remove-strings start end)
2345                            (if (eq ?y flag)                            (if (eq ?y flag)
2346                                (gdb-put-string "B" (+ start 1))                                (gdb-put-string "B" (+ start 1))
2347                              (gdb-put-string "b" (+ start 1)))))))))))))                              (gdb-put-string "b" (+ start 1)))))))))))
2348        (if (not (equal gdb-current-address "main"))
2349            (set-window-point (get-buffer-window buffer) gdb-arrow-position))))
2350    
2351  (defvar gdb-assembler-mode-map  (defvar gdb-assembler-mode-map
2352    (let ((map (make-sparse-keymap)))    (let ((map (make-sparse-keymap)))

Legend:
Removed from v.1.35  
changed lines
  Added in v.1.36

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