Function: elisp-scope-define-special-form-analyzer

elisp-scope-define-special-form-analyzer is a macro defined in elisp-scope.el.gz.

Signature

(elisp-scope-define-special-form-analyzer FSYM ARGS &rest BODY)

Documentation

Define an analyzer function for special form FSYM.

FSYM is a symbol, or a list of symbols that all share the same analyzer. The analyzer function analyzes occurrences of FSYM as a special form, and it analyzes the arguments in calls to FSYM by executing BODY with ARGS bound to the analyzed arguments.

Source Code

;; Defined in /usr/src/emacs/lisp/emacs-lisp/elisp-scope.el.gz
(defmacro elisp-scope-define-special-form-analyzer (fsym args &rest body)
  "Define an analyzer function for special form FSYM.
FSYM is a symbol, or a list of symbols that all share the same analyzer.
The analyzer function analyzes occurrences of FSYM as a special form,
and it analyzes the arguments in calls to FSYM by executing BODY with
ARGS bound to the analyzed arguments."
  (declare (indent defun))
  (let ((helper (intern (concat "elisp-scope--analyze-"
                                (symbol-name (car (ensure-list fsym)))
                                "-1"))))
    `(progn
       (defun ,helper ,args ,@body)
       (elisp-scope-define-analyzer ,fsym (f &rest args)
         (elisp-scope-report-s f 'special-form)
         (apply #',helper args)))))