Handle xscheme-control-g-disabled-p correctly from non-interaction
authorGuillermo J. Rozas <edu/mit/csail/zurich/gjr>
Fri, 29 Jan 1993 12:54:51 +0000 (12:54 +0000)
committerGuillermo J. Rozas <edu/mit/csail/zurich/gjr>
Fri, 29 Jan 1993 12:54:51 +0000 (12:54 +0000)
buffers.

etc/xscheme.el

index 83c1feeffd479f992733fafabce118e9c54e972c..04e3ba45867b4a0b633441b9389836a2378659b7 100644 (file)
@@ -20,7 +20,7 @@
 ;;; Requires C-Scheme release 5 or later
 ;;; Changes to Control-G handler require runtime version 13.85 or later
 
-;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/etc/xscheme.el,v 1.29 1991/08/29 01:46:35 jinx Exp $
+;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/etc/xscheme.el,v 1.30 1993/01/29 12:54:51 gjr Exp $
 
 (require 'scheme)
 \f
@@ -628,17 +628,25 @@ Useful for working with debugging Scheme under adb."
   (interactive)
   (send-string xscheme-process-name "(proceed)\n"))
 
+(defun buffer-local-value-cell (buffer name)
+  (let ((pair (assq name (buffer-local-variables (get-buffer buffer)))))
+    (if (not pair)
+       (error "buffer-local-value-cell: Not bound")
+      pair)))
+
 (defun xscheme-send-control-g-interrupt ()
   "Cause the Scheme processor to halt and flush input.
 Control returns to the top level rep loop."
   (interactive)
-  (let ((inhibit-quit t))
+  (let* ((inhibit-quit t)
+        (vcell (buffer-local-value-cell xscheme-buffer-name
+                                        'xscheme-control-g-disabled-p)))
     (cond ((not xscheme-control-g-synchronization-p)
           (interrupt-process xscheme-process-name))
-         (xscheme-control-g-disabled-p
+         ((cdr vcell)
           (message "Relax..."))
          (t
-          (setq xscheme-control-g-disabled-p t)
+          (rplacd vcell t)
           (message "Sending C-G interrupt to Scheme...")
           (interrupt-process xscheme-process-name)
           (send-string xscheme-process-name (char-to-string 0))))))