Subject: bug#19324: closed (Re: bug#19324: 25.0.50; add-function and nil)

From: [email-masked] (GNU bug Tracking System)
Date: Fri, 12 Dec 2014 00:45:03 +0000

Your bug report

#19324: 25.0.50; add-function and nil

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
19324: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=19324
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#19324: 25.0.50; add-function and nil
From: Leo Liu <[email-masked]>
To: Stefan Monnier <[email-masked]>
Cc: [email-masked]
Date: Fri, 12 Dec 2014 08:44:11 +0800
List-Id: <debbugs-submit.debbugs.gnu.org>

On 2014-12-11 14:11 -0500, Stefan Monnier wrote:
> No I don't have a fix for this.
> `add-function' is designed to work on places that only hold functions,
> so any other value (such as nil) will create problems.
>
> IOW a variable that can hold "either nil or a function" is not something
> that add-function supports.
>
> I guess we could treat nil as an alias for `ignore' in the "proxy
> function", which would fix this particular issue.  See patch below.
> But I don't intend to handle all the cases in which a "nil function" can
> show up.  Many/most uses of `foo-function' actually give a special
> meaning to nil which is different from `ignore'.
> So I'm not sure we should cater to this particular case.

Thanks, Stefan, for the explanation. In that case maybe the workaround
isn't needed because we still cannot tell if ORIG is missing. I consider
the bug closed.

Leo

Subject: 25.0.50; add-function and nil
From: Leo Liu <[email-masked]>
To: [email-masked]
Date: Tue, 09 Dec 2014 12:55:22 +0800
List-Id: <debbugs-submit.debbugs.gnu.org>

1. Goto a buffer (e.g. text-mode) with eldoc-documentation-function nil
2. (add-function :after-until (local 'eldoc-documentation-function) #'ignore)
3. Move around to trigger eldoc error: (void-function nil)

Looks like the orig function is unconditionally called without checking
it's a function object.

Leo