forked from McCLIM/McCLIM
-
Notifications
You must be signed in to change notification settings - Fork 0
/
patch.lisp
28 lines (23 loc) · 961 Bytes
/
patch.lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
(in-package :cl-user)
(defpackage clim-lisp-patch
(:use)
(:export #:defconstant
#:defclass
#:describe
#:describe-object
#:interactive-stream-p))
;;; Not a DEFCONSTANT that we want, but a DEFCONSTANT that we need.
;;;
;;; FIXME what we really want is "our own" macro that defines also a load form
;;; and such.
(defmacro clim-lisp-patch:defconstant (symbol value &optional docu (test '(constantly t)))
`(alexandria:define-constant ,symbol ,value :test ,test
,@(and docu (list :documentation docu))))
(defvar clim-lisp-patch::*compile-time-clos-names* (make-hash-table))
(defun clim-lisp-patch::compile-time-clos-class-p (name)
(gethash name clim-lisp-patch::*compile-time-clos-names* nil))
(defmacro clim-lisp-patch:defclass (name &rest args)
`(progn
(eval-when (:compile-toplevel)
(setf (gethash ',name clim-lisp-patch::*compile-time-clos-names*) t))
(cl:defclass ,name ,@args)))