Subject: Re: bug#13609: 24.2.92; completion-list-insert-choice-function
From: "Roland Winkler" <[email-masked]>
To: Stefan Monnier <[email-masked]>
Cc: [email-masked]
Date: Sun, 3 Feb 2013 09:46:49 -0600
List-Id: <debbugs-submit.debbugs.gnu.org>

On Sun Feb 3 2013 Stefan Monnier wrote:
> > So I suggest to rename completion--replace to completion-replace
> > to make it clear that other code may use this function.
> 
> No, because some other package may already have changed
> completion-list-insert-choice-function, so you should really read the
> current value of completion-list-insert-choice-function, and then call
> that (via `funcall') rather than hard-coding completion--replace.

Thank you, that makes sense, it solves my problem.

Possibly, such a strategy could even be mentioned in the docstring of
completion-list-insert-choice-function.  How about adding the
following sentences?

  If you want to bind this variable to a function calling the default
  value of this variable as part of its job, do not hard-code this value
  in your code as it may change in future versions of Emacs.
  Instead, read the current value of completion-list-insert-choice-function,
  then call that via `funcall'.

Of course, this is a generic issue with any foo-function variables
that come with a default.  Merely, I do not know where to put such
a more generic remark into the elisp manual so that you find it
when you need it.

> > (Or solve this problem in some other way that other code may rely upon.)
> 
> As a matter of fact there's a new feature in trunk that does just that:
> `add-function'.

Great, though I'll keep this for future versions of BBDB.  Right now
I want to keep BBDB 3 compatible with GNU Emacs 23 and 24.
(Sometimes this is hard when you have to ignore cool new stuff...)

Roland