Browse Source

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).
Stefan Monnier 3 years ago
parent
commit
8e68eac0bd
1 changed files with 5 additions and 4 deletions
  1. 5 4
      lisp/org-macro.el

+ 5 - 4
lisp/org-macro.el

@@ -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.