Emacs ERC-修改传入消息
我正在使用以下elisp代码修改来自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"
(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)