[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 8cf66ab1e5f 7/8: Rename erc-server-buffer-p
From: |
F. Jason Park |
Subject: |
master 8cf66ab1e5f 7/8: Rename erc-server-buffer-p |
Date: |
Fri, 20 Oct 2023 18:27:11 -0400 (EDT) |
branch: master
commit 8cf66ab1e5ff253d72368901490f073634e1ae4b
Author: F. Jason Park <jp@neverwas.me>
Commit: F. Jason Park <jp@neverwas.me>
Rename erc-server-buffer-p
* lisp/erc/erc-log.el (erc-log-all-but-server-buffers): Use
`erc--server-buffer-p' instead of `erc-server-buffer-p'. This
replacement is presumed to be relatively "safe" because this function
is unused in the code base and only appears in the doc string for the
option `erc-enable-logging'.
* lisp/erc/erc-match.el (erc-match-message): Leave comment proposing
that `erc--server-buffer-p' should be preferred to
`erc-server-buffer-p'. Use preferred alias for `erc-server-buffer-p'.
* lisp/erc/erc-notify.el (erc-cmd-NOTIFY): Use preferred alias for
`erc-server-buffer-p', and leave FIXME comment.
* lisp/erc/erc-speedbar.el (erc-speedbar-buttons): Use
`erc--server-buffer-p' instead of `erc-server-buffer-p'. The logic
here seems simple enough to justify a change, however the absence of
related bug reports is perhaps an argument against this.
* lisp/erc/erc-track.el (erc-track-modified-channels): Use preferred
alias for `erc-server-buffer-p' and leave comment noting possible bug.
* lisp/erc/erc.el (erc-once-with-server-event): Use
`erc--server-buffer-p' instead of `erc-server-buffer-p'. This change
seems justified because the function sets local hooks that would
otherwise be ignored outside of a server buffer.
(erc-server-buffer-p, erc-server-or-unjoined-channel-buffer-p): Make
the former an obsolete alias for the latter.
(erc--server-buffer-p): New function to replace `erc-server-buffer-p'
internally in new code. Unlike its predecessor, it returns nil in
parted and kicked channels.
(erc-open-server-buffer-p): Use `erc--server-buffer-p' instead of
`erc-server-buffer-p'. Given the name and the doc string, breaking
the odd misuse of this function in parted buffers seems justified
because this is clearly a bug fix. Also, all uses in-tree conform to
the intended behavior as documented. And a cursory grep of all "erc-"
prefixed packages on MELPA reveals zero instances of this function.
Nor is it used in erbot.
(erc-get-buffer): Mention behavior in doc string regarding parted and
kicked-from channels.
(erc-cmd-GQUIT): Fix wrong-number-of-arguments bug in timer function.
(erc-default-target): Mention behavior regarding unjoined channels.
(erc-kill-query-buffers): Don't use `erc-server-buffer-p'. This
replacement may break third-party code expecting to leave parted
channels behind, but it seems sane when considering only the lone
internal use in `erc-cmd-QUIT'.
; * test/lisp/erc/resources/join/network-id/foonet.eld: Timeouts.
(Bug#66578)
---
lisp/erc/erc-log.el | 4 +-
lisp/erc/erc-match.el | 4 +-
lisp/erc/erc-notify.el | 4 +-
lisp/erc/erc-speedbar.el | 2 +-
lisp/erc/erc-track.el | 4 +-
lisp/erc/erc.el | 44 ++++++++++++++--------
test/lisp/erc/resources/join/network-id/foonet.eld | 4 +-
7 files changed, 42 insertions(+), 24 deletions(-)
diff --git a/lisp/erc/erc-log.el b/lisp/erc/erc-log.el
index 472cc1388a4..79fece5779e 100644
--- a/lisp/erc/erc-log.el
+++ b/lisp/erc/erc-log.el
@@ -276,11 +276,11 @@ The current buffer is given by BUFFER."
(defun erc-log-all-but-server-buffers (buffer)
"Return t if logging should be enabled in BUFFER.
-Returns nil if `erc-server-buffer-p' returns t."
+Return nil if BUFFER is a server buffer."
(save-excursion
(save-window-excursion
(set-buffer buffer)
- (not (erc-server-buffer-p)))))
+ (not (erc--server-buffer-p)))))
(defun erc-save-query-buffers (process)
"Save all buffers of the given PROCESS."
diff --git a/lisp/erc/erc-match.el b/lisp/erc/erc-match.el
index 186717579d7..8644e61106f 100644
--- a/lisp/erc/erc-match.el
+++ b/lisp/erc/erc-match.el
@@ -491,7 +491,9 @@ Use this defun with `erc-insert-modify-hook'."
(message (buffer-substring message-beg (point-max))))
(when (and vector
(not (and erc-match-exclude-server-buffer
- (erc-server-buffer-p))))
+ ;; FIXME replace with `erc--server-buffer-p'
+ ;; or explain why that's unwise.
+ (erc-server-or-unjoined-channel-buffer-p))))
(mapc
(lambda (match-type)
(goto-char (point-min))
diff --git a/lisp/erc/erc-notify.el b/lisp/erc/erc-notify.el
index 55be8976ada..cf7ffbb40d7 100644
--- a/lisp/erc/erc-notify.el
+++ b/lisp/erc/erc-notify.el
@@ -218,7 +218,9 @@ with args, toggle notify status of people."
;; from your notify list.
(dolist (buf (erc-buffer-list))
(with-current-buffer buf
- (if (erc-server-buffer-p)
+ ;; FIXME replace with `erc--server-buffer-p' or
+ ;; explain why that's unwise.
+ (if (erc-server-or-unjoined-channel-buffer-p)
(setq erc-last-ison (delete (car args) erc-last-ison))))))
(setq erc-notify-list (cons (erc-string-no-properties (car args))
erc-notify-list)))
diff --git a/lisp/erc/erc-speedbar.el b/lisp/erc/erc-speedbar.el
index 625d59530b0..bb5fad6f52f 100644
--- a/lisp/erc/erc-speedbar.el
+++ b/lisp/erc/erc-speedbar.el
@@ -135,7 +135,7 @@ This will add a speedbar major display mode."
(erase-buffer)
(let (serverp chanp queryp)
(with-current-buffer buffer
- (setq serverp (erc-server-buffer-p))
+ (setq serverp (erc--server-buffer-p))
(setq chanp (erc-channel-p (erc-default-target)))
(setq queryp (erc-query-buffer-p)))
(cond (serverp
diff --git a/lisp/erc/erc-track.el b/lisp/erc/erc-track.el
index 64e59a90047..c8f2e04c3eb 100644
--- a/lisp/erc/erc-track.el
+++ b/lisp/erc/erc-track.el
@@ -795,7 +795,9 @@ the current buffer is in `erc-mode'."
(if (and (not (erc-buffer-visible (current-buffer)))
(not (member this-channel erc-track-exclude))
(not (and erc-track-exclude-server-buffer
- (erc-server-buffer-p)))
+ ;; FIXME either use `erc--server-buffer-p' or
+ ;; explain why that's unwise.
+ (erc-server-or-unjoined-channel-buffer-p)))
(not (erc-message-type-member
(or (erc-find-parsed-property)
(point-min))
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index f2c93d29d5c..877478690af 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -1417,7 +1417,7 @@ Please be sure to use this function in server-buffers. In
channel-buffers it may not work at all, as it uses the LOCAL
argument of `add-hook' and `remove-hook' to ensure multiserver
capabilities."
- (unless (erc-server-buffer-p)
+ (unless (erc--server-buffer-p)
(error
"You should only run `erc-once-with-server-event' in a server buffer"))
(let ((fun (make-symbol "fun"))
@@ -1474,19 +1474,30 @@ the process buffer."
(and (processp erc-server-process)
(buffer-live-p (process-buffer erc-server-process))))
-(defun erc-server-buffer-p (&optional buffer)
+(define-obsolete-function-alias
+ 'erc-server-buffer-p 'erc-server-or-unjoined-channel-buffer-p "30.1")
+(defun erc-server-or-unjoined-channel-buffer-p (&optional buffer)
"Return non-nil if argument BUFFER is an ERC server buffer.
-
-If BUFFER is nil, the current buffer is used."
+If BUFFER is nil, use the current buffer. For historical
+reasons, also return non-nil for channel buffers the client has
+parted or from which it's been kicked."
(with-current-buffer (or buffer (current-buffer))
(and (eq major-mode 'erc-mode)
(null (erc-default-target)))))
+(defun erc--server-buffer-p (&optional buffer)
+ "Return non-nil if BUFFER is an ERC server buffer.
+Without BUFFER, use the current buffer."
+ (if buffer
+ (with-current-buffer buffer
+ (and (eq major-mode 'erc-mode) (null erc--target)))
+ (and (eq major-mode 'erc-mode) (null erc--target))))
+
(defun erc-open-server-buffer-p (&optional buffer)
"Return non-nil if BUFFER is an ERC server buffer with an open IRC process.
If BUFFER is nil, the current buffer is used."
- (and (erc-server-buffer-p buffer)
+ (and (erc--server-buffer-p buffer)
(erc-server-process-alive buffer)))
(defun erc-query-buffer-p (&optional buffer)
@@ -1858,7 +1869,10 @@ All strings are compared according to IRC protocol case
rules, see
(defun erc-get-buffer (target &optional proc)
"Return the buffer matching TARGET in the process PROC.
-If PROC is not supplied, all processes are searched."
+Without PROC, search all ERC buffers. For historical reasons,
+skip buffers for channels the client has \"PART\"ed or from which
+it's been \"KICK\"ed. Expect users to use a different function
+for finding targets independent of \"JOIN\"edness."
(let ((downcased-target (erc-downcase target)))
(catch 'buffer
(erc-buffer-filter
@@ -4632,10 +4646,7 @@ the message given by REASON."
;; kill them
(run-at-time
4 nil
- (lambda ()
- (dolist (buffer (erc-buffer-list (lambda (buf)
- (not (erc-server-buffer-p buf)))))
- (kill-buffer buffer)))))
+ #'erc-buffer-do (lambda () (when erc--target (kill-buffer)))))
t)
(defalias 'erc-cmd-GQ #'erc-cmd-GQUIT)
@@ -7075,7 +7086,9 @@ See also `erc-downcase'."
;; continue to use `erc-default-target'.
(defun erc-default-target ()
- "Return the current default target (as a character string) or nil if none."
+ "Return the current channel or query target, if any.
+For historical reasons, return nil in channel buffers if not
+currently joined."
(let ((tgt (car erc-default-recipients)))
(cond
((not tgt) nil)
@@ -7637,15 +7650,14 @@ If it doesn't exist, create it."
(unless (file-attributes dir) (make-directory dir))
(or (file-accessible-directory-p dir) (error "Cannot access %s" dir)))
+;; FIXME make function obsolete or alias to something less confusing.
(defun erc-kill-query-buffers (process)
- "Kill all buffers of PROCESS.
-Does nothing if PROCESS is not a process object."
+ "Kill all target buffers of PROCESS, including channel buffers.
+Do nothing if PROCESS is not a process object."
;; here, we only want to match the channel buffers, to avoid
;; "selecting killed buffers" b0rkage.
(when (processp process)
- (erc-with-all-buffers-of-server process
- (lambda ()
- (not (erc-server-buffer-p)))
+ (erc-with-all-buffers-of-server process (lambda () erc--target)
(kill-buffer (current-buffer)))))
(defun erc-nick-at-point ()
diff --git a/test/lisp/erc/resources/join/network-id/foonet.eld
b/test/lisp/erc/resources/join/network-id/foonet.eld
index 7d63f5f0c6c..74a107f8144 100644
--- a/test/lisp/erc/resources/join/network-id/foonet.eld
+++ b/test/lisp/erc/resources/join/network-id/foonet.eld
@@ -1,8 +1,8 @@
;; -*- mode: lisp-data; -*-
((pass 10 "PASS :foonet:changeme"))
-((nick 1 "NICK tester"))
+((nick 10 "NICK tester"))
-((user 1 "USER user 0 * :tester")
+((user 10 "USER user 0 * :tester")
(0 ":irc.foonet.org 001 tester :Welcome to the foonet IRC Network tester")
(0 ":irc.foonet.org 002 tester :Your host is irc.foonet.org, running version
oragono-2.6.0-7481bf0385b95b16")
(0 ":irc.foonet.org 003 tester :This server was created Mon, 10 May 2021
00:58:22 UTC")
- master updated (1a8f61a9f65 -> f109396fe36), F. Jason Park, 2023/10/20
- master 8cf66ab1e5f 7/8: Rename erc-server-buffer-p,
F. Jason Park <=
- master bcebda5eec2 6/8: Respect user markers in erc-insert-timestamp-left, F. Jason Park, 2023/10/20
- master b86b187aa90 2/8: * lisp/erc/erc-backend.el (define-erc-response-handler) Edebug spec., F. Jason Park, 2023/10/20
- master 7ffc79690ad 4/8: Restore missing metadata props in erc-display-line, F. Jason Park, 2023/10/20
- master f109396fe36 8/8: Prefer erc-target to erc-default-target, F. Jason Park, 2023/10/20
- master 47612514a9e 5/8: Fix right-sided stamps commingling with erc-prompt, F. Jason Park, 2023/10/20
- master a74b5de31f6 3/8: Warn about top-level erc-update-modules calls, F. Jason Park, 2023/10/20
- master 6daa6f5f5ce 1/8: ; Mark erc-log test as :unstable, F. Jason Park, 2023/10/20