GNU bug report logs -
#23648
[PATCH] `defun-declarations-alist' can be unintentionally modified
Previous Next
Reported by: Paul Pogonyshev <pogonyshev <at> gmail.com>
Date: Sun, 29 May 2016 14:12:02 UTC
Severity: normal
Tags: fixed, patch
Fixed in version 25.1
Done: npostavs <at> users.sourceforge.net
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
Eli Zaretskii <eliz <at> gnu.org> writes:
>> From: Michael Heerdegen <michael_heerdegen <at> web.de>
>> Cc: Noam Postavsky <npostavs <at> users.sourceforge.net>, 23648 <at> debbugs.gnu.org, pogonyshev <at> gmail.com
>> Date: Mon, 18 Jul 2016 23:28:55 +0200
>>
>> Eli Zaretskii <eliz <at> gnu.org> writes:
>>
>> > Sorry, I guess I'm too stupid to understand this advanced stuff. Or
>> > maybe it's too late.
>>
>> I think the example uses macroexpand only to demonstrate what (obviously
>> ill) code you will get when you compile the mentioned form after
>> performing the completion as mentioned.
>
> Thanks, but I'm still none the wiser about the questions I asked.
Hmm, maybe it will be clearer like this:
Evaluate:
(macroexpand '(defun foo ()
(declare (indent 1))
nil)) ;=> (prog1 (defalias (quote foo) (function (lambda nil nil))) (function-put (quote foo) (quote lisp-indent-function) (quote 1)))
This gives the correct result (the (function-put...) part comes from the
(declare (indent 1))).
Now perform a completion on a declare clause, e.g., put cursor after
"ind" and hit C-M-i: (declare (ind)) completes to (declare (indent)).
Now evaluate the same expression as before:
(macroexpand '(defun foo ()
(declare (indent 1))
nil)) ;=> (prog1 (defalias (quote foo) (function (lambda nil nil))) "Warning: Unknown defun property ‘indent’ in foo")
This give the wrong result, the (declare (indent 1)) is giving the
"Warning:...". Emacs has unlearned the indent declaration. In fact it
unlearned all the declarations for defun except for gv-setter, you can
see this by looking at defun-declarations-alist's value.
This bug report was last modified 8 years and 306 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.