X-Git-Url: https://git.hcoop.net/clinton/lisp-on-lines.git/blobdiff_plain/6de8d30004efc9337b8c40d2ff2d0a76651d23eb..8032a7fe4b6d2470476115b307c105b93c4100e5:/src/contextl-hacks.lisp diff --git a/src/contextl-hacks.lisp b/src/contextl-hacks.lisp index ee4e38a..5e568fa 100644 --- a/src/contextl-hacks.lisp +++ b/src/contextl-hacks.lisp @@ -1,6 +1,33 @@ (in-package :contextl) -;;; HACK: We are ending up with classes named NIL in the superclass list. + +(defmethod contextl:layer-name :around (layer) + (or (call-next-method) layer)) + +;;; HACK: +;;; Since i'm not using deflayer, ensure-layer etc, +;;; There are a few places where contextl gets confused +;;; trying to locate my description layers. + +;;; TODO: investigate switching to deflayer! + +(defun contextl::prepare-layer (layer) + (if (symbolp layer) + (if (eq (symbol-package layer) + (find-package :description-definers)) + layer + (contextl::defining-layer layer)) + + layer)) + +(defmethod find-layer-class :around ((layer symbol) &optional errorp environment) + (if (eq (symbol-package layer) + (find-package :description-definers)) + (find-class layer) + (call-next-method))) + + +;;; HACK: There are classes named NIL (partial classes) in the superclass list. ;;; These cannot be given the special object superclass when re-initializing ;;; is it will be in the subclasses superclasses AFTER this class, causing ;;; a confict.