separated code from package definition

fixed typos (closes #1)
added convenience function to make expanded macro code cleaner (closes #2)
This commit is contained in:
compufox 2019-11-04 15:13:55 -05:00
parent 58358f96c8
commit 16cc952d95
3 changed files with 27 additions and 22 deletions

24
main.lisp Normal file
View File

@ -0,0 +1,24 @@
(in-package :with-user-abort)
(define-condition user-abort (#+sbcl sb-sys:interactive-interrupt
#+ccl ccl:interrupt-signal-condition
#+clisp system::simple-interrupt-condition
#+ecl ext:interactive-interrupt
#+allegro excl:interrupt-signal)
()
(:documentation "condition that inherits from implementation specific interrupt condition"))
(defun user-abort (&optional condition)
(declare (ignore condition))
(signal 'user-abort))
(defmacro with-user-abort (&body body)
"execute BODY, signalling user-abort if the interrupt signal is received"
`(handler-bind ((#+sbcl sb-sys:interactive-interrupt
#+ccl ccl:interrupt-signal-condition
#+clisp system::simple-interrupt-condition
#+ecl ext:interactive-interrupt
#+allegro excl:interrupt-signal
#'user-abort))
,@body))

View File

@ -3,24 +3,3 @@
(:use :cl)
(:export :user-abort
:with-user-abort))
(in-package :with-user-abort)
(define-condition user-abort (#+sbcl sb-sys:interactive-interrupt
#+ccl ccl:interrupt-signal-condition
#+clisp system::simple-interrupt-condition
#+ecl ext:interactive-interrupt
#+allergo excl:interrupt-signal)
())
(defmacro with-user-abort (&body body)
"execute BODY, signalling user-abort if the interrupt signal is recieved"
`(handler-bind ((#+sbcl sb-sys:interactive-interrupt
#+ccl ccl:interrupt-signal-condition
#+clisp system::simple-interrupt-condition
#+ecl ext:interactive-interrupt
#+allergo excl:interrupt-signal
#'(lambda (c)
(declare (ignore c))
(signal 'user-abort))))
,@body))

View File

@ -3,4 +3,6 @@
:author "ava fox"
:license "BSD 3-Clause"
:version "0.1"
:components ((:file "package")))
:serial t
:components ((:file "package")
(:file "main")))