summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisp/erc/erc-backend.el24
-rw-r--r--lisp/erc/erc-compat.el6
-rw-r--r--lisp/erc/erc-dcc.el12
-rw-r--r--lisp/erc/erc-speedbar.el24
-rw-r--r--lisp/erc/erc.el33
5 files changed, 31 insertions, 68 deletions
diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el
index f83c27dc4e2..df9efe4b0c3 100644
--- a/lisp/erc/erc-backend.el
+++ b/lisp/erc/erc-backend.el
@@ -1011,21 +1011,15 @@ PROCs `process-buffer' is `current-buffer' when this function is called."
(save-match-data
(let* ((tag-list (when (eq (aref string 0) ?@)
(substring string 1
- (if (>= emacs-major-version 28)
- (string-search " " string)
- (string-match " " string)))))
+ (string-search " " string))))
(msg (make-erc-response :unparsed string :tags (when tag-list
(erc-parse-tags
tag-list))))
(string (if tag-list
- (substring string (+ 1 (if (>= emacs-major-version 28)
- (string-search " " string)
- (string-match " " string))))
+ (substring string (+ 1 (string-search " " string)))
string))
(posn (if (eq (aref string 0) ?:)
- (if (>= emacs-major-version 28)
- (string-search " " string)
- (string-match " " string))
+ (string-search " " string)
0)))
(setf (erc-response.sender msg)
@@ -1035,9 +1029,7 @@ PROCs `process-buffer' is `current-buffer' when this function is called."
(setf (erc-response.command msg)
(let* ((bposn (string-match "[^ \n]" string posn))
- (eposn (if (>= emacs-major-version 28)
- (string-search " " string bposn)
- (string-match " " string bposn))))
+ (eposn (string-search " " string bposn)))
(setq posn (and eposn
(string-match "[^ \n]" string eposn)))
(substring string bposn eposn)))
@@ -1045,9 +1037,7 @@ PROCs `process-buffer' is `current-buffer' when this function is called."
(while (and posn
(not (eq (aref string posn) ?:)))
(push (let* ((bposn posn)
- (eposn (if (>= emacs-major-version 28)
- (string-search " " string bposn)
- (string-match " " string bposn))))
+ (eposn (string-search " " string bposn)))
(setq posn (and eposn
(string-match "[^ \n]" string eposn)))
(substring string bposn eposn))
@@ -1668,9 +1658,7 @@ Then display the welcome message."
start (- (match-end 0) 3))
(setq start (match-end 0))))
v))
- (if (if (>= emacs-major-version 28)
- (string-search "," value)
- (string-match-p "," value))
+ (if (string-search "," value)
(split-string value ",")
(list value)))))
diff --git a/lisp/erc/erc-compat.el b/lisp/erc/erc-compat.el
index 16cfb15a5ae..8a00e711acd 100644
--- a/lisp/erc/erc-compat.el
+++ b/lisp/erc/erc-compat.el
@@ -25,8 +25,14 @@
;; This mostly defines stuff that cannot be worked around easily.
+;; ERC depends on the `compat' library from GNU ELPA for supporting
+;; older versions of Emacs. See this discussion for additional info:
+;; https://lists.gnu.org/archive/html/emacs-devel/2022-07/msg00512.html
+
;;; Code:
+(require 'compat nil 'noerror)
+
;;;###autoload(autoload 'erc-define-minor-mode "erc-compat")
(define-obsolete-function-alias 'erc-define-minor-mode
#'define-minor-mode "28.1")
diff --git a/lisp/erc/erc-dcc.el b/lisp/erc/erc-dcc.el
index 5862fba3b81..977080a4de1 100644
--- a/lisp/erc/erc-dcc.el
+++ b/lisp/erc/erc-dcc.el
@@ -191,9 +191,7 @@ compared with `erc-nick-equal-p' which is IRC case-insensitive."
test (cadr (plist-member elt prop)))
;; if the property exists and is equal, we continue, else, try the
;; next element of the list
- (or (and (eq prop :nick) (if (>= emacs-major-version 28)
- (string-search "!" val)
- (string-match "!" val))
+ (or (and (eq prop :nick) (string-search "!" val)
test (string-equal test val))
(and (eq prop :nick)
test val
@@ -659,13 +657,7 @@ that subcommand."
(define-inline erc-dcc-unquote-filename (filename)
(inline-quote
- (if (>= emacs-major-version 28)
- (string-replace
- "\\\\" "\\"
- (string-replace "\\\"" "\"" ,filename))
- (replace-regexp-in-string
- "\\\\\\\\" "\\"
- (replace-regexp-in-string "\\\\\"" "\"" ,filename t t) t t))))
+ (string-replace "\\\\" "\\" (string-replace "\\\"" "\"" ,filename))))
(defun erc-dcc-handle-ctcp-send (proc query nick login host to)
"This is called if a CTCP DCC SEND subcommand is sent to the client.
diff --git a/lisp/erc/erc-speedbar.el b/lisp/erc/erc-speedbar.el
index 5b06c21612f..19113c5aad0 100644
--- a/lisp/erc/erc-speedbar.el
+++ b/lisp/erc/erc-speedbar.el
@@ -139,9 +139,7 @@ This will add a speedbar major display mode."
t))))
(defun erc-speedbar-expand-server (text server indent)
- (cond ((if (>= emacs-major-version 28)
- (string-search "+" text)
- (string-match "\\+" text))
+ (cond ((string-search "+" text)
(speedbar-change-expand-button-char ?-)
(if (speedbar-with-writable
(save-excursion
@@ -150,9 +148,7 @@ This will add a speedbar major display mode."
(speedbar-change-expand-button-char ?-)
(speedbar-change-expand-button-char ??)))
(;; we have to contract this node
- (if (>= emacs-major-version 28)
- (string-search "-" text)
- (string-match "-" text))
+ (string-search "-" text)
(speedbar-change-expand-button-char ?+)
(speedbar-delete-subblock indent))
(t (error "Ooops... not sure what to do")))
@@ -189,9 +185,7 @@ This will add a speedbar major display mode."
"For the line matching TEXT, in CHANNEL, expand or contract a line.
INDENT is the current indentation level."
(cond
- ((if (>= emacs-major-version 28)
- (string-search "+" text)
- (string-match "\\+" text))
+ ((string-search "+" text)
(speedbar-change-expand-button-char ?-)
(speedbar-with-writable
(save-excursion
@@ -240,9 +234,7 @@ INDENT is the current indentation level."
(speedbar-with-writable
(dolist (entry names)
(erc-speedbar-insert-user entry ?+ (1+ indent))))))))))
- ((if (>= emacs-major-version 28)
- (string-search "-" text)
- (string-match "-" text))
+ ((string-search "-" text)
(speedbar-change-expand-button-char ?+)
(speedbar-delete-subblock indent))
(t (error "Ooops... not sure what to do")))
@@ -293,9 +285,7 @@ The update is only done when the channel is actually expanded already."
(erc-speedbar-expand-channel "+" buffer 1)))))
(defun erc-speedbar-expand-user (text token indent)
- (cond ((if (>= emacs-major-version 28)
- (string-search "+" text)
- (string-match "\\+" text))
+ (cond ((string-search "+" text)
(speedbar-change-expand-button-char ?-)
(speedbar-with-writable
(save-excursion
@@ -318,9 +308,7 @@ The update is only done when the channel is actually expanded already."
nil nil nil nil
info nil nil nil
(1+ indent)))))))
- ((if (>= emacs-major-version 28)
- (string-search "-" text)
- (string-match "-" text))
+ ((string-search "-" text)
(speedbar-change-expand-button-char ?+)
(speedbar-delete-subblock indent))
(t (error "Ooops... not sure what to do")))
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index 3b127bbd492..151d75e7ce1 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -13,7 +13,7 @@
;; Michael Olson (mwolson@gnu.org)
;; Kelvin White (kwhite@gnu.org)
;; Version: 5.4.1
-;; Package-Requires: ((emacs "27.1"))
+;; Package-Requires: ((emacs "27.1") (compat "28.1.2.0"))
;; Keywords: IRC, chat, client, Internet
;; URL: https://www.gnu.org/software/emacs/erc.html
@@ -69,6 +69,8 @@
(require 'iso8601)
(eval-when-compile (require 'subr-x))
+(require 'erc-compat)
+
(defconst erc-version "5.4.1"
"This version of ERC.")
@@ -3519,9 +3521,7 @@ Without SECRET, consult auth-source, possibly passing SERVER as the
"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))))))
+ ((string-search "&" chan-types)))))
(defun erc-cmd-JOIN (channel &optional key)
"Join the channel given in CHANNEL, optionally with KEY.
@@ -7005,21 +7005,12 @@ shortened server name instead."
(fill-region (point-min) (point-max))
(buffer-string))))
(setq header-line-format
- (if (>= emacs-major-version 28)
- (string-replace
- "%"
- "%%"
- (if face
- (propertize header 'help-echo help-echo
- 'face face)
- (propertize header 'help-echo help-echo)))
- (replace-regexp-in-string
- "%"
- "%%"
- (if face
- (propertize header 'help-echo help-echo
- 'face face)
- (propertize header 'help-echo help-echo)))))))
+ (string-replace
+ "%"
+ "%%"
+ (if face
+ (propertize header 'help-echo help-echo 'face face)
+ (propertize header 'help-echo help-echo))))))
(t (setq header-line-format
(if face
(propertize header 'face face)
@@ -7304,9 +7295,7 @@ functions."
nick user host channel
(if (not (string= reason ""))
(format ": %s"
- (if (>= emacs-major-version 28)
- (string-replace "%" "%%" reason)
- (replace-regexp-in-string "%" "%%" reason)))
+ (string-replace "%" "%%" reason))
"")))))