emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Should `indirect-function' be preferred over `fboundp'?


From: Michael Heerdegen
Subject: Re: Should `indirect-function' be preferred over `fboundp'?
Date: Sat, 22 Jul 2023 04:49:25 +0200
User-agent: Gnus/5.13 (Gnus v5.13)

Ihor Radchenko <yantar92@posteo.net> writes:

> Another possible scenarios is `define-obsolete-function-alias' when the
> function is not loaded for some reason (like when it is defined in a
> different file). We have plenty of these in org-compat.el.

> Finally, user aliases defined in the user config, where accidentally not
> loading some package is not unseen (especially with `use-package' and
> friends that make it more forgiving to not have some packages
> installed).

These examples still sound like mistakes to me.  One can either ensure
the library is loaded, or autoload the aliased function, or define the
alias only after the defining package is loaded (e.g. by using
`with-eval-after-load').

> I think that part of the problem _for me_ is that
>
> (defalias 'yant/foo 'yant/bar)
> (fboundp 'yant/foo) ; => t
> (funcall 'yant/foo) ; => ERROR: Symbol function definition is void: yant/foo
>
> only shows an error for `yant/foo', which is somewhat confusing.
> `yant/bar' is where function definition is truly void.

I see and understand.  The error message can be misleading in this case.

When something like this happens, I suggest to start investigating using
`symbol-function' instead of `fboundp'.

It's probably also preferable to function quote the existing function name
when possible, like in

  (defalias 'yant/foo #'yant/bar)


Michael.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]