From: Amin Bandali Date: Wed, 29 Sep 2021 03:44:48 +0000 (-0400) Subject: Unobsolete erc-compat.el X-Git-Tag: emacs-28.0.90~537 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=cbb0b5d8d5c823357951689ea4f14994e0399992;p=emacs.git Unobsolete erc-compat.el * lisp/obsolete/erc-compat.el: Move from here... * lisp/erc/erc-compat.el: ...back to here. ERC will soon be added to GNU ELPA, and erc-compat.el will be used to provide compatibility functions and/or variables for using ERC on older Emacsen. * etc/NEWS: Remove the previously added obsoletion news item. --- diff --git a/etc/NEWS b/etc/NEWS index 15614da7421..6d039bac4a8 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -2817,11 +2817,6 @@ Allowed inputs are seconds or ISO8601-like periods like "1h" or "4h30m". *** ERC now recognizes 'C-]' for italic text. Italic text is displayed in the new 'erc-italic-face'. ---- -*** The erc-compat.el library is now marked obsolete. -This file contained ERC compatibility code for Emacs 21 and XEmacs -which is no longer needed. - --- *** erc-match.el now supports 'message' highlight type (not including the nick). The 'erc-current-nick-highlight-type', 'erc-pal-highlight-type', diff --git a/lisp/erc/erc-compat.el b/lisp/erc/erc-compat.el new file mode 100644 index 00000000000..6b1da2f9054 --- /dev/null +++ b/lisp/erc/erc-compat.el @@ -0,0 +1,161 @@ +;;; erc-compat.el --- ERC compatibility code for older Emacsen -*- lexical-binding: t; -*- + +;; Copyright (C) 2002-2003, 2005-2021 Free Software Foundation, Inc. + +;; Author: Alex Schroeder +;; Maintainer: Amin Bandali +;; URL: https://www.emacswiki.org/emacs/ERC + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see . + +;;; Commentary: + +;; This mostly defines stuff that cannot be worked around easily. + +;;; Code: + +(require 'format-spec) + +;;;###autoload(autoload 'erc-define-minor-mode "erc-compat") +(define-obsolete-function-alias 'erc-define-minor-mode + #'define-minor-mode "28.1") + +(defun erc-decode-coding-string (s coding-system) + "Decode S using CODING-SYSTEM." + (declare (obsolete decode-coding-string "28.1")) + (decode-coding-string s coding-system t)) + +(defun erc-encode-coding-string (s coding-system) + "Encode S using CODING-SYSTEM. +Return the same string, if the encoding operation is trivial. +See `erc-encoding-coding-alist'." + (declare (obsolete encode-coding-string "28.1")) + (encode-coding-string s coding-system t)) + +(define-obsolete-function-alias 'erc-propertize #'propertize "28.1") +(define-obsolete-function-alias 'erc-view-mode-enter #'view-mode-enter "28.1") +(autoload 'help-function-arglist "help-fns") +(define-obsolete-function-alias 'erc-function-arglist #'help-function-arglist "28.1") +(define-obsolete-function-alias 'erc-delete-dups #'delete-dups "28.1") +(define-obsolete-function-alias 'erc-replace-regexp-in-string #'replace-regexp-in-string "28.1") + +(defun erc-set-write-file-functions (new-val) + (declare (obsolete nil "28.1")) + (set (make-local-variable 'write-file-functions) new-val)) + +(defvar erc-emacs-build-time + (if (or (stringp emacs-build-time) (not emacs-build-time)) + emacs-build-time + (format-time-string "%Y-%m-%d" emacs-build-time)) + "Time at which Emacs was dumped out, or nil if not available.") +(make-obsolete-variable 'erc-emacs-build-time 'emacs-build-time "28.1") +(define-obsolete-variable-alias 'erc-user-emacs-directory 'user-emacs-directory "28.1") + +(defun erc-replace-match-subexpression-in-string + (newtext string _match subexp _start &optional fixedcase literal) + "Replace the subexpression SUBEXP of the last match in STRING with NEWTEXT. +MATCH is the text which matched the subexpression (see `match-string'). +START is the beginning position of the last match (see `match-beginning'). +See `replace-match' for explanations of FIXEDCASE and LITERAL." + (declare (obsolete replace-match "28.1")) + (replace-match newtext fixedcase literal string subexp)) + +(define-obsolete-function-alias 'erc-with-selected-window + #'with-selected-window "28.1") +(define-obsolete-function-alias 'erc-cancel-timer #'cancel-timer "28.1") +(define-obsolete-function-alias 'erc-make-obsolete #'make-obsolete "28.1") +(define-obsolete-function-alias 'erc-make-obsolete-variable + #'make-obsolete-variable "28.1") + +;; Provide a simpler replacement for `cl-member-if' +(defun erc-member-if (predicate list) + "Find the first item satisfying PREDICATE in LIST. +Return the sublist of LIST whose car matches." + (declare (obsolete cl-member-if "28.1")) + (let ((ptr list)) + (catch 'found + (while ptr + (when (funcall predicate (car ptr)) + (throw 'found ptr)) + (setq ptr (cdr ptr)))))) + +;; Provide a simpler replacement for `cl-delete-if' +(defun erc-delete-if (predicate seq) + "Remove all items satisfying PREDICATE in SEQ. +This is a destructive function: it reuses the storage of SEQ +whenever possible." + (declare (obsolete cl-delete-if "28.1")) + ;; remove from car + (while (when (funcall predicate (car seq)) + (setq seq (cdr seq)))) + ;; remove from cdr + (let ((ptr seq) + (next (cdr seq))) + (while next + (when (funcall predicate (car next)) + (setcdr ptr (if (consp next) + (cdr next) + nil))) + (setq ptr (cdr ptr)) + (setq next (cdr ptr)))) + seq) + +;; Provide a simpler replacement for `cl-remove-if-not' +(defun erc-remove-if-not (predicate seq) + "Remove all items not satisfying PREDICATE in SEQ. +This is a non-destructive function; it makes a copy of SEQ to +avoid corrupting the original SEQ." + (declare (obsolete cl-remove-if-not "28.1")) + (let (newseq) + (dolist (el seq) + (when (funcall predicate el) + (setq newseq (cons el newseq)))) + (nreverse newseq))) + +;; Copied from cl-extra.el +(defun erc-subseq (seq start &optional end) + "Return the subsequence of SEQ from START to END. +If END is omitted, it defaults to the length of the sequence. +If START or END is negative, it counts from the end." + (declare (obsolete cl-subseq "28.1")) + (if (stringp seq) (substring seq start end) + (let (len) + (and end (< end 0) (setq end (+ end (setq len (length seq))))) + (if (< start 0) (setq start (+ start (or len (setq len (length seq)))))) + (cond ((listp seq) + (if (> start 0) (setq seq (nthcdr start seq))) + (if end + (let ((res nil)) + (while (>= (setq end (1- end)) start) + (push (pop seq) res)) + (nreverse res)) + (copy-sequence seq))) + (t + (or end (setq end (or len (length seq)))) + (let ((res (make-vector (max (- end start) 0) nil)) + (i 0)) + (while (< start end) + (aset res i (aref seq start)) + (setq i (1+ i) start (1+ start))) + res)))))) + +(provide 'erc-compat) + +;;; erc-compat.el ends here +;; +;; Local Variables: +;; generated-autoload-file: "erc-loaddefs.el" +;; End: diff --git a/lisp/obsolete/erc-compat.el b/lisp/obsolete/erc-compat.el deleted file mode 100644 index ef47ab793a7..00000000000 --- a/lisp/obsolete/erc-compat.el +++ /dev/null @@ -1,162 +0,0 @@ -;;; erc-compat.el --- ERC compatibility code for XEmacs -*- lexical-binding: t; -*- - -;; Copyright (C) 2002-2003, 2005-2021 Free Software Foundation, Inc. - -;; Author: Alex Schroeder -;; Maintainer: Amin Bandali -;; URL: https://www.emacswiki.org/emacs/ERC -;; Obsolete-since: 28.1 - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs. If not, see . - -;;; Commentary: - -;; This mostly defines stuff that cannot be worked around easily. - -;;; Code: - -(require 'format-spec) - -;;;###autoload(autoload 'erc-define-minor-mode "erc-compat") -(define-obsolete-function-alias 'erc-define-minor-mode - #'define-minor-mode "28.1") - -(defun erc-decode-coding-string (s coding-system) - "Decode S using CODING-SYSTEM." - (declare (obsolete decode-coding-string "28.1")) - (decode-coding-string s coding-system t)) - -(defun erc-encode-coding-string (s coding-system) - "Encode S using CODING-SYSTEM. -Return the same string, if the encoding operation is trivial. -See `erc-encoding-coding-alist'." - (declare (obsolete encode-coding-string "28.1")) - (encode-coding-string s coding-system t)) - -(define-obsolete-function-alias 'erc-propertize #'propertize "28.1") -(define-obsolete-function-alias 'erc-view-mode-enter #'view-mode-enter "28.1") -(autoload 'help-function-arglist "help-fns") -(define-obsolete-function-alias 'erc-function-arglist #'help-function-arglist "28.1") -(define-obsolete-function-alias 'erc-delete-dups #'delete-dups "28.1") -(define-obsolete-function-alias 'erc-replace-regexp-in-string #'replace-regexp-in-string "28.1") - -(defun erc-set-write-file-functions (new-val) - (declare (obsolete nil "28.1")) - (set (make-local-variable 'write-file-functions) new-val)) - -(defvar erc-emacs-build-time - (if (or (stringp emacs-build-time) (not emacs-build-time)) - emacs-build-time - (format-time-string "%Y-%m-%d" emacs-build-time)) - "Time at which Emacs was dumped out, or nil if not available.") -(make-obsolete-variable 'erc-emacs-build-time 'emacs-build-time "28.1") -(define-obsolete-variable-alias 'erc-user-emacs-directory 'user-emacs-directory "28.1") - -(defun erc-replace-match-subexpression-in-string - (newtext string _match subexp _start &optional fixedcase literal) - "Replace the subexpression SUBEXP of the last match in STRING with NEWTEXT. -MATCH is the text which matched the subexpression (see `match-string'). -START is the beginning position of the last match (see `match-beginning'). -See `replace-match' for explanations of FIXEDCASE and LITERAL." - (declare (obsolete replace-match "28.1")) - (replace-match newtext fixedcase literal string subexp)) - -(define-obsolete-function-alias 'erc-with-selected-window - #'with-selected-window "28.1") -(define-obsolete-function-alias 'erc-cancel-timer #'cancel-timer "28.1") -(define-obsolete-function-alias 'erc-make-obsolete #'make-obsolete "28.1") -(define-obsolete-function-alias 'erc-make-obsolete-variable - #'make-obsolete-variable "28.1") - -;; Provide a simpler replacement for `cl-member-if' -(defun erc-member-if (predicate list) - "Find the first item satisfying PREDICATE in LIST. -Return the sublist of LIST whose car matches." - (declare (obsolete cl-member-if "28.1")) - (let ((ptr list)) - (catch 'found - (while ptr - (when (funcall predicate (car ptr)) - (throw 'found ptr)) - (setq ptr (cdr ptr)))))) - -;; Provide a simpler replacement for `cl-delete-if' -(defun erc-delete-if (predicate seq) - "Remove all items satisfying PREDICATE in SEQ. -This is a destructive function: it reuses the storage of SEQ -whenever possible." - (declare (obsolete cl-delete-if "28.1")) - ;; remove from car - (while (when (funcall predicate (car seq)) - (setq seq (cdr seq)))) - ;; remove from cdr - (let ((ptr seq) - (next (cdr seq))) - (while next - (when (funcall predicate (car next)) - (setcdr ptr (if (consp next) - (cdr next) - nil))) - (setq ptr (cdr ptr)) - (setq next (cdr ptr)))) - seq) - -;; Provide a simpler replacement for `cl-remove-if-not' -(defun erc-remove-if-not (predicate seq) - "Remove all items not satisfying PREDICATE in SEQ. -This is a non-destructive function; it makes a copy of SEQ to -avoid corrupting the original SEQ." - (declare (obsolete cl-remove-if-not "28.1")) - (let (newseq) - (dolist (el seq) - (when (funcall predicate el) - (setq newseq (cons el newseq)))) - (nreverse newseq))) - -;; Copied from cl-extra.el -(defun erc-subseq (seq start &optional end) - "Return the subsequence of SEQ from START to END. -If END is omitted, it defaults to the length of the sequence. -If START or END is negative, it counts from the end." - (declare (obsolete cl-subseq "28.1")) - (if (stringp seq) (substring seq start end) - (let (len) - (and end (< end 0) (setq end (+ end (setq len (length seq))))) - (if (< start 0) (setq start (+ start (or len (setq len (length seq)))))) - (cond ((listp seq) - (if (> start 0) (setq seq (nthcdr start seq))) - (if end - (let ((res nil)) - (while (>= (setq end (1- end)) start) - (push (pop seq) res)) - (nreverse res)) - (copy-sequence seq))) - (t - (or end (setq end (or len (length seq)))) - (let ((res (make-vector (max (- end start) 0) nil)) - (i 0)) - (while (< start end) - (aset res i (aref seq start)) - (setq i (1+ i) start (1+ start))) - res)))))) - -(provide 'erc-compat) - -;;; erc-compat.el ends here -;; -;; Local Variables: -;; generated-autoload-file: "erc-loaddefs.el" -;; End: