emacs-devel
[Top][All Lists]
Advanced

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

Re: Calling internal-default-process-sentinel from another sentinel?


From: Štěpán Němec
Subject: Re: Calling internal-default-process-sentinel from another sentinel?
Date: Wed, 18 Nov 2020 15:37:48 +0100
User-agent: Notmuch/0.31 (https://notmuchmail.org) Emacs/28.0.50 (x86_64-pc-linux-gnu)

On Wed, 18 Nov 2020 09:19:36 -0500
Stefan Monnier wrote:

>> Such a use case doesn't seem uncommon and simply calling
>> 'internal-default-process-sentinel' from a custom sentinel would seem a
>> good solution, but the "internal-" prefix or the fact that such usage is
>> completely absent from Emacs core and very rare even in 3rd party
>> code[1] don't inspire confidence.
>
> `add-function` is your friend.
>
>     (add-function :around (process-sentinel proc)
>                   (lambda (orig-fun proc state)
>                     (if (one particular case)
>                         (do the thing)
>                       (funcall orig-fun proc state))))

Thanks, I've seen similar examples in the code base, but always advising
an Elisp sentinel, not 'internal-default-process-sentinel', which is a C
function, and IIUC also would/might be called from C (e.g. from
status_notify ?). Or is the actual default sentinel some kind of a
wrapper?

And even for Elisp sentinels, I figured I'd rather avoid advice, as even
when using a self-removing piece of advice, it still applies to all
(even unrelated) calls of the same sentinel function occurring until the
removal. Or am I missing something?

-- 
Štěpán



reply via email to

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