Function: hargs:make-iform-vector

hargs:make-iform-vector is a macro defined in hargs.el.

Signature

(hargs:make-iform-vector &rest IFORM-ALIST)

Documentation

Return a vector of interactive command code characters.

IFORM-ALIST is a list of elements of the form
    (INTERACTIVE-CMD-CHR (ARGUMENT-TYPE . GET-ARGUMENT-FORM))
GET-ARGUMENT-FORM is executed in a context where it has access to two variables prompt and default.

Source Code

;; Defined in ~/.emacs.d/elpa/hyperbole-20260414.325/hargs.el
(defmacro hargs:make-iform-vector (&rest iform-alist)
  "Return a vector of interactive command code characters.
IFORM-ALIST is a list of elements of the form
    (INTERACTIVE-CMD-CHR  (ARGUMENT-TYPE . GET-ARGUMENT-FORM))
GET-ARGUMENT-FORM is executed in a context where it has access to
two variables `prompt' and `default'."
  ;; Vector needs to have 1 more elts than the highest char code for
  ;; interactive commands.
  (let ((size (1+ (car (sort (mapcar #'car iform-alist) #'>))))
        (vecsym (make-symbol "vec")))
    `(let ((,vecsym (make-vector ',size nil)))
       ,@(mapcar (lambda (elt)
		   `(aset ,vecsym ',(car elt)
                          (lambda (prompt default)
                            (ignore prompt default) ;; Don't warn if not used.
			    (let ((prev-reading-p hargs:reading-type))
			      (unwind-protect
				  (progn
				    ;; Use setq here to ensure change is
				    ;; visible in lexical subcontexts that are
				    ;; part of 'elt' body.
				    (setq hargs:reading-type ',(cadr elt))
				    ,(cddr elt))
				(setq hargs:reading-type prev-reading-p))))))
		 iform-alist)
       ,vecsym)))