Subject: bug#50034: 28.0.50; elisp capf error "Wrong type argument: listp, elisp--witness--lisp"

From: Lars Ingebrigtsen <[email-masked]>
Date: Mon, 22 Aug 2022 15:15:41 +0200

Lars Ingebrigtsen <[email-masked]> writes:

>> 1. Start "emacs -Q"
>> 2. Enter "(defmacro foo bar" in the scratch buffer
>> 3. Press M-<tab> to invoke 'completion-at-point'
>>
>> The capf will throw the error "Wrong type argument: listp,
>> elisp--witness--lisp". This error will be shown on Emacs 27 and Emacs 28.
>
> Slightly simpler repro:
>
> (defmacro foo bar
> M-: (elisp--local-variables) RET
>
> It fails here:
>
>                     (`(lambda ,args . ,body)
>                      (elisp--local-variables-1
>                       (append (remq '&optional (remq '&rest args)) vars)
>                       (car (last body))))
>
> where it expects args to be a list, but it's the symbol
> `elisp--witness--lisp'.  I'm not quite sure what the correct fix is
> here, so I've added Stefan to the CCs.  :-)

One year later, this problem is still present in Emacs 29.  Stefan, do
you have any idea what the fix here should be?