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:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user