The macro
def
informs the system that any definitions within
body
should be recorded as being within the dspec
dspec
. This means that when something attempts to locate such a definition, it should look for a definition named
dspec
.
Use
def
to wrap a group of definitions so that source location for one of the group causes the LispWorks Editor to look for the dspec in the
def
instead. Typically you will also need a define-form-parser definition for the macro that expands into the
def
.
You can also use
def
to provide a dspec for a definition that has its own class that has been defined with define-dspec-class. In this case, you arrange to call record-definition with the same dspec as in the example below.
It is also possible to mix these cases, recording a dspec and also grouping inner definitions. For example
defstruct
does this, recording itself and also grouping definitions such as the constructor function.
In all cases, to make source location work in the LispWorks editor you typically also need a define-form-parser definition for the macro that expands into the
def
.
(defmacro define-wibble (x y)
`(dspec:def (define-wibble ,x)
(set-wibble-definition ',x ',y (dspec:location))))
(defun set-wibble-definition (x y loc)
(when (record-definition `(define-wibble ,x) loc)
;; defining code here
))