changeset 49354:cea1991cf560

(gud-display-line): If the current file is newer than its buffer, offer to reread the file. (gud-keep-buffer): New buffer local variable. Ensures offer to reread file is made just once.
author Nick Roberts <nickrob@snap.net.nz>
date Mon, 20 Jan 2003 22:03:50 +0000
parents 60b12919be0c
children d366046ef164
files lisp/gud.el
diffstat 1 files changed, 15 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/gud.el	Mon Jan 20 22:03:04 2003 +0000
+++ b/lisp/gud.el	Mon Jan 20 22:03:50 2003 +0000
@@ -71,6 +71,8 @@
 (defvar gud-minor-mode nil)
 (put 'gud-minor-mode 'permanent-local t)
 
+(defvar gud-keep-buffer nil)
+
 (defun gud-symbol (sym &optional soft minor-mode)
   "Return the symbol used for SYM in MINOR-MODE.
 MINOR-MODE defaults to `gud-minor-mode.
@@ -188,7 +190,8 @@
       ;; Copy `gud-minor-mode' to the found buffer to turn on the menu.
       (with-current-buffer buf
 	(set (make-local-variable 'gud-minor-mode) minor-mode)
-	(set (make-local-variable 'tool-bar-map) gud-tool-bar-map))
+	(set (make-local-variable 'tool-bar-map) gud-tool-bar-map)
+	(make-local-variable 'gud-keep-buffer))
       buf)))
 
 ;; ======================================================================
@@ -2513,17 +2516,25 @@
 	(progn
 	  (save-excursion
 	    (set-buffer buffer)
+	    (if (not (or (verify-visited-file-modtime buffer) gud-keep-buffer))
+		(progn
+		  (if
+		      (yes-or-no-p 
+		       (format "File %s changed on disk.  Reread from disk? "
+			       (buffer-name)))
+		      (revert-buffer t t)
+		    (setq gud-keep-buffer t))))
 	    (save-restriction
 	      (widen)
 	      (goto-line line)
 	      (setq pos (point))
 	      (setq overlay-arrow-string "=>")
 	      (or overlay-arrow-position
-		  (setq overlay-arrow-position (make-marker)))
+	      (setq overlay-arrow-position (make-marker)))
 	      (set-marker overlay-arrow-position (point) (current-buffer)))
 	    (cond ((or (< pos (point-min)) (> pos (point-max)))
-		   (widen)
-		   (goto-char pos))))
+	    (widen)
+	    (goto-char pos))))
 	  (set-window-point window overlay-arrow-position)))))
 
 ;; The gud-call function must do the right thing whether its invoking