Emacs ERC-修改传入消息

Emacs ERC-修改传入消息,emacs,elisp,Emacs,Elisp,我正在使用以下elisp代码修改来自ERC的传入消息 (defun my-modify (msg) (replace-regexp-in-string "abc" "xyz" msg)) (add-hook 'erc-insert-modify-hook 'my-modify) 我得到以下错误 error in process filter: Wrong number of arguments: (lambda (msg) (replace-regexp-in-string "abc"

我正在使用以下elisp代码修改来自ERC的传入消息

(defun my-modify (msg)
  (replace-regexp-in-string "abc" "xyz" msg))
(add-hook 'erc-insert-modify-hook 'my-modify)
我得到以下错误

error in process filter: Wrong number of arguments: (lambda (msg) 
(replace-regexp-in-string "abc" "xyz" msg)), 0

显然,从
erc insert modify hook
调用的函数不会像代码所期望的那样将传入消息作为参数获取

引用我们看到的:

这个钩子在插入实际文本后运行。当缓冲区运行时,使用窄到区域将缓冲区缩小到插入的文本。因此,可以使用(最小点)和(最大点)确定“修改”挂钩上插入文本的起点和终点


因此,您应该替换当前缓冲区中的内容。

我不确定以前的代码中有什么错误,但我可以使用此代码(从)修改传入的消息


这就像预期的一样,但我真正想要的是去掉一个特殊的缺口,只显示信息。然而,我认为在ERC层面上这是不可能的。相反,我将不得不在缓冲区级别尝试它。

+1以通过向下投票来对抗驱动器。
(defun my-modify (proc parsed)
  (let ((msg (erc-response.contents parsed)))
    (when (stringp msg)
      (setf (erc-response.contents parsed)
            (erc-replace-regexp-in-string "abc" "xyz" msg))
      nil)))
(add-hook 'erc-server-PRIVMSG-functions 'my-modify)