[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

edit definition



    Date: Fri, 15 Jun 90 11:46 PDT
    From: Len Charest <Charest@ai-sun.jpl.nasa.gov>

    When I define a LISP structure, Zmacs "knows" that the definitions of the accessor functions,
    predicate function, etc. are inside the structure definition. Now I want to define my own macro
    with much of the same functionality:
	    (defmacro deffoo (name)
	      (let ((predicate (intern (format nil "~a-P" name))))
	      `(progn (blah-blah-blah)
		      (defun ,predicate (x)
			(typep x ',name))
		      ',name)))

1;;; Controls how it appears in the echo area when doing m-., for example.
(setf (get 'deffoo 'si:definition-type-name) "Deffoo")

0(defmacro deffoo (name)
  (let ((predicate (intern (format nil "~a-P" name))))
    `(progn (blah-blah-blah)
	    (defun ,predicate (x)
1	      (declare (sys:function-parent ,name deffoo))
0	      (typep x ',name))
	    ',name)))

You might also want to do:

1(setf (get 'deffoo 'zwei:definition-function-spec-type) 'defun)

0if you want these definitions to be essentially considered function
definitions.  (1defmacro0 does this, for example).  If so, replace
the 1deffoo0 above in the declaration with 1defun0.

1sys:function-parent0 is documented.