update break-quit for gcl-top-restart - gcl.git - GNU Common Lisp

index : gcl.git
GNU Common Lisp
summary refs log tree commit diff
diff options
context:
space:
mode:
authorCamm Maguire <camm@debian.org>2014年09月13日 13:24:45 -0400
committerCamm Maguire <camm@debian.org>2014年09月13日 13:24:45 -0400
commite3098be7982cfbb0cb161bdc6bdc57d1d628f2e9 (patch)
tree9ff2280f551f25e2fba6088951eca1154458ad56
parent6207d25f369899453b6e090356fb7173435de6fe (diff)
downloadgcl-export-no-interrupts.tar.gz
update break-quit for gcl-top-restartexport-no-interrupts
Diffstat
-rwxr-xr-xgcl/clcs/gcl_clcs_restart.lisp 2
-rwxr-xr-xgcl/clcs/gcl_clcs_top_patches.lisp 9
2 files changed, 8 insertions, 3 deletions
diff --git a/gcl/clcs/gcl_clcs_restart.lisp b/gcl/clcs/gcl_clcs_restart.lisp
index 05e135f6e..49f16e824 100755
--- a/gcl/clcs/gcl_clcs_restart.lisp
+++ b/gcl/clcs/gcl_clcs_restart.lisp
@@ -64,7 +64,7 @@
(defvar *kcl-top-restarts* nil)
(defun make-kcl-top-restart (quit-tag)
- (make-restart :name 'abort
+ (make-restart :name 'gcl-top-restart
:function #'(lambda () (throw (car (list quit-tag)) quit-tag))
:report-function
#'(lambda (stream)
diff --git a/gcl/clcs/gcl_clcs_top_patches.lisp b/gcl/clcs/gcl_clcs_top_patches.lisp
index c5b4e99f4..a08474c6b 100755
--- a/gcl/clcs/gcl_clcs_top_patches.lisp
+++ b/gcl/clcs/gcl_clcs_top_patches.lisp
@@ -124,8 +124,13 @@
(error "Console interrupt -- cannot continue.")))
(defun clcs-break-quit (&optional (level 0))
- (let ((abort (nth level (reverse *abort-restarts*))))
- (when abort (invoke-restart-interactively abort)))
+ (let* ((ar (reverse *abort-restarts*))
+ (tr (find-restart 'conditions::gcl-top-restart))
+ (ar (if tr (cons tr ar) ar))
+ (abort (nth level ar)))
+ (if abort
+ (invoke-restart-interactively abort)
+ (format *debug-io* "No abort restart is active.~%")))
(break-current))
(setq conditions::*debugger-function* 'break-level)
generated by cgit v1.2.3 (git 2.39.1) at 2025年09月01日 18:23:00 +0000

AltStyle によって変換されたページ (->オリジナル) /