1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-22 07:09:54 +00:00

Bind current erc-response around all handlers

* lisp/erc/erc-backend.el (erc--parsed-response): New variable to be
the internal version of the ancient `erc-message-parsed', which is
only available during `erc-display-message', and therefore of somewhat
limited utility.
(erc-call-hooks): Bind `erc--parsed-response' to the parsed
`erc-response' object for the duration of its handling.  Bind
`erc--msg-prop-overrides' around all hooks to allow response handlers
to influence inserted msg props for any `erc-display-message' calls.
(Bug#72736)
This commit is contained in:
F. Jason Park 2024-08-18 23:50:58 -07:00
parent b0ebb82076
commit 15545e15a3

View File

@ -1534,11 +1534,15 @@ See also `erc-server-responses'."
(gethash (format (if (numberp command) "%03i" "%s") command)
erc-server-responses))
(defvar erc--parsed-response nil)
(defun erc-call-hooks (process message)
"Call hooks associated with MESSAGE in PROCESS.
Finds hooks by looking in the `erc-server-responses' hash table."
(let ((hook (or (erc-get-hook (erc-response.command message))
(let ((erc--parsed-response message)
(erc--msg-prop-overrides erc--msg-prop-overrides)
(hook (or (erc-get-hook (erc-response.command message))
'erc-default-server-functions)))
(run-hook-with-args-until-success hook process message)
;; Some handlers, like `erc-cmd-JOIN', open new targets without