aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorNick Roberts <[email protected]>2003-01-20 22:03:50 +0000
committerNick Roberts <[email protected]>2003-01-20 22:03:50 +0000
commit7461cbeb210de27bb62f1bbccdbad963fa9613a4 (patch)
treed726d1b09992813296aeb49f73da8f22168ab255 /lisp
parentddef3b66d398eb94ba0134e7ad9537d02f953cd5 (diff)
(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.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/gud.el19
1 files changed, 15 insertions, 4 deletions
diff --git a/lisp/gud.el b/lisp/gud.el
index 08b0ee92f3..862ecd3e38 100644
--- a/lisp/gud.el
+++ b/lisp/gud.el
@@ -71,6 +71,8 @@ Supported debuggers include gdb, sdb, dbx, xdb, perldb, pdb (Python), jdb, and b
(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 @@ Uses `gud-<MINOR-MODE>-directories' to find the source files."
;; 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 @@ Obeying it means displaying in another window the specified file and line."
(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