]> git.eshelyaron.com Git - emacs.git/commitdiff
Add compat from GNU ELPA as a soft dependency in ERC
authorF. Jason Park <jp@neverwas.me>
Fri, 8 Jul 2022 11:58:26 +0000 (04:58 -0700)
committerF. Jason Park <jp@neverwas.me>
Wed, 27 Jul 2022 12:19:09 +0000 (05:19 -0700)
* lisp/erc/erc-backend.el (erc-parse-server-response,
erc--parse-isupport-value): Remove sub-28 compat code involving
`string-search'.

* lisp/erc/erc-compat.el: Require compat package, but don't error
when absent.

* lisp/erc/erc-dcc.el (erc-dcc-member): Remove `string-search' compat
code.
(erc-dcc-unquote-filename): Remove `string-replace' compat code.

* lisp/erc/erc-speedbar.el (erc-speedbar-expand-server,
erc-speedbar-expand-channel, erc-speedbar-expand-user): Remove
`string-search' compat code.

* lisp/erc/erc.el: Add compat version 28.1.2.0 to Package-Requires
header and require `erc-compat' after other libraries.
(erc--valid-local-channel-p): Remove `string-search' compat code.
(erc-update-mode-line-buffer): Remove `string-replace' compat code.
(erc-message-english-PART): Remove `string-replace' compat code.

lisp/erc/erc-backend.el
lisp/erc/erc-compat.el
lisp/erc/erc-dcc.el
lisp/erc/erc-speedbar.el
lisp/erc/erc.el

index f83c27dc4e2503f132533ba2afe5e58f13208342..df9efe4b0c38dc36ef36fe9fc609e3400cde12a6 100644 (file)
@@ -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)))))
 
index 16cfb15a5ae7e1cded337d4c41788d5823c9ee64..8a00e711acd9c96e419fdb6ada58858d6ffe0229 100644 (file)
 
 ;; 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")
index 5862fba3b817b76b1812e27ee02222d006dfa4f3..977080a4de133d049542382f1adf2efdd4a43918 100644 (file)
@@ -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.
index 5b06c21612f9cd16156ad14578876e147410047f..19113c5aad08449982140e7211b8d5f4380ce3f8 100644 (file)
@@ -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")))
index 3b127bbd49223db7c99b09b152834339b0818961..151d75e7ce17c5641c21a7c3edf57bd5513286b3 100644 (file)
@@ -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))
                 "")))))