>From 1a5ce365e0b2cd39a1bd3491b44c3fd9d10d5136 Mon Sep 17 00:00:00 2001 From: "F. Jason Park" Date: Fri, 8 Jul 2022 04:58:26 -0700 Subject: [PATCH 2/2] Add compat from GNU ELPA as a soft dependency in ERC FIXME update version in Package-Requires header to appropriate compat release. * 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.1.0 to Package-Requires header. (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 | 24 +++++--------------- lisp/erc/erc-compat.el | 48 +--------------------------------------- lisp/erc/erc-dcc.el | 16 ++++---------- lisp/erc/erc-speedbar.el | 24 +++++--------------- lisp/erc/erc.el | 35 +++++++++-------------------- 5 files changed, 28 insertions(+), 119 deletions(-) diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el index 2df2a57690..5858502eb2 100644 --- a/lisp/erc/erc-backend.el +++ b/lisp/erc/erc-backend.el @@ -1012,21 +1012,15 @@ erc-parse-server-response (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) @@ -1036,9 +1030,7 @@ erc-parse-server-response (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))) @@ -1046,9 +1038,7 @@ erc-parse-server-response (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)) @@ -1667,9 +1657,7 @@ erc--parse-isupport-value 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 e45b52f0c7..dec38df80a 100644 --- a/lisp/erc/erc-compat.el +++ b/lisp/erc/erc-compat.el @@ -26,6 +26,7 @@ ;; This mostly defines stuff that cannot be worked around easily. ;;; Code: +(require 'compat nil 'noerror) ;;;###autoload(autoload 'erc-define-minor-mode "erc-compat") (define-obsolete-function-alias 'erc-define-minor-mode @@ -150,53 +151,6 @@ erc-subseq (setq i (1+ i) start (1+ start))) res)))))) -;;;; lisp/calendar/time-date.el - -(defun erc-compat--28-decoded-time-period (time) - "Interpret DECODED as a period and return its length in seconds. -For computational purposes, years are 365 days long and months -are 30 days long." - (+ (if (consp (decoded-time-second time)) - ;; Fractional second. - (/ (float (car (decoded-time-second time))) - (cdr (decoded-time-second time))) - (or (decoded-time-second time) 0)) - (* (or (decoded-time-minute time) 0) 60) - (* (or (decoded-time-hour time) 0) 60 60) - (* (or (decoded-time-day time) 0) 60 60 24) - (* (or (decoded-time-month time) 0) 60 60 24 30) - (* (or (decoded-time-year time) 0) 60 60 24 365))) - -(defmacro erc-compat--decoded-time-period (time) - (declare (indent defun)) - (list (if (< emacs-major-version 28) - 'erc-compat--28-decoded-time-period - 'decoded-time-period) - time)) - -;;;; lisp/minibuffer.el - -(defun erc-compat--28-format-prompt (prompt default &rest format-args) - (concat - (if (null format-args) - prompt - (apply #'format prompt format-args)) - (and default - (or (not (stringp default)) - (> (length default) 0)) - (format " (default %s)" - (if (consp default) - (car default) - default))) - ": ")) - -(defmacro erc-compat--format-prompt (&rest rest) - (declare (indent defun)) - (cons (if (< emacs-major-version 28) - 'erc-compat--28-format-prompt - 'format-prompt) - rest)) - ;;;; lisp/emacs-lisp/subr-x.el (defmacro erc-compat--with-memoization (place &rest forms) diff --git a/lisp/erc/erc-dcc.el b/lisp/erc/erc-dcc.el index c8a66dd1d6..7a24acc433 100644 --- a/lisp/erc/erc-dcc.el +++ b/lisp/erc/erc-dcc.el @@ -191,9 +191,7 @@ erc-dcc-member 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 @@ -520,8 +518,8 @@ erc-dcc-do-GET-command (filename (or file (plist-get elt :file) "unknown"))) (if elt (let* ((file (read-file-name - (erc-compat--format-prompt - "Local filename" (file-name-nondirectory filename)) + (format-prompt "Local filename" + (file-name-nondirectory filename)) (or erc-dcc-get-default-directory default-directory) (expand-file-name (file-name-nondirectory filename) @@ -659,13 +657,7 @@ erc-dcc-ctcp-query-send-regexp (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 5b06c21612..19113c5aad 100644 --- a/lisp/erc/erc-speedbar.el +++ b/lisp/erc/erc-speedbar.el @@ -139,9 +139,7 @@ erc-speedbar-server-buttons 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 @@ erc-speedbar-expand-server (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 @@ erc-speedbar-expand-channel "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 @@ erc-speedbar-expand-channel (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 @@ erc-speedbar-update-channel (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 @@ erc-speedbar-expand-user 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 508f0e9620..3a58a0975e 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.1.0")) ;; Keywords: IRC, chat, client, Internet ;; URL: https://www.gnu.org/software/emacs/erc.html @@ -3211,7 +3211,7 @@ erc--read-time-period (wrong-type-argument nil)))) (unless time (user-error "%s is not a valid time period" period)) - (erc-compat--decoded-time-period time)))))) + (decoded-time-period time)))))) (defun erc-cmd-IGNORE (&optional user) "Ignore USER. This should be a regexp matching nick!user@host. @@ -3521,9 +3521,7 @@ erc--valid-local-channel-p "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. @@ -4482,7 +4480,7 @@ erc-join-channel (table (when (erc-server-buffer-live-p) (set-buffer (process-buffer erc-server-process)) erc-channel-list))) - (completing-read (erc-compat--format-prompt "Join channel" chnl) + (completing-read (format-prompt "Join channel" chnl) table nil nil nil nil chnl)) (when (or current-prefix-arg erc-prompt-for-channel-key) (read-string "Channel key (RET for none): ")))) @@ -7006,21 +7004,12 @@ erc-update-mode-line-buffer (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) @@ -7305,9 +7294,7 @@ erc-message-english-PART 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)) ""))))) -- 2.36.1