From b676393dfc2306e3a5c85b6884b1e273d77f02b3 Mon Sep 17 00:00:00 2001 From: "Guillermo J. Rozas" Date: Fri, 29 Jan 1993 12:54:51 +0000 Subject: [PATCH] Handle xscheme-control-g-disabled-p correctly from non-interaction buffers. --- etc/xscheme.el | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/etc/xscheme.el b/etc/xscheme.el index 83c1feeff..04e3ba458 100644 --- a/etc/xscheme.el +++ b/etc/xscheme.el @@ -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) @@ -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)))))) -- 2.25.1