Link where and eval buffers to debugger browser so that they are
authorChris Hanson <org/chris-hanson/cph>
Thu, 20 Aug 1992 22:21:33 +0000 (22:21 +0000)
committerChris Hanson <org/chris-hanson/cph>
Thu, 20 Aug 1992 22:21:33 +0000 (22:21 +0000)
killed along with the debugger.  Change M-x browser-quit so that if
the browser is associated with another browser or will be selecting
another browser then that browser is selected and its associated
information buffer is also shown.

v7/src/edwin/debug.scm

index dc5659ef95dc310a606970246484ab9fc4c067e0..450e4e1f17bad93cca686d03bea5b0b7acd31f4c 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;;    $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/debug.scm,v 1.2 1992/06/08 16:50:57 aragorn Exp $
+;;;    $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/debug.scm,v 1.3 1992/08/20 22:21:33 cph Exp $
 ;;;
 ;;;    Copyright (c) 1992 Massachusetts Institute of Technology
 ;;;
                    name)))))))
     (if initializer
        (initializer buffer))
-    (add-rename-buffer-hook
-     buffer
-     (letrec
-        ((hook
-          (lambda (buffer name)
-            name
-            (set-browser/buffers! browser
-                                  (delq! buffer (browser/buffers browser)))
-            (remove-rename-buffer-hook buffer hook))))
-       hook))
-    (add-kill-buffer-hook
-     buffer
-     (lambda (buffer)
-       (set-browser/buffers! browser
-                            (delq! buffer (browser/buffers browser)))))
-    (set-browser/buffers! browser (cons buffer (browser/buffers browser)))
+    (add-browser-buffer! browser buffer)
     buffer))
+
+(define (add-browser-buffer! browser buffer)
+  (add-rename-buffer-hook
+   buffer
+   (letrec
+       ((hook
+        (lambda (buffer name)
+          name
+          (set-browser/buffers! browser
+                                (delq! buffer (browser/buffers browser)))
+          (remove-rename-buffer-hook buffer hook))))
+     hook))
+  (add-kill-buffer-hook
+   buffer
+   (lambda (buffer)
+     (set-browser/buffers! browser
+                          (delq! buffer (browser/buffers browser)))))
+  (set-browser/buffers! browser (cons buffer (browser/buffers browser)))
+  (buffer-put! buffer 'ASSOCIATED-WITH-BROWSER browser))
 \f
 ;;;; Browser Commands
 
                             (memq (window-buffer window*) buffers))
                        (window-delete! window*)))
                  (screen-window-list (selected-screen))))
-      (kill-buffer-interactive buffer))))
+      (let ((browser (buffer-get buffer 'ASSOCIATED-WITH-BROWSER)))
+       (kill-buffer-interactive buffer)
+       (if (maybe-select-browser browser)
+           (let ((buffer (current-buffer)))
+             (if (maybe-select-browser (buffer-get buffer 'BROWSER))
+                 (maybe-select-browser
+                  (buffer-get buffer 'ASSOCIATED-WITH-BROWSER)))))))))
+
+(define (maybe-select-browser browser)
+  (if (and (browser? browser)
+          (buffer-alive? (browser/buffer browser)))
+      (begin
+       (select-buffer (browser/buffer browser))
+       ((ref-command browser-select-line))
+       false)
+      true))
 \f
 ;;;; Evaluators
 
        buffer
        (let ((buffer (make-buffer)))
          (1d-table/put! (bline/properties bline) type buffer)
+         (add-browser-buffer! (bline/browser bline) buffer)
          buffer))))
 
 (define (current-selected-line)