]> git.eshelyaron.com Git - emacs.git/commitdiff
Bind current erc-response around all handlers
authorF. Jason Park <jp@neverwas.me>
Mon, 19 Aug 2024 06:50:58 +0000 (23:50 -0700)
committerEshel Yaron <me@eshelyaron.com>
Mon, 30 Sep 2024 20:33:41 +0000 (22:33 +0200)
* 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)

(cherry picked from commit 15545e15a343cc45561a3ff6b8ea930835b7ff08)

lisp/erc/erc-backend.el

index 9aedc11006782eeab17a5b3741f6c2f723f0122f..d999cf57db85f4aa4f1150c204c85551612a002c 100644 (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