macro: Do not generate macros with (&optional &rest _) signature

* lisp/org-macro.el (org-macro--makeargs): Fix Emacs-26 burping
because of a bug when functions are declared with 0 optional arguments
like (&optional &rest x).
This commit is contained in:
Stefan Monnier 2021-04-16 18:06:58 -04:00 committed by Nicolas Goaziou
parent f6139e6c54
commit 8e68eac0bd
1 changed files with 5 additions and 4 deletions

View File

@ -91,10 +91,11 @@ directly, use instead:
(setq i (match-end 0))
(setq max (max max (string-to-number (match-string 1 template)))))
(let ((args '(&rest _)))
(while (> max 0)
(push (intern (format "$%d" max)) args)
(setq max (1- max)))
(cons '&optional args))))
(if (< max 1) args ;Avoid `&optional &rest', refused by Emacs-26!
(while (> max 0)
(push (intern (format "$%d" max)) args)
(setq max (1- max)))
(cons '&optional args)))))
(defun org-macro--set-templates (templates)
"Set template for the macro NAME.