[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