changeset 48570:4934b8352621

(gdb-starting): Set gdb-running to t. (gdb-stopped): Set gdb-running to nil. (gdb-quit): Reset some variables including tool-bar-map.
author Nick Roberts <nickrob@snap.net.nz>
date Thu, 28 Nov 2002 21:24:19 +0000
parents 2fcfc7530344
children 0513d8116258
files lisp/gdb-ui.el
diffstat 1 files changed, 37 insertions(+), 44 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/gdb-ui.el	Thu Nov 28 21:23:11 2002 +0000
+++ b/lisp/gdb-ui.el	Thu Nov 28 21:24:19 2002 +0000
@@ -130,6 +130,7 @@
   (setq gdb-display-in-progress nil)
   (setq gdb-dive nil)
   (setq gud-last-last-frame nil)
+  (setq gdb-running nil)
 
   (run-hooks 'gdb-mode-hook)
   (setq gdb-proc (get-buffer-process (current-buffer)))
@@ -679,7 +680,7 @@
 (defconst gdb-source-spec-regexp
   "\\(.*\\):\\([0-9]*\\):[0-9]*:[a-z]*:\\(0x[a-f0-9]*\\)")
 
-;; Do not use this except as an annotation handler."
+;; Do not use this except as an annotation handler.
 (defun gdb-source (args)
   (string-match gdb-source-spec-regexp args)
   ;; Extract the frame position from the marker.
@@ -695,9 +696,9 @@
 ;update with new frame for machine code if necessary
   (gdb-invalidate-assembler))
 
-;; An annotation handler for `prompt'.
-;; This sends the next command (if any) to gdb.
 (defun gdb-prompt (ignored)
+  "An annotation handler for `prompt'. 
+This sends the next command (if any) to gdb."
   (let ((sink (gdb-instance-output-sink)))
     (cond
      ((eq sink 'user) t)
@@ -716,8 +717,8 @@
 	    (set-gdb-instance-prompting t)
 	    (gud-display-frame)))))))
 
-;; An annotation handler for non-top-level prompts.
 (defun gdb-subprompt (ignored)
+  "An annotation handler for non-top-level prompts."
   (let ((highest (gdb-instance-dequeue-input)))
     (if highest
 	(gdb-send-item highest)
@@ -734,10 +735,9 @@
       (set-gdb-instance-output-sink 'pre-emacs)
       (process-send-string gdb-proc (car item)))))
 
-;; An annotation handler for `pre-prompt'.
-;; This terminates the collection of output from a previous
-;; command if that happens to be in effect.
 (defun gdb-pre-prompt (ignored)
+  "An annotation handler for `pre-prompt'. This terminates the collection of
+output from a previous command if that happens to be in effect."
   (let ((sink (gdb-instance-output-sink)))
     (cond
      ((eq sink 'user) t)
@@ -753,28 +753,30 @@
       (set-gdb-instance-output-sink 'user)
       (error "Output sink phase error 1")))))
 
-;; An annotation handler for `starting'.  This says that I/O for the subprocess
-;; is now the program being debugged, not GDB.
 (defun gdb-starting (ignored)
+  "An annotation handler for `starting'.  This says that I/O for the
+subprocess is now the program being debugged, not GDB."
   (let ((sink (gdb-instance-output-sink)))
     (cond
      ((eq sink 'user)
-      (set-gdb-instance-output-sink 'inferior))
+      (progn
+	(setq gdb-running t)
+	(set-gdb-instance-output-sink 'inferior)))
      (t (error "Unexpected `starting' annotation")))))
 
-;; An annotation handler for `exited' and other annotations which say that
-;; I/O for the subprocess is now GDB, not the program being debugged.
 (defun gdb-stopping (ignored)
+  "An annotation handler for `exited' and other annotations which say that I/O
+for the subprocess is now GDB, not the program being debugged."
   (let ((sink (gdb-instance-output-sink)))
     (cond
      ((eq sink 'inferior)
       (set-gdb-instance-output-sink 'user))
      (t (error "Unexpected stopping annotation")))))
 
-;; An annotation handler for `stopped'.  It is just like gdb-stopping, except
-;; that if we already set the output sink to 'user in gdb-stopping, that is
-;; fine.
 (defun gdb-stopped (ignored)
+  "An annotation handler for `stopped'.  It is just like gdb-stopping, except
+that if we already set the output sink to 'user in gdb-stopping, that is fine."
+  (setq gdb-running nil)
   (let ((sink (gdb-instance-output-sink)))
     (cond
      ((eq sink 'inferior)
@@ -791,10 +793,9 @@
      ((eq sink 'emacs) t)
      (t (error "Unexpected frame-begin annotation (%S)" sink)))))
 
-;; An annotation handler for `post-prompt'.
-;; This begins the collection of output from the current
-;; command if that happens to be appropriate."
 (defun gdb-post-prompt (ignored)
+  "An annotation handler for `post-prompt'. This begins the collection of
+output from the current command if that happens to be appropriate."
   (if (not (gdb-instance-pending-triggers))
       (progn
 	(gdb-invalidate-registers ignored)
@@ -805,7 +806,6 @@
      ((eq sink 'user) t)
      ((eq sink 'pre-emacs)
       (set-gdb-instance-output-sink 'emacs))
-
      (t
       (set-gdb-instance-output-sink 'user)
       (error "Output sink phase error 3")))))
@@ -813,7 +813,6 @@
 ;; If we get an error whilst evaluating one of the expressions
 ;; we won't get the display-end annotation. Set the sink back to
 ;; user to make sure that the error message is seen
-
 (defun gdb-error-begin (ignored)
   (set-gdb-instance-output-sink 'user))
 
@@ -915,7 +914,6 @@
 				  'gdb-partial-output-buffer)
 				 start end)
 	(insert "\n")))
-
     (goto-char (point-min))
     (re-search-forward "##" nil t)
     (setq gdb-nesting-level 0)
@@ -1175,7 +1173,7 @@
 	       (concat indices-string "\t" gdb-display-value "\n"))))
 	(setq indices-string "")
 	(setq flag t)
-					; 0<= index < depth, start at right : (- depth 1)
+	; 0<= index < depth, start at right : (- depth 1)
 	(setq index (- (- depth 1)
 		       (- (match-end 2) (match-beginning 2))))
 					;don't set for very last brackets
@@ -1220,7 +1218,7 @@
 
 ;; Handle a burst of output from a gdb instance.
 ;; This function is (indirectly) used as a gud-marker-filter.
-;; It must return output (if any) to be insterted in the gdb
+;; It must return output (if any) to be inserted in the gdb
 ;; buffer.
 
 (defun gdb-output-burst (string)
@@ -1228,7 +1226,6 @@
 This function is (indirectly) used as a gud-marker-filter.
 It must return output (if any) to be insterted in the gdb
 buffer."
-
   (save-match-data
     (let (
 	  ;; Recall the left over burst from last time
@@ -1237,7 +1234,6 @@
 	  (output ""))
 
       ;; Process all the complete markers in this chunk.
-
       (while (string-match "\n\032\032\\(.*\\)\n" burst)
 	(let ((annotation (substring burst
 				     (match-beginning 1)
@@ -1247,7 +1243,8 @@
 	  ;; It is either concatenated to OUTPUT or directed
 	  ;; elsewhere.
 	  (setq output
-		(gdb-concat-output output
+		(gdb-concat-output 
+		 output
 		 (substring burst 0 (match-beginning 0))))
 
 	  ;; Take that stuff off the burst.
@@ -1272,7 +1269,6 @@
 	      ;; us to blow up.
 	      ))))
 
-
       ;; Does the remaining text end in a partial line?
       ;; If it does, then keep part of the burst until we get more.
       (if (string-match "\n\\'\\|\n\032\\'\\|\n\032\032.*\\'"
@@ -1337,7 +1333,6 @@
     (delete-region (point-min) (point-max))))
 
 
-
 ;; One trick is to have a command who's output is always available in
 ;; a buffer of it's own, and is always up to date.  We build several
 ;; buffers of this type.
@@ -1354,7 +1349,6 @@
 ;; command.
 ;;
 
-
 ;; The trigger function is suitable for use in the assoc GDB-ANNOTATION-RULES
 ;; It adds an idle input for the command we are tracking.  It should be the
 ;; annotation rule binding of whatever gdb sends to tell us this command
@@ -1363,7 +1357,9 @@
 ;; NAME is the function name.  DEMAND-PREDICATE tests if output is really needed.
 ;; GDB-COMMAND is a string of such.  OUTPUT-HANDLER is the function bound to the
 ;; input in the input queue (see comment about ``gdb communications'' above).
-(defmacro def-gdb-auto-update-trigger (name demand-predicate gdb-command output-handler)
+
+(defmacro def-gdb-auto-update-trigger (name demand-predicate gdb-command
+					    output-handler)
   `(defun ,name (&optional ignored)
      (if (and (,demand-predicate)
 	      (not (member ',name
@@ -1412,7 +1408,6 @@
 ;; These display the output of `info breakpoints'.
 ;;
 
-
 (gdb-set-instance-buffer-rules 'gdb-breakpoints-buffer
 			       'gdb-breakpoints-buffer-name
 			       'gdb-breakpoints-mode)
@@ -1559,6 +1554,7 @@
   (gdb-invalidate-breakpoints))
 
 (defun gdb-toggle-bp-this-line ()
+"Enable/disable the breakpoint on this line."
   (interactive)
   (save-excursion
     (beginning-of-line 1)
@@ -1576,6 +1572,7 @@
 	'(lambda () nil))))))
 
 (defun gdb-delete-bp-this-line ()
+"Delete the breakpoint on this line."
   (interactive)
     (beginning-of-line 1)
     (if (not (looking-at "\\([0-9]+\\).*point\\s-*\\S-*\\s-*\\(.\\)"))
@@ -1592,7 +1589,7 @@
 (defvar gdb-source-window nil)
 
 (defun gdb-goto-bp-this-line ()
-"Display the file at the breakpoint specified."
+"Display the file at the specified breakpoint."
   (interactive)
   (save-excursion
     (beginning-of-line 1)
@@ -1830,21 +1827,10 @@
 			       'gdb-display-mode)
 
 (def-gdb-auto-updated-buffer gdb-display-buffer
-  ;; This defines the auto update rule for buffers of type
   ;; `gdb-display-buffer'.
-  ;;
-  ;; It defines a function to serve as the annotation handler that
-  ;; handles the `foo-invalidated' message.  That function is called:
   gdb-invalidate-display
-
-  ;; To update the buffer, this command is sent to gdb.
   "server info display\n"
-
-  ;; This also defines a function to be the handler for the output
-  ;; from the command above.  That function will copy the output into
-  ;; the appropriately typed buffer.  That function will be called:
   gdb-info-display-handler
-; buffer specific functions
   gdb-info-display-custom)
 
 (defun gdb-info-display-custom ()
@@ -1895,6 +1881,7 @@
    (gdb-get-create-instance-buffer 'gdb-display-buffer)))
 
 (defun gdb-toggle-disp-this-line ()
+"Enable/disable the displayed expression on this line."
   (interactive)
   (save-excursion
     (beginning-of-line 1)
@@ -1912,6 +1899,7 @@
 	'(lambda () nil))))))
 
 (defun gdb-delete-disp-this-line ()
+"Delete the displayed expression on this line."
   (interactive)
   (save-excursion
     (set-buffer
@@ -2205,6 +2193,9 @@
 		  (remove-images (point-min) (point-max))
 		(remove-strings (point-min) (point-max)))
 	      (setq left-margin-width 0)
+	      (setq gud-minor-mode nil)
+	      (kill-local-variable 'tool-bar-map)
+	      (setq gdb-running nil)
 	      (if (get-buffer-window (current-buffer))
 		  (set-window-margins (get-buffer-window
 				       (current-buffer))
@@ -2216,6 +2207,8 @@
   (delete-other-windows))
 
 (defun gdb-source-info ()
+"Finds the source file where the program starts and displays it with related
+buffers."
   (goto-char (point-min))
   (re-search-forward "directory is ")
   (looking-at "\\(\\S-*\\)")
@@ -2488,7 +2481,7 @@
 	     (setq gdb-prev-main-or-pc gdb-main-or-pc))))
 
 (defun gdb-delete-line ()
-"Delete current line."
+  "Delete the current line."
 (interactive)
   (let ((start (progn (beginning-of-line) (point)))
 	(end (progn (end-of-line) (+ (point) 1))))