1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-04-22 14:01:47 -07:00

Add helper to determine local channels in ERC

* lisp/erc/erc.el (erc--valid-local-channel-p): Add internal helper to
determine whether an IRC channel is local according to its network's
CHANTYPES ISUPPORT parameter.

* test/lisp/erc/erc-tests.el (erc--valid-local-channel-p): Add test
for this helper.
This commit is contained in:
F. Jason Park 2021-08-16 05:01:16 -07:00
parent 4e312c07f7
commit 1c24af0fcb
2 changed files with 20 additions and 0 deletions

View file

@ -3251,6 +3251,14 @@ For a list of user commands (/join /part, ...):
(concat " " password)
"")))))
(defun erc--valid-local-channel-p (channel)
"Non-nil when channel is server-local on a network that allows them."
(and-let* (((eq ?& (aref channel 0)))
(chan-types (erc--get-isupport-entry 'CHANTYPES 'single))
((if (>= emacs-major-version 28)
(string-search "&" chan-types)
(string-match-p "&" chan-types))))))
(defun erc-cmd-JOIN (channel &optional key)
"Join the channel given in CHANNEL, optionally with KEY.
If CHANNEL is specified as \"-invite\", join the channel to which you

View file

@ -466,6 +466,18 @@
(should (equal (erc-downcase "Tilde~") "tilde~" ))
(should (equal (erc-downcase "\\O/") "|o/" )))))
(ert-deftest erc--valid-local-channel-p ()
(ert-info ("Local channels not supported")
(let ((erc--isupport-params (make-hash-table)))
(puthash 'CHANTYPES '("#") erc--isupport-params)
(should-not (erc--valid-local-channel-p "#chan"))
(should-not (erc--valid-local-channel-p "&local"))))
(ert-info ("Local channels supported")
(let ((erc--isupport-params (make-hash-table)))
(puthash 'CHANTYPES '("&#") erc--isupport-params)
(should-not (erc--valid-local-channel-p "#chan"))
(should (erc--valid-local-channel-p "&local")))))
(ert-deftest erc-ring-previous-command-base-case ()
(ert-info ("Create ring when nonexistent and do nothing")
(let (erc-input-ring