[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
fix/bug-48598 3c6694d114 20/27: Don't call erc-auto-query twice on PRIVM
From: |
F. Jason Park |
Subject: |
fix/bug-48598 3c6694d114 20/27: Don't call erc-auto-query twice on PRIVMSG |
Date: |
Fri, 8 Apr 2022 03:06:51 -0400 (EDT) |
branch: fix/bug-48598
commit 3c6694d114424943b6002aa609b6fdf13aaafeac
Author: F. Jason Park <jp@neverwas.me>
Commit: F. Jason Park <jp@neverwas.me>
Don't call erc-auto-query twice on PRIVMSG
* erc-backend.el (erc-server-PRIVMSG): don't call `erc-auto-query' at
all and instead borrow the portion its logic that detects when a query
buffer should be created instead of a channel buffer.
(erc-server-JOIN): call `erc--open-target' instead of `erc-join'.
* erc.el (erc-query, erc--open-target): Replace uses of `erc-query'
with `erc--open-target' and make the former obsolete. Don't call
`erc-update-mode-line' because `erc-open' already does that.
(erc-auto-query): Make this function obsolete. It was previously only
used in erc-backend.el and only sewed confusion.
(erc-query-on-unjoined-chan-privmsg): Add note questioning its role.
It was previously only used by the now deprecated `erc-auto-query'.
(erc-cmd-QUERY): Update the mode line explicitly after calling
`erc-query' in case it's needed after `erc-setup-buffer'
runs. Simplify.
* lisp/erc/erc-backend.el (erc-server-JOIN): Call `erc--open-target'.
---
lisp/erc/erc-backend.el | 26 ++++++++---------------
lisp/erc/erc.el | 56 ++++++++++++++++++++++++++++---------------------
2 files changed, 41 insertions(+), 41 deletions(-)
diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el
index 1d3a274ebb..1335ee41fb 100644
--- a/lisp/erc/erc-backend.el
+++ b/lisp/erc/erc-backend.el
@@ -1327,16 +1327,7 @@ add things to `%s' instead."
(let* ((str (cond
;; If I have joined a channel
((erc-current-nick-p nick)
- (setq buffer (erc-open erc-session-server
erc-session-port
- nick erc-session-user-full-name
- nil nil
- (list chnl) chnl
- erc-server-process
- nil
- erc-session-username
- (erc-networks--id-given
- erc-networks--id)))
- (when buffer
+ (when (setq buffer (erc--open-target chnl))
(set-buffer buffer)
(with-suppressed-warnings
((obsolete erc-add-default-channel))
@@ -1527,6 +1518,13 @@ add things to `%s' instead."
fnick)
(setf (erc-response.contents parsed) msg)
(setq buffer (erc-get-buffer (if privp nick tgt) proc))
+ ;; Even worth checking for empty target here? (invalid anyway)
+ (unless (or buffer noticep (string-empty-p tgt) (eq ?$ (aref tgt 0)))
+ (if (and privp msgp (not (erc-is-message-ctcp-and-not-action-p msg)))
+ (when erc-auto-query
+ (let ((erc-join-buffer erc-auto-query))
+ (setq buffer (erc--open-target nick))))
+ (setq buffer (erc--open-target tgt))))
(when buffer
(with-current-buffer buffer
(when privp (erc--unhide-prompt))
@@ -1562,13 +1560,7 @@ add things to `%s' instead."
s parsed buffer nick)
(run-hook-with-args-until-success
'erc-echo-notice-hook s parsed buffer nick))
- (erc-display-message parsed nil buffer s)))
- (when (string= cmd "PRIVMSG")
- (erc-auto-query proc parsed))))))
-
-;; FIXME: need clean way of specifying extra hooks in
-;; define-erc-response-handler.
-(add-hook 'erc-server-PRIVMSG-functions #'erc-auto-query)
+ (erc-display-message parsed nil buffer s)))))))
(define-erc-response-handler (QUIT)
"Another user has quit IRC." nil
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index d54a94bd38..230cfe456f 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -3741,13 +3741,14 @@ on the value of `erc-query-display'."
;; `kill-buffer'? If it makes sense, re-add it. -- SK @ 2021-11-11
(interactive
(list (read-string "Start a query with: ")))
- (let ((session-buffer (erc-server-buffer))
- (erc-join-buffer erc-query-display))
- (if user
- (erc-query user session-buffer)
+ (unless user
;; currently broken, evil hack to display help anyway
;(erc-delete-query))))
- (signal 'wrong-number-of-arguments ""))))
+ (signal 'wrong-number-of-arguments ""))
+ (let ((erc-join-buffer erc-query-display))
+ (erc-with-server-buffer
+ (erc--open-target user))))
+
(defalias 'erc-cmd-Q #'erc-cmd-QUERY)
(defun erc-quit/part-reason-default ()
@@ -4429,28 +4430,30 @@ See `erc-default-server-hook'."
(nconc erc-server-vectors (list parsed))
nil)
-(defun erc-query (target server)
- "Open a query buffer on TARGET, using SERVER.
+(defun erc--open-target (target)
+ "Open an ERC buffer on TARGET."
+ (erc-open erc-session-server
+ erc-session-port
+ (erc-current-nick)
+ erc-session-user-full-name
+ nil
+ nil
+ (list target)
+ target
+ erc-server-process
+ nil
+ erc-session-username
+ (erc-networks--id-given erc-networks--id)))
+
+(defun erc-query (target server-buffer)
+ "Open a query buffer on TARGET using SERVER-BUFFER.
To change how this query window is displayed, use `let' to bind
`erc-join-buffer' before calling this."
- (unless (and server
- (buffer-live-p server)
- (set-buffer server))
+ (declare (obsolete "bind `erc-cmd-query' and call `erc-cmd-QUERY'" "29.1"))
+ (unless (buffer-live-p server-buffer)
(error "Couldn't switch to server buffer"))
- (let ((buf (erc-open erc-session-server
- erc-session-port
- (erc-current-nick)
- erc-session-user-full-name
- nil
- nil
- (list target)
- target
- erc-server-process
- erc-session-username)))
- (unless buf
- (error "Couldn't open query window"))
- (erc-update-mode-line)
- buf))
+ (with-current-buffer server-buffer
+ (erc--open-target target)))
(defcustom erc-auto-query 'window-noselect
"If non-nil, create a query buffer each time you receive a private message.
@@ -4469,6 +4472,9 @@ a new window, but not to select it. See the
documentation for
(const :tag "Use current buffer" buffer)
(const :tag "Use current buffer" t)))
+;; FIXME either retire this or put it to use or more clearly explain
+;; what it's supposed to do. It's currently only used by the obsolete
+;; function `erc-auto-query'.
(defcustom erc-query-on-unjoined-chan-privmsg t
"If non-nil create query buffer on receiving any PRIVMSG at all.
This includes PRIVMSGs directed to channels. If you are using an IRC
@@ -4591,6 +4597,8 @@ and as second argument the event parsed as a vector."
(erc-cmd-QUERY query))
nil))))
+(make-obsolete 'erc-auto-query "try erc-cmd-QUERY instead" "29.1")
+
(defun erc-is-message-ctcp-p (message)
"Check if MESSAGE is a CTCP message or not."
(string-match "^\C-a\\([^\C-a]*\\)\C-a?$" message))
- fix/bug-48598 8b7760d301 07/27: Allow exemption from flood penalty in erc-backend, (continued)
- fix/bug-48598 8b7760d301 07/27: Allow exemption from flood penalty in erc-backend, F. Jason Park, 2022/04/08
- fix/bug-48598 57eedf46ae 04/27: Add some ERC test helpers, F. Jason Park, 2022/04/08
- fix/bug-48598 911481d449 13/27: Add helper to determine local channels in ERC, F. Jason Park, 2022/04/08
- fix/bug-48598 eee86bc7d7 16/27: Add ERC test server and related resources, F. Jason Park, 2022/04/08
- fix/bug-48598 7cb4eec8a1 23/27: SQUASH-ME: Add ERC test scenarios for identity-aware autojoin, F. Jason Park, 2022/04/08
- fix/bug-48598 447bc23d7b 21/27: SQUASH-ME: Add ERC scenarios for identity-aware msg handlers, F. Jason Park, 2022/04/08
- fix/bug-48598 a999ff61fa 19/27: Register erc-kill-buffer-function locally, F. Jason Park, 2022/04/08
- fix/bug-48598 e0bf4383d7 24/27: Standardize auth-source queries in ERC, F. Jason Park, 2022/04/08
- fix/bug-48598 1978c3178c 10/27: Update ISUPPORT handling in ERC, F. Jason Park, 2022/04/08
- fix/bug-48598 6ee4329b46 02/27: Initialize erc-server-filter-data in erc-backend, F. Jason Park, 2022/04/08
- fix/bug-48598 3c6694d114 20/27: Don't call erc-auto-query twice on PRIVMSG,
F. Jason Park <=
- fix/bug-48598 50b3aa88fc 11/27: Recognize ascii and strict CASEMAPPINGs in ERC, F. Jason Park, 2022/04/08
- fix/bug-48598 f9794dea43 15/27: Discourage ill-defined use of buffer targets in ERC, F. Jason Park, 2022/04/08
- fix/bug-48598 bb117dfacb 05/27: [SQUASH-ME] Remove duplicate ERC prompt on reconnect, F. Jason Park, 2022/04/08
- fix/bug-48598 c25371f9d7 08/27: Don't set erc-server-announced-name unless known, F. Jason Park, 2022/04/08
- fix/bug-48598 8558f9434a 12/27: Make ERC respect spaces in server passwords, F. Jason Park, 2022/04/08
- fix/bug-48598 a9ef01ec76 06/27: Customize displaying of ERC buffers on reconnect, F. Jason Park, 2022/04/08
- fix/bug-48598 eef4fa00e8 01/27: Rework mutual dependency between erc and erc-backend, F. Jason Park, 2022/04/08
- fix/bug-48598 31030f2568 14/27: Add eventual replacement for erc-default-recipients, F. Jason Park, 2022/04/08
- fix/bug-48598 6ece132c35 09/27: Require erc-networks in erc.el, F. Jason Park, 2022/04/08
- fix/bug-48598 346381ffe5 17/27: Address long-standing ERC buffer-naming issues, F. Jason Park, 2022/04/08