Function: majutsu-template-defspecial

majutsu-template-defspecial is a macro defined in majutsu-template.el.

Signature

(majutsu-template-defspecial NAME ARGS &rest BODY)

Documentation

Define syntax special NAME taking raw ARGS and expanding via BODY.

BODY should return a lowered form or a final template node.

Source Code

;; Defined in /nix/store/jagqw3nms546pad0gxi5f3wsckk6pji7-emacs-packages-deps/share/emacs/site-lisp/majutsu-template.el
(defmacro majutsu-template-defspecial (name args &rest body)
  "Define syntax special NAME taking raw ARGS and expanding via BODY.
BODY should return a lowered form or a final template node."
  (declare (indent defun))
  (unless (symbolp name)
    (user-error "majutsu-template-defspecial: NAME must be a symbol, got %S" name))
  (let* ((base (if (keywordp name)
                   (substring (symbol-name name) 1)
                 (symbol-name name)))
         (fn-symbol (intern (format "majutsu-template--special-%s" base))))
    `(progn
       (defun ,fn-symbol ,args
         ,(format "Syntax special expander for %s." name)
         ,@body)
       (eval-and-compile
         (majutsu-template-define-special ',name #',fn-symbol)))))