[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 0f52e7ac68 01/25: Rework mutual dependency between erc and erc-ba
From: |
F. Jason Park |
Subject: |
master 0f52e7ac68 01/25: Rework mutual dependency between erc and erc-backend |
Date: |
Thu, 30 Jun 2022 18:29:52 -0400 (EDT) |
branch: master
commit 0f52e7ac68457ca8beb22cd382b1637fed35fd73
Author: F. Jason Park <jp@neverwas.me>
Commit: F. Jason Park <jp@neverwas.me>
Rework mutual dependency between erc and erc-backend
* lisp/erc/erc.el: Declare needed variables exported by erc-backend.el
as special near the top of the file, and only require `erc-backend'
after providing `erc' as a feature at the very end.
* lisp/erc/erc-backend.el: Don't preemptively provide `erc-backend'.
* test/lisp/erc/erc-tests.el (erc--meta--backend-dependencies): Add
utility test to scrape for unused vars that may accumulate over time.
(Bug#54825)
---
lisp/erc/erc-backend.el | 1 -
lisp/erc/erc.el | 23 ++++++++++++++++++++++-
test/lisp/erc/erc-tests.el | 21 +++++++++++++++++++++
3 files changed, 43 insertions(+), 2 deletions(-)
diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el
index 1252a5b4fa..2f0b523d1b 100644
--- a/lisp/erc/erc-backend.el
+++ b/lisp/erc/erc-backend.el
@@ -102,7 +102,6 @@
;; There's a fairly strong mutual dependency between erc.el and erc-backend.el.
;; Luckily, erc.el does not need erc-backend.el for macroexpansion whereas the
;; reverse is true:
-(provide 'erc-backend)
(require 'erc)
;;;; Variables and options
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index ff482d4933..c4689a4b78 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -130,7 +130,26 @@
"Running scripts at startup and with /LOAD."
:group 'erc)
-(require 'erc-backend)
+;; Defined in erc-backend
+(defvar erc--server-reconnecting)
+(defvar erc-channel-members-changed-hook)
+(defvar erc-server-367-functions)
+(defvar erc-server-announced-name)
+(defvar erc-server-connect-function)
+(defvar erc-server-connected)
+(defvar erc-server-current-nick)
+(defvar erc-server-filter-data)
+(defvar erc-server-lag)
+(defvar erc-server-last-sent-time)
+(defvar erc-server-parameters)
+(defvar erc-server-process)
+(defvar erc-server-quitting)
+(defvar erc-server-reconnect-count)
+(defvar erc-server-reconnecting)
+(defvar erc-session-client-certificate)
+(defvar erc-session-connector)
+(defvar erc-session-port)
+(defvar erc-session-server)
;; tunable connection and authentication parameters
@@ -7023,6 +7042,8 @@ Otherwise, connect to HOST:PORT as USER and /join
CHANNEL."
(provide 'erc)
+(require 'erc-backend)
+
;; Deprecated. We might eventually stop requiring the goodies automatically.
;; IMPORTANT: This require must appear _after_ the above (provide 'erc) to
;; avoid a recursive require error when byte-compiling the entire package.
diff --git a/test/lisp/erc/erc-tests.el b/test/lisp/erc/erc-tests.el
index 520f10dd4e..3c76cb97ca 100644
--- a/test/lisp/erc/erc-tests.el
+++ b/test/lisp/erc/erc-tests.el
@@ -48,6 +48,27 @@
(cl-letf (((symbol-function 'read-string) (lambda (&rest _) "1d")))
(should (equal (erc--read-time-period "foo: ") 86400))))
+(ert-deftest erc--meta--backend-dependencies ()
+ (with-temp-buffer
+ (insert-file-contents-literally
+ (concat (file-name-sans-extension (symbol-file 'erc)) ".el"))
+ (let ((beg (search-forward ";; Defined in erc-backend"))
+ (end (search-forward "\n\n"))
+ vars)
+ (save-excursion
+ (save-restriction
+ (narrow-to-region beg end)
+ (goto-char (point-min))
+ (with-syntax-table lisp-data-mode-syntax-table
+ (condition-case _
+ (while (push (cadr (read (current-buffer))) vars))
+ (end-of-file)))))
+ (should (= (point) end))
+ (dolist (var vars)
+ (setq var (concat "\\_<" (symbol-name var) "\\_>"))
+ (ert-info (var)
+ (should (save-excursion (search-forward-regexp var nil t))))))))
+
(ert-deftest erc-with-all-buffers-of-server ()
(let (proc-exnet
proc-onet
- master updated (a3311dbce0 -> 85c2f3bc3e), F. Jason Park, 2022/06/30
- master 0f52e7ac68 01/25: Rework mutual dependency between erc and erc-backend,
F. Jason Park <=
- master c5b78a3379 05/25: Customize displaying of ERC buffers on reconnect, F. Jason Park, 2022/06/30
- master 4ae0707704 03/25: Accept user keyword arg in ERC entry-point commands, F. Jason Park, 2022/06/30
- master a63ed6f78a 04/25: Remove duplicate ERC prompt on reconnect, F. Jason Park, 2022/06/30
- master de53d18a4d 07/25: Don't set erc-server-announced-name unless known, F. Jason Park, 2022/06/30
- master 873499ce06 06/25: Allow exemption from flood penalty in erc-backend, F. Jason Park, 2022/06/30
- master ecafe1cbb5 10/25: Recognize ASCII and strict CASEMAPPINGs in ERC, F. Jason Park, 2022/06/30
- master 752e860db4 16/25: Address long-standing ERC buffer-naming issues, F. Jason Park, 2022/06/30
- master 85c2f3bc3e 25/25: Update ERC's Info doc with network-ID related changes, F. Jason Park, 2022/06/30
- master 54414ec846 02/25: Initialize erc-server-filter-data in erc-backend, F. Jason Park, 2022/06/30
- master 4e312c07f7 11/25: Make ERC respect spaces in server passwords, F. Jason Park, 2022/06/30