unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Deleting functions and variables obsolete since 24.1--24.3
@ 2022-06-30 22:11 Stefan Kangas
  2022-06-30 23:15 ` Stefan Monnier
                   ` (2 more replies)
  0 siblings, 3 replies; 14+ messages in thread
From: Stefan Kangas @ 2022-06-30 22:11 UTC (permalink / raw)
  To: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 1887 bytes --]

Hi Emacs,

Emacs 24.3 was five major releases and over a decade ago.  In Bug#50999
we removed most libraries obsoleted in that version or older.  According
to our usual practices, this means that we could also remove any
functions or variables marked obsolete in that version or older.

However, it is a pretty big list, so I have divided up the work.
This first step (attached patch) removes *most* functions and variables
obsoleted in Emacs 24.1.

There are some items still remaining for 24.1.  If I couldn't pretty
much immediately figure out what was going on, I just left it alone.
This hopefully makes this first patch a bit easier to review.  The items
on this list should be doable by anyone, but ideally would get a closer
look by someone who is very familiar with the code:

    buffer-substring-filters          [Stefan Monnier]
    byte-compile-disable-print-circle [Stefan Monnier]
    compilation-parse-errors-function [Stefan Monnier]
    custom-show                       [Chong Yidong]
    font-lock-maximum-size            [Chong Yidong]
    font-lock-syntactic-keywords      [Stefan Monnier]
    pcomplete-parse-comint-arguments  [Chong Yidong]
    pcomplete-suffix-list             [Stefan Monnier]
    gnus-nntp-server                  [Stefan Monnier / Eric Abrahamsen]
    gnus-secondary-servers            [unknown: from Gnus trunk]
    nntp-authinfo-file                [unknown: from Gnus trunk]
    tooltip-use-echo-area             [Chong Yidong]

    (I have put the name of the person who obsoleted them in brackets
    for reference.)

Please chime up if you notice anything untowards, otherwise I will
push the attached to master in a week or two.  This list can be
reviewed before to the next release, but for now hopefully this
motivates any needed external updates.

The next step is the above items, and anything obsoleted in 24.2 and
24.3.  Thanks.

[-- Attachment #2: 0001-Remove-many-items-obsolete-since-24.1.patch --]
[-- Type: text/x-diff, Size: 75216 bytes --]

From 6a1a0483c560ef95292e487d5bd29e85de9e7bc8 Mon Sep 17 00:00:00 2001
From: Stefan Kangas <stefan@marxist.se>
Date: Fri, 3 Dec 2021 23:17:04 +0100
Subject: [PATCH] Remove many items obsolete since 24.1

* lisp/allout.el (allout-abbreviate-flattened-numbering)
(allout-mode-deactivate-hook):
* lisp/ansi-color.el (ansi-color-unfontify-region):
* lisp/auth-source.el (auth-source-hide-passwords)
(auth-source-user-or-password)
(auth-source-forget-user-or-password):
* lisp/cedet/data-debug.el (data-debug-map):
* lisp/cedet/semantic/grammar.el (semantic-grammar-syntax-table)
(semantic-grammar-map):
* lisp/chistory.el (command-history-map):
* lisp/comint.el (comint-dynamic-complete)
(comint-dynamic-complete-as-filename)
(comint-dynamic-simple-complete):
* lisp/dired-x.el (read-filename-at-point)
(dired-x-submit-report):
* lisp/dos-fns.el (register-name-alist, make-register)
(register-value, set-register-value, intdos, mode25, mode4350):
* lisp/emacs-lisp/chart.el (chart-map):
* lisp/emacs-lisp/package.el (package-menu-view-commentary):
* lisp/emacs-lock.el (toggle-emacs-lock, emacs-lock-from-exiting):
* lisp/erc/erc.el (erc-complete-word):
* lisp/eshell/em-cmpl.el (eshell-cmpl-suffix-list):
* lisp/eshell/esh-util.el (eshell-for):
* lisp/files.el (inhibit-first-line-modes-regexps)
(inhibit-first-line-modes-suffixes):
* lisp/gnus/gnus-msg.el (gnus-outgoing-message-group)
(gnus-debug-files, gnus-debug-exclude-variables):
* lisp/gnus/gnus-registry.el (gnus-registry-user-format-function-M):
* lisp/gnus/gnus.el (gnus-local-domain, gnus-carpal):
* lisp/gnus/nnimap.el (nnimap-split-rule):
* lisp/iimage.el (turn-on-iimage-mode):
* lisp/image.el (image-extension-data, image-library-alist):
* lisp/mail/emacsbug.el (report-emacs-bug-pretest-address):
* lisp/mail/mail-utils.el (rmail-dont-reply-to):
* lisp/mail/mailalias.el (mail-complete-function)
(mail-completion-at-point-function):
* lisp/mail/rmail.el (rmail-dont-reply-to-names)
(rmail-default-dont-reply-to-names):
* lisp/mail/sendmail.el (mail-mailer-swallows-blank-line)
(mail-sent-via):
* lisp/menu-bar.el (menu-bar-kill-ring-save):
* lisp/minibuffer.el (completion-annotate-function)
(minibuffer-local-filename-must-match-map):
* lisp/msb.el (msb-after-load-hooks):
* lisp/obsolete/eieio-compat.el (eieio-defmethod)
(eieio-defgeneric):
* lisp/obsolete/info-edit.el (Info-edit-map):
* lisp/obsolete/starttls.el (starttls-any-program-available):
* lisp/progmodes/cfengine.el (cfengine-mode-abbrevs):
* lisp/progmodes/cwarn.el (turn-on-cwarn-mode):
* lisp/progmodes/make-mode.el (makefile-complete):
* lisp/progmodes/meta-mode.el (meta-complete-symbol)
(meta-mode-map):
* lisp/progmodes/pascal.el (pascal-toggle-completions)
(pascal-last-completions, pascal-show-completions):
* lisp/progmodes/prolog.el (prolog-char-quote-workaround):
* lisp/progmodes/which-func.el (which-func-mode): [FUNCTION]
* lisp/simple.el (count-lines-region, minibuffer-completing-symbol):
* lisp/speedbar.el (speedbar-syntax-table, speedbar-key-map):
* lisp/strokes.el (strokes-report-bug):
* lisp/subr.el (condition-case-no-debug):
* lisp/term/ns-win.el (ns-alternatives-map)
(ns-store-cut-buffer-internal):
* lisp/term/w32-win.el (w32-default-color-map):
* lisp/term/x-win.el (x-cut-buffer-or-selection-value):
* lisp/textmodes/bibtex.el (bibtex-complete)
(bibtex-entry-field-alist):
* lisp/textmodes/reftex-index.el (reftex-index-map)
(reftex-index-phrases-map):
* lisp/textmodes/reftex-sel.el (reftex-select-label-map)
(reftex-select-bib-map):
* lisp/textmodes/reftex-toc.el (reftex-toc-map):
* lisp/vc/vc-hooks.el (vc-toggle-read-only):
* lisp/view.el (view-return-to-alist)
(view-return-to-alist-update): Remove many functions and variables
obsolete since 24.1.

* lisp/textmodes/bibtex.el (bibtex-entry-alist): Don't use above
removed variable 'bibtex-entry-field-alist'.
* lisp/cedet/data-debug.el (data-debug-edebug-expr)
(data-debug-eval-expression):
* lisp/emacs-lisp/trace.el (trace--read-args):
* lisp/files-x.el (read-file-local-variable-value):
* lisp/simple.el (read--expression): Don't use above removed variable
'minibuffer-completing-symbol'.
* src/w32fns.c (Fw32_default_color_map): Delete obsolete function.
(syms_of_w32fns): Delete defsubr for above defun.

* lisp/emacs-lisp/lisp.el (field-complete):
* lisp/eshell/em-cmpl.el (eshell-cmpl-initialize):
* lisp/gnus/gnus-msg.el (gnus-inews-insert-gcc):
* lisp/gnus/nnmail.el (nnmail-fancy-expiry-target):
* lisp/mail/mail-utils.el (mail-dont-reply-to):
* lisp/mail/sendmail.el (sendmail-send-it):
* lisp/mail/smtpmail.el (smtpmail-send-it):
* lisp/minibuffer.el (minibuffer-completion-help):
* lisp/progmodes/python.el: Don't use above removed items.
* lisp/emacs-lisp/eieio-core.el:
* lisp/mail/mailalias.el (mail-complete-alist): Doc fixes; don't refer
to above removed items.
; * etc/NEWS: List removed items.
---
 admin/notes/multi-tty          |  2 +-
 etc/NEWS                       | 42 +++++++++++++++++
 lisp/allout.el                 |  8 ----
 lisp/ansi-color.el             |  3 --
 lisp/auth-source.el            | 83 ----------------------------------
 lisp/cedet/data-debug.el       | 16 +++----
 lisp/cedet/semantic/grammar.el |  4 --
 lisp/chistory.el               |  6 +--
 lisp/comint.el                 | 70 ----------------------------
 lisp/dired-x.el                |  8 ----
 lisp/dos-fns.el                | 16 -------
 lisp/emacs-lisp/chart.el       |  1 -
 lisp/emacs-lisp/eieio-core.el  |  4 +-
 lisp/emacs-lisp/lisp.el        |  9 +---
 lisp/emacs-lisp/nadvice.el     |  2 +-
 lisp/emacs-lisp/package.el     |  3 --
 lisp/emacs-lisp/trace.el       |  7 ++-
 lisp/emacs-lock.el             | 11 -----
 lisp/erc/erc.el                |  2 -
 lisp/eshell/em-cmpl.el         | 11 -----
 lisp/eshell/esh-util.el        |  9 ----
 lisp/files-x.el                |  3 +-
 lisp/files.el                  |  6 ---
 lisp/gnus/gnus-msg.el          | 44 +-----------------
 lisp/gnus/gnus-registry.el     |  3 --
 lisp/gnus/gnus.el              | 15 ------
 lisp/gnus/nnimap.el            |  3 --
 lisp/iimage.el                 |  3 --
 lisp/image.el                  |  9 ----
 lisp/mail/emacsbug.el          |  3 --
 lisp/mail/mail-utils.el        | 11 +----
 lisp/mail/mailalias.el         | 29 +-----------
 lisp/mail/rmail.el             | 14 ------
 lisp/mail/sendmail.el          | 40 ----------------
 lisp/mail/smtpmail.el          |  2 -
 lisp/menu-bar.el               |  3 --
 lisp/minibuffer.el             | 25 +---------
 lisp/msb.el                    |  3 --
 lisp/obsolete/eieio-compat.el  | 15 ------
 lisp/obsolete/info-edit.el     |  1 -
 lisp/obsolete/starttls.el      |  3 --
 lisp/progmodes/cfengine.el     |  9 ----
 lisp/progmodes/cwarn.el        |  3 --
 lisp/progmodes/make-mode.el    |  1 -
 lisp/progmodes/meta-mode.el    |  3 --
 lisp/progmodes/pascal.el       | 15 ------
 lisp/progmodes/prolog.el       | 10 +---
 lisp/progmodes/python.el       |  1 -
 lisp/progmodes/which-func.el   |  3 --
 lisp/simple.el                 | 33 ++++++--------
 lisp/speedbar.el               |  4 --
 lisp/strokes.el                |  2 -
 lisp/subr.el                   |  3 --
 lisp/term/ns-win.el            |  6 ---
 lisp/term/w32-win.el           |  1 -
 lisp/term/x-win.el             |  3 --
 lisp/textmodes/bibtex.el       | 11 -----
 lisp/textmodes/reftex-index.el |  4 --
 lisp/textmodes/reftex-sel.el   |  4 --
 lisp/textmodes/reftex-toc.el   |  1 -
 lisp/vc/diff-mode.el           |  2 +-
 lisp/vc/vc-hooks.el            |  9 ----
 lisp/view.el                   | 46 -------------------
 src/w32fns.c                   |  8 ----
 64 files changed, 79 insertions(+), 655 deletions(-)

diff --git a/admin/notes/multi-tty b/admin/notes/multi-tty
index 9b3f1606a1..84bc1b77d4 100644
--- a/admin/notes/multi-tty
+++ b/admin/notes/multi-tty
@@ -474,7 +474,7 @@ THINGS TO DO
    definition.
 
    Exceptions found so far: x-select-text and
-   x-selection-value (old name: x-cut-buffer-or-selection-value).
+   x-selection-value.
 
 ** Have a look at fatal_error_hook.
 
diff --git a/etc/NEWS b/etc/NEWS
index d3dd896526..c666c8e36d 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -2150,6 +2150,48 @@ Use 'exif-parse-file' and 'exif-field' instead.
 ** 'insert-directory' alternatives should not change the free disk space line.
 This change is now applied in 'dired-insert-directory'.
 
+---
+** Some functions and variables obsolete since Emacs 24 have been removed:
+'Info-edit-map', 'allout-abbreviate-flattened-numbering',
+'allout-mode-deactivate-hook', 'ansi-color-unfontify-region',
+'auth-source-forget-user-or-password', 'auth-source-hide-passwords',
+'auth-source-user-or-password', 'bibtex-complete',
+'bibtex-entry-field-alist', 'cfengine-mode-abbrevs', 'chart-map',
+'comint-dynamic-complete', 'comint-dynamic-complete-as-filename',
+'comint-dynamic-simple-complete', 'command-history-map',
+'completion-annotate-function', 'condition-case-no-debug',
+'count-lines-region', 'data-debug-map', 'dired-x-submit-report',
+'eieio-defgeneric', 'eieio-defmethod', 'emacs-lock-from-exiting',
+'erc-complete-word', 'eshell-cmpl-suffix-list', 'eshell-for',
+'gnus-carpal', 'gnus-debug-exclude-variables', 'gnus-debug-files',
+'gnus-local-domain', 'gnus-outgoing-message-group',
+'gnus-registry-user-format-function-M', 'image-extension-data',
+'image-library-alist', 'inhibit-first-line-modes-regexps',
+'inhibit-first-line-modes-suffixes', 'intdos',
+'mail-complete-function', 'mail-completion-at-point-function',
+'mail-mailer-swallows-blank-line', 'mail-sent-via', 'make-register',
+'makefile-complete', 'menu-bar-kill-ring-save',
+'meta-complete-symbol', 'meta-mode-map',
+'minibuffer-completing-symbol',
+'minibuffer-local-filename-must-match-map', 'mode25', 'mode4350',
+'msb-after-load-hooks', 'nnimap-split-rule', 'ns-alternatives-map',
+'ns-store-cut-buffer-internal', 'package-menu-view-commentary',
+'pascal-last-completions', 'pascal-show-completions',
+'pascal-toggle-completions', 'prolog-char-quote-workaround',
+'read-filename-at-point', 'reftex-index-map',
+'reftex-index-phrases-map', 'reftex-select-bib-map',
+'reftex-select-label-map', 'reftex-toc-map', 'register-name-alist',
+'register-value', 'report-emacs-bug-pretest-address',
+'rmail-default-dont-reply-to-names', 'rmail-dont-reply-to',
+'rmail-dont-reply-to-names', 'semantic-grammar-map',
+'semantic-grammar-syntax-table', 'set-register-value',
+'speedbar-key-map', 'speedbar-syntax-table',
+'starttls-any-program-available', 'strokes-report-bug',
+'toggle-emacs-lock', 'turn-on-cwarn-mode', 'turn-on-iimage-mode',
+'vc-toggle-read-only', 'view-return-to-alist',
+'view-return-to-alist-update', 'w32-default-color-map' (function),
+'which-func-mode' (function), 'x-cut-buffer-or-selection-value'.
+
 ---
 ** Some functions and variables obsolete since Emacs 23 have been removed:
 'find-emacs-lisp-shadows', 'newsticker-cache-filename',
diff --git a/lisp/allout.el b/lisp/allout.el
index 4624c236f5..e15626ede8 100644
--- a/lisp/allout.el
+++ b/lisp/allout.el
@@ -733,8 +733,6 @@ allout-presentation-padding
 (put 'allout-presentation-padding 'safe-local-variable #'integerp)
 
 ;;;_  = allout-flattened-numbering-abbreviation
-(define-obsolete-variable-alias 'allout-abbreviate-flattened-numbering
-  'allout-flattened-numbering-abbreviation "24.1")
 (defcustom allout-flattened-numbering-abbreviation nil
   "If non-nil, `allout-flatten-exposed-to-buffer' abbreviates topic
 numbers to minimal amount with some context.  Otherwise, entire
@@ -1350,11 +1348,6 @@ allout-unprotected
 ;;;_   = allout-mode-hook
 (defvar allout-mode-hook nil
   "Hook run when allout mode starts.")
-;;;_   = allout-mode-deactivate-hook
-(define-obsolete-variable-alias 'allout-mode-deactivate-hook
-  'allout-mode-off-hook "24.1")
-(defvar allout-mode-deactivate-hook nil
-  "Hook run when allout mode ends.")
 ;;;_   = allout-exposure-category
 (defvar allout-exposure-category nil
   "Symbol for use as allout invisible-text overlay category.")
@@ -1779,7 +1772,6 @@ allout-mode
 without changes to the allout core.  Here are key ones:
 
 `allout-mode-hook'
-`allout-mode-deactivate-hook' (deprecated)
 `allout-mode-off-hook'
 `allout-exposure-change-functions'
 `allout-structure-added-functions'
diff --git a/lisp/ansi-color.el b/lisp/ansi-color.el
index d5db9ecfed..6f1c270c23 100644
--- a/lisp/ansi-color.el
+++ b/lisp/ansi-color.el
@@ -456,9 +456,6 @@ ansi-color-compilation-filter
       (_
        (ansi-color-apply-on-region compilation-filter-start (point))))))
 
-(define-obsolete-function-alias 'ansi-color-unfontify-region
-  'font-lock-default-unfontify-region "24.1")
-
 ;; Working with strings
 (defvar-local ansi-color-context nil
   "Context saved between two calls to `ansi-color-apply'.
diff --git a/lisp/auth-source.el b/lisp/auth-source.el
index fc62e36dfc..b6b035a1e8 100644
--- a/lisp/auth-source.el
+++ b/lisp/auth-source.el
@@ -164,8 +164,6 @@ auth-source-creation-defaults
 (defvar auth-source-creation-prompts nil
   "Default prompts for token values.  Usually let-bound.")
 
-(make-obsolete 'auth-source-hide-passwords nil "24.1")
-
 (defcustom auth-source-save-behavior 'ask
   "If set, auth-source will respect it for save behavior."
   :version "23.2" ;; No Gnus
@@ -2327,87 +2325,6 @@ auth-source-json-search
 
 ;;; older API
 
-;; (auth-source-user-or-password '("login" "password") "imap.myhost.com" t "tzz")
-
-;; deprecate the old interface
-(make-obsolete 'auth-source-user-or-password
-               'auth-source-search "24.1")
-(make-obsolete 'auth-source-forget-user-or-password
-               'auth-source-forget "24.1")
-
-(defun auth-source-user-or-password
-  (mode host port &optional username create-missing delete-existing)
-  "Find MODE (string or list of strings) matching HOST and PORT.
-
-DEPRECATED in favor of `auth-source-search'!
-
-USERNAME is optional and will be used as \"login\" in a search
-across the Secret Service API (see secrets.el) if the resulting
-items don't have a username.  This means that if you search for
-username \"joe\" and it matches an item but the item doesn't have
-a :user attribute, the username \"joe\" will be returned.
-
-A non-nil DELETE-EXISTING means deleting any matching password
-entry in the respective sources.  This is useful only when
-CREATE-MISSING is non-nil as well; the intended use case is to
-remove wrong password entries.
-
-If no matching entry is found, and CREATE-MISSING is non-nil,
-the password will be retrieved interactively, and it will be
-stored in the password database which matches best (see
-`auth-sources').
-
-MODE can be \"login\" or \"password\"."
-  (auth-source-do-debug
-   "auth-source-user-or-password: DEPRECATED get %s for %s (%s) + user=%s"
-   mode host port username)
-
-  (let* ((listy (listp mode))
-         (mode (if listy mode (list mode)))
-         ;; (cname (if username
-         ;;            (format "%s %s:%s %s" mode host port username)
-         ;;          (format "%s %s:%s" mode host port)))
-         (search (list :host host :port port))
-         (search (if username (append search (list :user username)) search))
-         (search (if create-missing
-                     (append search (list :create t))
-                   search))
-         (search (if delete-existing
-                     (append search (list :delete t))
-                   search))
-         ;; (found (if (not delete-existing)
-         ;;            (gethash cname auth-source-cache)
-         ;;          (remhash cname auth-source-cache)
-         ;;          nil)))
-         (found nil))
-    (if found
-        (progn
-          (auth-source-do-debug
-           "auth-source-user-or-password: DEPRECATED cached %s=%s for %s (%s) + %s"
-           mode
-           ;; don't show the password
-           (if (and (member "password" mode) t)
-               "SECRET"
-             found)
-           host port username)
-          found)                        ; return the found data
-      ;; else, if not found, search with a max of 1
-      (let ((choice (nth 0 (apply #'auth-source-search
-                                  (append '(:max 1) search)))))
-        (when choice
-          (dolist (m mode)
-            (cond
-             ((equal "password" m)
-              (push (if (plist-get choice :secret)
-                        (funcall (plist-get choice :secret))
-                      nil) found))
-             ((equal "login" m)
-              (push (plist-get choice :user) found)))))
-        (setq found (nreverse found))
-        (setq found (if listy found (car-safe found)))))
-
-    found))
-
 (defun auth-source-user-and-password (host &optional user)
   (let* ((auth-info (car
                      (if user
diff --git a/lisp/cedet/data-debug.el b/lisp/cedet/data-debug.el
index 0edc853edd..e7635c0aec 100644
--- a/lisp/cedet/data-debug.el
+++ b/lisp/cedet/data-debug.el
@@ -854,7 +854,6 @@ data-debug-mode-syntax-table
     table)
   "Syntax table used in data-debug macro buffers.")
 
-(define-obsolete-variable-alias 'data-debug-map 'data-debug-mode-map "24.1")
 (defvar data-debug-mode-map
   (let ((km (make-sparse-keymap)))
     (suppress-keymap km)
@@ -1028,11 +1027,9 @@ data-debug-show-stuff
 (defun data-debug-edebug-expr (expr)
   "Dump out the contents of some expression EXPR in edebug with ddebug."
   (interactive
-   (list (let ((minibuffer-completing-symbol t))
-	   (read-from-minibuffer "Eval: "
-				 nil read-expression-map t
-				 'read-expression-history))
-	 ))
+   (list (read-from-minibuffer "Eval: "
+                               nil read-expression-map t
+                               'read-expression-history)))
   (let ((v (eval expr t)))
     (if (not v)
 	(message "Expression %s is nil." expr)
@@ -1043,10 +1040,9 @@ data-debug-eval-expression
 If the result is something simple, show it in the echo area.
 If the result is a list or vector, then use the data debugger to display it."
   (interactive
-   (list (let ((minibuffer-completing-symbol t))
-	   (read-from-minibuffer "Eval: "
-				 nil read-expression-map t
-				 'read-expression-history))))
+   (list (read-from-minibuffer "Eval: "
+                               nil read-expression-map t
+                               'read-expression-history)))
 
   (let (result)
     (if (null eval-expression-debug-on-error)
diff --git a/lisp/cedet/semantic/grammar.el b/lisp/cedet/semantic/grammar.el
index 74d4a229fa..97456265ea 100644
--- a/lisp/cedet/semantic/grammar.el
+++ b/lisp/cedet/semantic/grammar.el
@@ -1123,8 +1123,6 @@ semantic--grammar-macros-matcher
 ;;;; Define major mode
 ;;;;
 
-(define-obsolete-variable-alias 'semantic-grammar-syntax-table
-  'semantic-grammar-mode-syntax-table "24.1")
 (defvar semantic-grammar-mode-syntax-table
   (let ((table (make-syntax-table (standard-syntax-table))))
     (modify-syntax-entry ?\: "."     table) ;; COLON
@@ -1197,8 +1195,6 @@ semantic-grammar-mode-keywords
   semantic-grammar-mode-keywords-1
   "Font Lock keywords used to highlight Semantic grammar buffers.")
 
-(define-obsolete-variable-alias 'semantic-grammar-map
-  'semantic-grammar-mode-map "24.1")
 (defvar semantic-grammar-mode-map
   (let ((km (make-sparse-keymap)))
 
diff --git a/lisp/chistory.el b/lisp/chistory.el
index dd0f499743..9dce60a19f 100644
--- a/lisp/chistory.el
+++ b/lisp/chistory.el
@@ -119,8 +119,6 @@ list-command-history
 	  (error "No command history")
 	(command-history-mode)))))
 
-(define-obsolete-variable-alias 'command-history-map
-  'command-history-mode-map "24.1")
 (defvar command-history-mode-map
   (let ((map (make-sparse-keymap)))
     (set-keymap-parent map (make-composed-keymap lisp-mode-shared-map
@@ -165,11 +163,11 @@ command-history
   "Examine commands from variable `command-history' in a buffer.
 The number of commands listed is controlled by `list-command-history-max'.
 The command history is filtered by `list-command-history-filter' if non-nil.
-Use \\<command-history-map>\\[command-history-repeat] to repeat the command on the current line.
+Use \\<command-history-mode-map>\\[command-history-repeat] to repeat the command on the current line.
 
 Otherwise much like Emacs-Lisp Mode except that there is no self-insertion
 and digits provide prefix arguments.  Tab does not indent.
-\\{command-history-map}
+\\{command-history-mode-map}
 
 This command always recompiles the Command History listing
 and runs the normal hook `command-history-hook'."
diff --git a/lisp/comint.el b/lisp/comint.el
index 3da61fb992..db7cfa1a20 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -3298,10 +3298,6 @@ comint--requote-argument
 (defun comint-completion-at-point ()
   (run-hook-with-args-until-success 'comint-dynamic-complete-functions))
 
-(define-obsolete-function-alias
-  'comint-dynamic-complete
-  'completion-at-point "24.1")
-
 (defun comint-dynamic-complete-filename ()
   "Dynamically complete the filename at point.
 Completes if after a filename.
@@ -3382,13 +3378,6 @@ comint--complete-file-name-data
                      (goto-char (match-end 0))
                    (insert filesuffix)))))))))
 
-(defun comint-dynamic-complete-as-filename ()
-  "Dynamically complete at point as a filename.
-See `comint-dynamic-complete-filename'.  Returns t if successful."
-  (declare (obsolete comint-filename-completion "24.1"))
-  (let ((data (comint--complete-file-name-data)))
-    (completion-in-region (nth 0 data) (nth 1 data) (nth 2 data))))
-
 (defun comint-replace-by-expanded-filename ()
   "Dynamically expand and complete the filename at point.
 Replace the filename with an expanded, canonicalized and
@@ -3403,65 +3392,6 @@ comint-replace-by-expanded-filename
       (replace-match (expand-file-name filename) t t)
       (comint-dynamic-complete-filename))))
 
-
-(defun comint-dynamic-simple-complete (stub candidates)
-  "Dynamically complete STUB from CANDIDATES list.
-This function inserts completion characters at point by
-completing STUB from the strings in CANDIDATES.  If completion is
-ambiguous, possibly show a completions listing in a separate
-buffer.
-
-Return nil if no completion was inserted.
-Return `sole' if completed with the only completion match.
-Return `shortest' if completed with the shortest match.
-Return `partial' if completed as far as possible.
-Return `listed' if a completion listing was shown.
-
-See also `comint-dynamic-complete-filename'."
-  (declare (obsolete completion-in-region "24.1"))
-  (let* ((completion-ignore-case (memq system-type '(ms-dos windows-nt cygwin)))
-	 (minibuffer-p (window-minibuffer-p))
-	 (suffix (cond ((not comint-completion-addsuffix) "")
-		       ((not (consp comint-completion-addsuffix)) " ")
-		       (t (cdr comint-completion-addsuffix))))
-	 (completions (all-completions stub candidates)))
-    (cond ((null completions)
-	   (if minibuffer-p
-	       (minibuffer-message "No completions of %s" stub)
-	     (message "No completions of %s" stub))
-	   nil)
-	  ((= 1 (length completions))	; Gotcha!
-	   (let ((completion (car completions)))
-	     (if (string-equal completion stub)
-		 (unless minibuffer-p
-		   (message "Sole completion"))
-	       (insert (substring completion (length stub)))
-	       (unless minibuffer-p
-		 (message "Completed")))
-	     (insert suffix)
-	     'sole))
-	  (t				; There's no unique completion.
-	   (let ((completion (try-completion stub candidates)))
-	     ;; Insert the longest substring.
-	     (insert (substring completion (length stub)))
-	     (cond ((and comint-completion-recexact comint-completion-addsuffix
-			 (string-equal stub completion)
-			 (member completion completions))
-		    ;; It's not unique, but user wants shortest match.
-		    (insert suffix)
-		    (unless minibuffer-p
-		      (message "Completed shortest"))
-		    'shortest)
-		   ((or comint-completion-autolist
-			(string-equal stub completion))
-		    ;; It's not unique, list possible completions.
-		    (comint-dynamic-list-completions completions stub)
-		    'listed)
-		   (t
-		    (unless minibuffer-p
-		      (message "Partially completed"))
-		    'partial)))))))
-
 (defun comint-dynamic-list-filename-completions ()
   "Display a list of possible completions for the filename at point."
   (interactive)
diff --git a/lisp/dired-x.el b/lisp/dired-x.el
index ed7f71e006..b8d77f14b2 100644
--- a/lisp/dired-x.el
+++ b/lisp/dired-x.el
@@ -1589,14 +1589,6 @@ dired-x-read-filename-at-point
                         nil (file-name-nondirectory guess)))
     (read-file-name prompt default-directory)))
 
-(define-obsolete-function-alias 'read-filename-at-point
-  'dired-x-read-filename-at-point "24.1") ; is this even needed?
-
-\f
-;;; Epilog
-
-(define-obsolete-function-alias 'dired-x-submit-report 'report-emacs-bug "24.1")
-
 \f
 ;; As Barry Warsaw would say: "This might be useful..."
 (provide 'dired-x)
diff --git a/lisp/dos-fns.el b/lisp/dos-fns.el
index ea54eea603..edbe9e494f 100644
--- a/lisp/dos-fns.el
+++ b/lisp/dos-fns.el
@@ -231,9 +231,6 @@ dos-reevaluate-defcustoms
 
 (add-hook 'before-init-hook 'dos-reevaluate-defcustoms)
 
-(define-obsolete-variable-alias
-  'register-name-alist 'dos-register-name-alist "24.1")
-
 (defvar dos-register-name-alist
   '((ax . 0) (bx . 1) (cx . 2) (dx . 3) (si . 4) (di . 5)
     (cflag . 6) (flags . 7)
@@ -243,8 +240,6 @@ dos-register-name-alist
 (defun dos-make-register ()
   (make-vector 8 0))
 
-(define-obsolete-function-alias 'make-register 'dos-make-register "24.1")
-
 (defun dos-register-value (regs name)
   (let ((where (cdr (assoc name dos-register-name-alist))))
     (cond ((consp where)
@@ -256,8 +251,6 @@ dos-register-value
 	   (aref regs where))
 	  (t nil))))
 
-(define-obsolete-function-alias 'register-value 'dos-register-value "24.1")
-
 (defun dos-set-register-value (regs name value)
   (and (numberp value)
        (>= value 0)
@@ -274,9 +267,6 @@ dos-set-register-value
 		(aset regs where (logand value 65535))))))
   regs)
 
-(define-obsolete-function-alias
-  'set-register-value 'dos-set-register-value "24.1")
-
 (defsubst dos-intdos (regs)
   "Issue the DOS Int 21h with registers REGS.
 
@@ -284,8 +274,6 @@ dos-intdos
 and `dos-set-register-value', which see."
   (int86 33 regs))
 
-(define-obsolete-function-alias 'intdos 'dos-intdos "24.1")
-
 ;; Backward compatibility for obsolescent functions which
 ;; set screen size.
 
@@ -294,8 +282,6 @@ dos-mode25
   (interactive)
   (set-frame-size (selected-frame) 80 25))
 
-(define-obsolete-function-alias 'mode25 'dos-mode25 "24.1")
-
 (defun dos-mode4350 ()
   "Change the number of rows to 43 or 50.
 Emacs always tries to set the screen height to 50 rows first.
@@ -307,8 +293,6 @@ dos-mode4350
       nil  ; the original built-in function returned nil
     (set-frame-size (selected-frame) 80 43)))
 
-(define-obsolete-function-alias 'mode4350 'dos-mode4350 "24.1")
-
 (provide 'dos-fns)
 
 ;;; dos-fns.el ends here
diff --git a/lisp/emacs-lisp/chart.el b/lisp/emacs-lisp/chart.el
index 29fbcce773..716b236d3a 100644
--- a/lisp/emacs-lisp/chart.el
+++ b/lisp/emacs-lisp/chart.el
@@ -63,7 +63,6 @@
 (eval-when-compile (require 'cl-generic))
 
 ;;; Code:
-(define-obsolete-variable-alias 'chart-map 'chart-mode-map "24.1")
 (defvar chart-mode-map (make-sparse-keymap) "Keymap used in chart mode.")
 
 (defvar-local chart-local-object nil
diff --git a/lisp/emacs-lisp/eieio-core.el b/lisp/emacs-lisp/eieio-core.el
index d9864e6965..25f2dd4098 100644
--- a/lisp/emacs-lisp/eieio-core.el
+++ b/lisp/emacs-lisp/eieio-core.el
@@ -24,8 +24,8 @@
 ;;; Commentary:
 ;;
 ;; The "core" part of EIEIO is the implementation for the object
-;; system (such as eieio-defclass, or eieio-defmethod) but not the
-;; base classes for the object system, which are defined in EIEIO.
+;; system (such as eieio-defclass-internal, or cl-defmethod) but not
+;; the base classes for the object system, which are defined in EIEIO.
 ;;
 ;; See the commentary for eieio.el for more about EIEIO itself.
 
diff --git a/lisp/emacs-lisp/lisp.el b/lisp/emacs-lisp/lisp.el
index 641ce0d5c0..4b85414943 100644
--- a/lisp/emacs-lisp/lisp.el
+++ b/lisp/emacs-lisp/lisp.el
@@ -943,14 +943,7 @@ check-parens
 (defun field-complete (table &optional predicate)
   (declare (obsolete completion-in-region "24.4"))
   (let ((minibuffer-completion-table table)
-        (minibuffer-completion-predicate predicate)
-        ;; This made sense for lisp-complete-symbol, but for
-        ;; field-complete, this is out of place.  --Stef
-        ;; (completion-annotate-function
-        ;;  (unless (eq predicate 'fboundp)
-        ;;    (lambda (str)
-        ;;      (if (fboundp (intern-soft str)) " <f>"))))
-        )
+        (minibuffer-completion-predicate predicate))
     (call-interactively 'minibuffer-complete)))
 
 (defun lisp-complete-symbol (&optional _predicate)
diff --git a/lisp/emacs-lisp/nadvice.el b/lisp/emacs-lisp/nadvice.el
index 00c9e5438b..42153c54d4 100644
--- a/lisp/emacs-lisp/nadvice.el
+++ b/lisp/emacs-lisp/nadvice.el
@@ -313,7 +313,7 @@ nadvice--make-docstring
 (defmacro add-function (how place function &optional props)
   ;; TODO:
   ;; - maybe let `how' specify some kind of predicate and use it
-  ;;   to implement things like mode-local or eieio-defmethod.
+  ;;   to implement things like mode-local or cl-defmethod.
   ;;   Of course, that only makes sense if the predicates of all advices can
   ;;   be combined and made more efficient.
   ;; :before is like a normal add-hook on a normal hook.
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index 2c43db9899..01c3af665a 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -3520,9 +3520,6 @@ package-menu-quick-help
   (message (mapconcat #'package--prettify-quick-help-key
                       package--quick-help-keys "\n")))
 
-(define-obsolete-function-alias
-  'package-menu-view-commentary 'package-menu-describe-package "24.1")
-
 (defun package-menu-get-status ()
   "Return status text of package at point in Package Menu."
   (package--ensure-package-menu-mode)
diff --git a/lisp/emacs-lisp/trace.el b/lisp/emacs-lisp/trace.el
index 165f5c7bfe..348cce5959 100644
--- a/lisp/emacs-lisp/trace.el
+++ b/lisp/emacs-lisp/trace.el
@@ -275,10 +275,9 @@ trace--read-args
      (list
       (read-buffer (format-prompt "Output to buffer" trace-buffer))
       (let ((exp
-             (let ((minibuffer-completing-symbol t))
-               (read-from-minibuffer "Context expression: "
-                                     nil read-expression-map t
-                                     'read-expression-history))))
+             (read-from-minibuffer "Context expression: "
+                                   nil read-expression-map t
+                                   'read-expression-history)))
         (lambda ()
           (let ((print-circle t)
                 (print-escape-newlines t))
diff --git a/lisp/emacs-lock.el b/lisp/emacs-lock.el
index 3d2eda99a9..1818e22a92 100644
--- a/lisp/emacs-lock.el
+++ b/lisp/emacs-lock.el
@@ -88,9 +88,6 @@ emacs-lock-locked-buffer-functions
   :group 'emacs-lock
   :version "24.3")
 
-(define-obsolete-variable-alias 'emacs-lock-from-exiting
-  'emacs-lock-mode "24.1")
-
 (defvar-local emacs-lock-mode nil
   "If non-nil, the current buffer is locked.
 It can be one of the following values:
@@ -247,14 +244,6 @@ emacs-lock-unload-function
     ;; continue standard unloading
     nil))
 
-;;; Compatibility
-
-(defun toggle-emacs-lock ()
-  "Toggle `emacs-lock-from-exiting' for the current buffer."
-  (declare (obsolete emacs-lock-mode "24.1"))
-  (interactive)
-  (call-interactively 'emacs-lock-mode))
-
 (provide 'emacs-lock)
 
 ;;; emacs-lock.el ends here
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index ff482d4933..fb5a90fa61 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -4231,8 +4231,6 @@ erc-kill-input
 (defun erc-complete-word-at-point ()
   (run-hook-with-args-until-success 'erc-complete-functions))
 
-(define-obsolete-function-alias 'erc-complete-word #'completion-at-point "24.1")
-
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;;                        IRC SERVER INPUT HANDLING
diff --git a/lisp/eshell/em-cmpl.el b/lisp/eshell/em-cmpl.el
index f4c1302629..822cc94149 100644
--- a/lisp/eshell/em-cmpl.el
+++ b/lisp/eshell/em-cmpl.el
@@ -158,14 +158,6 @@ eshell-cmpl-autolist
   (eshell-cmpl--custom-variable-docstring 'pcomplete-autolist)
   :type (get 'pcomplete-autolist 'custom-type))
 
-(defcustom eshell-cmpl-suffix-list (list ?/ ?:)
-  (eshell-cmpl--custom-variable-docstring 'pcomplete-suffix-list)
-  :type (get 'pcomplete-suffix-list 'custom-type)
-  :group 'pcomplete)
-;; Only labeled obsolete in 26.1, but all it does it set
-;; pcomplete-suffix-list, which is itself obsolete since 24.1.
-(make-obsolete-variable 'eshell-cmpl-suffix-list nil "24.1")
-
 (defcustom eshell-cmpl-recexact nil
   (eshell-cmpl--custom-variable-docstring 'pcomplete-recexact)
   :type (get 'pcomplete-recexact 'custom-type))
@@ -262,9 +254,6 @@ eshell-cmpl-initialize
               eshell-cmpl-ignore-case)
   (setq-local pcomplete-autolist
               eshell-cmpl-autolist)
-  (if (boundp 'pcomplete-suffix-list)
-      (setq-local pcomplete-suffix-list
-                  eshell-cmpl-suffix-list))
   (setq-local pcomplete-recexact
               eshell-cmpl-recexact)
   (setq-local pcomplete-man-function
diff --git a/lisp/eshell/esh-util.el b/lisp/eshell/esh-util.el
index 6b86498399..5144e30512 100644
--- a/lisp/eshell/esh-util.el
+++ b/lisp/eshell/esh-util.el
@@ -301,15 +301,6 @@ eshell-to-flat-string
       (setq text (replace-match " " t t text)))
     text))
 
-(defmacro eshell-for (for-var for-list &rest forms)
-  "Iterate through a list."
-  (declare (obsolete dolist "24.1") (indent 2))
-  `(let ((list-iter ,for-list))
-     (while list-iter
-       (let ((,for-var (car list-iter)))
-	 ,@forms)
-       (setq list-iter (cdr list-iter)))))
-
 (define-obsolete-function-alias 'eshell-flatten-list #'flatten-tree "27.1")
 
 (defun eshell-stringify (object)
diff --git a/lisp/files-x.el b/lisp/files-x.el
index 4db6fbd22c..740603fa82 100644
--- a/lisp/files-x.el
+++ b/lisp/files-x.el
@@ -81,8 +81,7 @@ read-file-local-variable-value
     (let ((default (format "%S"
                            (cond ((eq variable 'unibyte) t)
                                  ((boundp variable)
-                                  (symbol-value variable)))))
-          (minibuffer-completing-symbol t))
+                                  (symbol-value variable))))))
       (read-from-minibuffer (format "Add %s with value: " variable)
                             nil read-expression-map t
                             'set-variable-value-history
diff --git a/lisp/files.el b/lisp/files.el
index 1295c24c93..47375b9c1d 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -3118,9 +3118,6 @@ interpreter-mode-alist
 
 See also `auto-mode-alist'.")
 
-(define-obsolete-variable-alias 'inhibit-first-line-modes-regexps
-  'inhibit-file-local-variables-regexps "24.1")
-
 ;; TODO really this should be a list of modes (eg tar-mode), not regexps,
 ;; because we are duplicating info from auto-mode-alist.
 ;; TODO many elements of this list are also in auto-coding-alist.
@@ -3141,9 +3138,6 @@ inhibit-local-variables-regexps
 not appropriate for the containing file.
 The function `inhibit-local-variables-p' uses this.")
 
-(define-obsolete-variable-alias 'inhibit-first-line-modes-suffixes
-  'inhibit-local-variables-suffixes "24.1")
-
 (defvar inhibit-local-variables-suffixes nil
   "List of regexps matching suffixes to remove from file names.
 The function `inhibit-local-variables-p' uses this: when checking
diff --git a/lisp/gnus/gnus-msg.el b/lisp/gnus/gnus-msg.el
index 17a87134be..3fc5ce2408 100644
--- a/lisp/gnus/gnus-msg.el
+++ b/lisp/gnus/gnus-msg.el
@@ -52,24 +52,6 @@ gnus-post-method
 		 (const current)
 		 (sexp :tag "Methods" ,gnus-select-method)))
 
-(defcustom gnus-outgoing-message-group nil
-  "All outgoing messages will be put in this group.
-If you want to store all your outgoing mail and articles in the group
-\"nnml:archive\", you set this variable to that value.  This variable
-can also be a list of group names.
-
-If you want to have greater control over what group to put each
-message in, you can set this variable to a function that checks the
-current newsgroup name and then returns a suitable group name (or list
-of names)."
-  :group 'gnus-message
-  :type '(choice (const nil)
-		 (function)
-		 (string :tag "Group")
-		 (repeat :tag "List of groups" (string :tag "Group"))))
-
-(make-obsolete-variable 'gnus-outgoing-message-group 'gnus-message-archive-group "24.1")
-
 (defcustom gnus-mailing-list-groups nil
   "If non-nil a regexp matching groups that are really mailing lists.
 This is useful when you're reading a mailing list that has been
@@ -215,30 +197,6 @@ gnus-gcc-self-resent-messages
  :parameter-document       "\
 List of charsets that are permitted to be unencoded.")
 
-(defcustom gnus-debug-files
-  '("gnus.el" "gnus-sum.el" "gnus-group.el"
-    "gnus-art.el" "gnus-start.el" "gnus-async.el"
-    "gnus-msg.el" "gnus-score.el" "gnus-win.el" "gnus-topic.el"
-    "gnus-agent.el" "gnus-cache.el" "gnus-srvr.el"
-    "mm-util.el" "mm-decode.el" "nnmail.el" "message.el")
-  "Files whose variables will be reported in `gnus-bug'."
-  :version "22.1"
-  :group 'gnus-message
-  :type '(repeat file))
-
-(make-obsolete-variable 'gnus-debug-files "it is no longer used." "24.1")
-
-(defcustom gnus-debug-exclude-variables
-  '(mm-mime-mule-charset-alist
-    nnmail-split-fancy message-minibuffer-local-map)
-  "Variables that should not be reported in `gnus-bug'."
-  :version "22.1"
-  :group 'gnus-message
-  :type '(repeat variable))
-
-(make-obsolete-variable
- 'gnus-debug-exclude-variables "it is no longer used." "24.1")
-
 (defcustom gnus-discouraged-post-methods
   '(nndraft nnml nnimap nnmaildir nnmh nnfolder nndir)
   "A list of back ends that are not used in \"real\" newsgroups.
@@ -1665,7 +1623,7 @@ gnus-inews-do-gcc
 (defun gnus-inews-insert-gcc (&optional group)
   "Insert the Gcc to say where the article is to be archived."
   (let* ((group (or group gnus-newsgroup-name))
-         (var (or gnus-outgoing-message-group gnus-message-archive-group))
+         (var gnus-message-archive-group)
 	 (gcc-self-val
 	  (and group (not (gnus-virtual-group-p group))
 	       (gnus-group-find-parameter group 'gcc-self t)))
diff --git a/lisp/gnus/gnus-registry.el b/lisp/gnus/gnus-registry.el
index 8cefb09b66..ceeb184854 100644
--- a/lisp/gnus/gnus-registry.el
+++ b/lisp/gnus/gnus-registry.el
@@ -1004,9 +1004,6 @@ gnus-registry-install-shortcuts
                nil
                (cons "Registry Marks" gnus-registry-misc-menus)))))
 
-(define-obsolete-function-alias 'gnus-registry-user-format-function-M
-  #'gnus-registry-article-marks-to-chars "24.1")
-
 ;; use like this:
 ;; (defalias 'gnus-user-format-function-M #'gnus-registry-article-marks-to-chars)
 (defun gnus-registry-article-marks-to-chars (headers)
diff --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el
index f60c11f985..3ca751efe1 100644
--- a/lisp/gnus/gnus.el
+++ b/lisp/gnus/gnus.el
@@ -1130,16 +1130,6 @@ gnus-secondary-select-methods
   :group 'gnus-server
   :type '(repeat gnus-select-method))
 
-(defcustom gnus-local-domain nil
-  "Local domain name without a host name.
-The DOMAINNAME environment variable is used instead if it is defined.
-If the function `system-name' returns the full Internet name, there is
-no need to set this variable."
-  :group 'gnus-message
-  :type '(choice (const :tag "default" nil)
-		 string))
-(make-obsolete-variable 'gnus-local-domain nil "24.1")
-
 ;; Customization variables
 
 (defcustom gnus-refer-article-method 'current
@@ -2316,11 +2306,6 @@ gnus-ephemeral-servers
 (defvar gnus-server-method-cache nil)
 (defvar gnus-extended-servers nil)
 
-;; The carpal mode has been removed, but define the variable for
-;; backwards compatibility.
-(defvar gnus-carpal nil)
-(make-obsolete-variable 'gnus-carpal nil "24.1")
-
 (defvar gnus-agent-fetching nil
   "Whether Gnus agent is in fetching mode.")
 
diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el
index a69b5c7727..44fd620d29 100644
--- a/lisp/gnus/nnimap.el
+++ b/lisp/gnus/nnimap.el
@@ -95,9 +95,6 @@ nnimap-split-fancy
 (defvoo nnimap-unsplittable-articles '(%Deleted %Seen)
   "Articles with the flags in the list will not be considered when splitting.")
 
-(make-obsolete-variable 'nnimap-split-rule "see `nnimap-split-methods'."
-                        "24.1")
-
 (defvoo nnimap-authenticator nil
   "How nnimap authenticate itself to the server.
 Possible choices are nil (use default methods), `anonymous',
diff --git a/lisp/iimage.el b/lisp/iimage.el
index 8a765d5e5d..baeb4bb6a7 100644
--- a/lisp/iimage.el
+++ b/lisp/iimage.el
@@ -87,9 +87,6 @@ iimage-recenter
   (iimage-mode-buffer t)
   (recenter-top-bottom arg))
 
-;;;###autoload
-(define-obsolete-function-alias 'turn-on-iimage-mode 'iimage-mode "24.1")
-
 (defun turn-off-iimage-mode ()
   "Unconditionally turn off iimage mode."
   (interactive)
diff --git a/lisp/image.el b/lisp/image.el
index e90cccaa09..bdaaec608e 100644
--- a/lisp/image.el
+++ b/lisp/image.el
@@ -446,15 +446,6 @@ image-type
     (error "Invalid image type `%s'" type))
   type)
 
-
-(if (fboundp 'image-metadata)           ; eg not --without-x
-    (define-obsolete-function-alias 'image-extension-data
-      'image-metadata "24.1"))
-
-(define-obsolete-variable-alias
-    'image-library-alist
-    'dynamic-library-alist "24.1")
-
 ;;;###autoload
 (defun image-type-available-p (type)
   "Return t if image type TYPE is available.
diff --git a/lisp/mail/emacsbug.el b/lisp/mail/emacsbug.el
index 9d2e20ae04..d743802ead 100644
--- a/lisp/mail/emacsbug.el
+++ b/lisp/mail/emacsbug.el
@@ -42,9 +42,6 @@ emacsbug
   :group 'maint
   :group 'mail)
 
-(define-obsolete-variable-alias 'report-emacs-bug-pretest-address
-  'report-emacs-bug-address "24.1")
-
 (defcustom report-emacs-bug-no-confirmation nil
   "If non-nil, suppress the confirmations asked for the sake of novice users."
   :type 'boolean)
diff --git a/lisp/mail/mail-utils.el b/lisp/mail/mail-utils.el
index 952970d07c..9ea2cc92e9 100644
--- a/lisp/mail/mail-utils.el
+++ b/lisp/mail/mail-utils.el
@@ -239,12 +239,8 @@ mail-dont-reply-to
   ;; Or just set the default directly in the defcustom.
   (if (null mail-dont-reply-to-names)
       (setq mail-dont-reply-to-names
-	     ;; `rmail-default-dont-reply-to-names' is obsolete.
-	    (let ((a (bound-and-true-p rmail-default-dont-reply-to-names))
-		  (b (if (> (length user-mail-address) 0)
-			 (concat "\\`" (regexp-quote user-mail-address) "\\'"))))
-	      (cond ((and a b) (concat a "\\|" b))
-		    ((or a b))))))
+            (if (> (length user-mail-address) 0)
+                (concat "\\`" (regexp-quote user-mail-address) "\\'"))))
   ;; Split up DESTINATIONS and match each element separately.
   (let ((start-pos 0) (cur-pos 0)
 	(case-fold-search t))
@@ -281,9 +277,6 @@ mail-dont-reply-to
       (substring destinations (match-end 0))
     destinations))
 
-;; Legacy name
-(define-obsolete-function-alias 'rmail-dont-reply-to #'mail-dont-reply-to "24.1")
-
 \f
 ;;;###autoload
 (defun mail-fetch-field (field-name &optional last all list delete)
diff --git a/lisp/mail/mailalias.el b/lisp/mail/mailalias.el
index ba7cf58d38..c97786190c 100644
--- a/lisp/mail/mailalias.el
+++ b/lisp/mail/mailalias.el
@@ -72,8 +72,7 @@ mail-complete-alist
     )
   "Alist of header field and expression to return alist for completion.
 The expression may reference the variable `pattern'
-which will hold the string being completed.
-If not on matching header, `mail-complete-function' gets called instead."
+which will hold the string being completed."
   :type 'alist
   :group 'mailalias)
 (put 'mail-complete-alist 'risky-local-variable t)
@@ -90,13 +89,6 @@ mail-complete-style
   :type '(choice (const angles) (const parens) (const nil))
   :group 'mailalias)
 
-(defcustom mail-complete-function 'ispell-complete-word
-  "Function to call when completing outside `mail-complete-alist'-header."
-  :type '(choice function (const nil))
-  :group 'mailalias)
-(make-obsolete-variable 'mail-complete-function
-                        'completion-at-point-functions "24.1")
-
 (defcustom mail-directory-function nil
   "Function to get completions from directory service or nil for none.
 See `mail-directory-requery'."
@@ -433,25 +425,6 @@ mail-completion-at-point-function
                          (let ((pattern prefix)) (eval list-exp))))))
           (list beg end table)))))
 
-;;;###autoload
-(defun mail-complete (arg)
-  "Perform completion on header field or word preceding point.
-Completable headers are according to `mail-complete-alist'.  If none matches
-current header, calls `mail-complete-function' and passes prefix ARG if any."
-  (declare (obsolete mail-completion-at-point-function "24.1"))
-  (interactive "P")
-  ;; Read the defaults first, if we have not done so.
-  (sendmail-sync-aliases)
-  (if (eq mail-aliases t)
-      (progn
-	(setq mail-aliases nil)
-	(if (file-exists-p mail-personal-alias-file)
-	    (build-mail-aliases))))
-  (let ((data (mail-completion-at-point-function)))
-    (if data
-        (apply #'completion-in-region data)
-      (funcall mail-complete-function arg))))
-
 (defun mail-completion-expand (table)
   "Build new completion table that expands aliases.
 Completes like TABLE except that if the completion is a valid alias,
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index adb61aa09d..9bca35a154 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -314,20 +314,6 @@ rmail-user-mail-address-regexp
   :group 'rmail-retrieve
   :version "21.1")
 
-;;;###autoload
-(define-obsolete-variable-alias 'rmail-dont-reply-to-names
-  'mail-dont-reply-to-names "24.1")
-
-;; Prior to 24.1, this used to contain "\\`info-".
-;;;###autoload
-(defvar rmail-default-dont-reply-to-names nil
-  "Regexp specifying part of the default value of `mail-dont-reply-to-names'.
-This is used when the user does not set `mail-dont-reply-to-names'
-explicitly.")
-;;;###autoload
-(make-obsolete-variable 'rmail-default-dont-reply-to-names
-                        'mail-dont-reply-to-names "24.1")
-
 ;;;###autoload
 (defcustom rmail-ignored-headers
   (purecopy
diff --git a/lisp/mail/sendmail.el b/lisp/mail/sendmail.el
index c55cdc8412..6afadca6bb 100644
--- a/lisp/mail/sendmail.el
+++ b/lisp/mail/sendmail.el
@@ -430,20 +430,6 @@ mail-use-dsn
 			(const :tag "Success" success)))
   :version "22.1")
 
-;; Note: could use /usr/ucb/mail instead of sendmail;
-;; options -t, and -v if not interactive.
-(defvar mail-mailer-swallows-blank-line nil
-  "Set this non-nil if the system's mailer runs the header and body together.
-The actual value should be an expression to evaluate that returns
-non-nil if the problem will actually occur.
-\(As far as we know, this is not an issue on any system still supported
-by Emacs.)")
-
-(put 'mail-mailer-swallows-blank-line 'risky-local-variable t) ; gets evalled
-(make-obsolete-variable 'mail-mailer-swallows-blank-line
-			"no need to set this on any modern system."
-                        "24.1" 'set)
-
 (defvar mail-mode-syntax-table
   ;; define-derived-mode will make it inherit from text-mode-syntax-table.
   (let ((st (make-syntax-table)))
@@ -1309,8 +1295,6 @@ sendmail-send-it
 	    ;; Insert an extra newline if we need it to work around
 	    ;; Sun's bug that swallows newlines.
 	    (goto-char (1+ delimline))
-	    (if (eval mail-mailer-swallows-blank-line)
-		(newline))
 	    ;; Find and handle any Fcc fields.
 	    (goto-char (point-min))
 	    (if (re-search-forward "^Fcc:" delimline t)
@@ -1495,28 +1479,6 @@ mail-do-fcc
 		 (with-current-buffer buffer
 		   (set-visited-file-modtime)))))))))
 
-(defun mail-sent-via ()
-  "Make a Sent-via header line from each To or Cc header line."
-  (declare (obsolete "nobody can remember what it is for." "24.1"))
-  (interactive)
-  (save-excursion
-    ;; put a marker at the end of the header
-    (let ((end (copy-marker (mail-header-end)))
-	  (case-fold-search t))
-      (goto-char (point-min))
-      ;; search for the To: lines and make Sent-via: lines from them
-      ;; search for the next To: line
-      (while (re-search-forward "^\\(to\\|cc\\):" end t)
-	;; Grab this line plus all its continuations, sans the `to:'.
-	(let ((to-line
-	       (buffer-substring (point)
-				 (progn
-				   (if (re-search-forward "^[^ \t\n]" end t)
-				       (backward-char 1)
-				     (goto-char end))
-				   (point)))))
-	  ;; Insert a copy, with altered header field name.
-	  (insert-before-markers "Sent-via:" to-line))))))
 \f
 (defun mail-to ()
   "Move point to end of To field, creating it if necessary."
@@ -1839,8 +1801,6 @@ mail-insert-file
       (or (bolp) (newline))
       (goto-char start))))
 
-(define-obsolete-function-alias 'mail-attach-file #'mail-insert-file "24.1")
-
 (declare-function mml-attach-file "mml"
 		  (file &optional type description disposition))
 
diff --git a/lisp/mail/smtpmail.el b/lisp/mail/smtpmail.el
index 88e55e968c..93e7bd8bb1 100644
--- a/lisp/mail/smtpmail.el
+++ b/lisp/mail/smtpmail.el
@@ -342,8 +342,6 @@ smtpmail-send-it
 	    ;; Insert an extra newline if we need it to work around
 	    ;; Sun's bug that swallows newlines.
 	    (goto-char (1+ delimline))
-	    (if (eval mail-mailer-swallows-blank-line t)
-		(newline))
 	    ;; Find and handle any Fcc fields.
 	    (goto-char (point-min))
 	    (if (re-search-forward "^Fcc:" delimline t)
diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el
index 92989fcfb2..23b5c04a9b 100644
--- a/lisp/menu-bar.el
+++ b/lisp/menu-bar.el
@@ -584,9 +584,6 @@ menu-bar-edit-menu
 
     menu))
 
-(define-obsolete-function-alias
-  'menu-bar-kill-ring-save 'kill-ring-save "24.1")
-
 ;; These are alternative definitions for the cut, paste and copy
 ;; menu items.  Use them if your system expects these to use the clipboard.
 
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index 9ffaff7c8e..3451fa7d4e 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -2225,25 +2225,6 @@ completion-extra-properties
      `exact'    - text is a valid completion but may be further
                   completed.")
 
-(defvar completion-annotate-function
-  nil
-  ;; Note: there's a lot of scope as for when to add annotations and
-  ;; what annotations to add.  E.g. completing-help.el allowed adding
-  ;; the first line of docstrings to M-x completion.  But there's
-  ;; a tension, since such annotations, while useful at times, can
-  ;; actually drown the useful information.
-  ;; So completion-annotate-function should be used parsimoniously, or
-  ;; else only used upon a user's request (e.g. we could add a command
-  ;; to completion-list-mode to add annotations to the current
-  ;; completions).
-  "Function to add annotations in the *Completions* buffer.
-The function takes a completion and should either return nil, or a string that
-will be displayed next to the completion.  The function can access the
-completion table and predicates via `minibuffer-completion-table' and related
-variables.")
-(make-obsolete-variable 'completion-annotate-function
-                        'completion-extra-properties "24.1")
-
 (defun completion--done (string &optional finished message)
   (let* ((exit-fun (plist-get completion-extra-properties :exit-function))
          (pre-msg (and exit-fun (current-message))))
@@ -2314,8 +2295,7 @@ minibuffer-completion-help
                                            minibuffer-completion-predicate))
              (ann-fun (or (completion-metadata-get all-md 'annotation-function)
                           (plist-get completion-extra-properties
-                                     :annotation-function)
-                          completion-annotate-function))
+                                     :annotation-function)))
              (aff-fun (or (completion-metadata-get all-md 'affixation-function)
                           (plist-get completion-extra-properties
                                      :affixation-function)))
@@ -2790,9 +2770,6 @@ minibuffer-local-filename-completion-map
 with `minibuffer-local-must-match-map'."
   "SPC" nil)
 
-(defvar minibuffer-local-filename-must-match-map (make-sparse-keymap))
-(make-obsolete-variable 'minibuffer-local-filename-must-match-map nil "24.1")
-
 (defvar-keymap minibuffer-local-ns-map
   :doc "Local keymap for the minibuffer when spaces are not allowed."
   :parent minibuffer-local-map
diff --git a/lisp/msb.el b/lisp/msb.el
index 6e1d03ac27..bc10e1ca06 100644
--- a/lisp/msb.el
+++ b/lisp/msb.el
@@ -353,9 +353,6 @@ msb-files-by-directory
   :type 'boolean
   :set #'msb-custom-set)
 
-(define-obsolete-variable-alias 'msb-after-load-hooks
-  'msb-after-load-hook "24.1")
-
 (defcustom msb-after-load-hook nil
   "Hook run after the msb package has been loaded."
   :type 'hook
diff --git a/lisp/obsolete/eieio-compat.el b/lisp/obsolete/eieio-compat.el
index b31bde4efb..2ac75293fc 100644
--- a/lisp/obsolete/eieio-compat.el
+++ b/lisp/obsolete/eieio-compat.el
@@ -248,21 +248,6 @@ next-method-p
   (message "next-method-p called outside of a primary or around method")
   nil)
 
-;;;###autoload
-(defun eieio-defmethod (method args)
-  "Obsolete work part of an old version of the `defmethod' macro."
-  (declare (obsolete cl-defmethod "24.1"))
-  (eval `(defmethod ,method ,@args))
-  method)
-
-;;;###autoload
-(defun eieio-defgeneric (method doc-string)
-  "Obsolete work part of an old version of the `defgeneric' macro."
-  (declare (obsolete cl-defgeneric "24.1"))
-  (eval `(defgeneric ,method (x) ,@(if doc-string `(,doc-string))))
-  ;; Return the method
-  'method)
-
 ;;;###autoload
 (defun eieio-defclass (cname superclasses slots options)
   (declare (obsolete eieio-defclass-internal "25.1"))
diff --git a/lisp/obsolete/info-edit.el b/lisp/obsolete/info-edit.el
index 6c1be1078f..6c4c10ca6c 100644
--- a/lisp/obsolete/info-edit.el
+++ b/lisp/obsolete/info-edit.el
@@ -33,7 +33,6 @@ Info-edit-mode-hook
 (make-obsolete-variable 'Info-edit-mode-hook
 			"editing Info nodes by hand is not recommended." "24.4")
 
-(define-obsolete-variable-alias 'Info-edit-map 'Info-edit-mode-map "24.1")
 (defvar Info-edit-mode-map (let ((map (make-sparse-keymap)))
                              (set-keymap-parent map text-mode-map)
                              (define-key map "\C-c\C-c" #'Info-cease-edit)
diff --git a/lisp/obsolete/starttls.el b/lisp/obsolete/starttls.el
index 6f0685d3dd..2f1f0e9773 100644
--- a/lisp/obsolete/starttls.el
+++ b/lisp/obsolete/starttls.el
@@ -287,9 +287,6 @@ starttls-available-p
 			    starttls-gnutls-program
 			  starttls-program))))
 
-(define-obsolete-function-alias 'starttls-any-program-available
-  #'starttls-available-p "24.1")
-
 (provide 'starttls)
 
 ;;; starttls.el ends here
diff --git a/lisp/progmodes/cfengine.el b/lisp/progmodes/cfengine.el
index 00348ac0bb..32031d1946 100644
--- a/lisp/progmodes/cfengine.el
+++ b/lisp/progmodes/cfengine.el
@@ -793,14 +793,6 @@ cfengine-mode-syntax-functions-regex
                       (cdr (assq 'functions cfengine3-fallback-syntax)))
               'symbols))
 
-(defcustom cfengine-mode-abbrevs nil
-  "Abbrevs for CFEngine2 mode."
-  :type '(repeat (list (string :tag "Name")
-		       (string :tag "Expansion")
-		       (choice  :tag "Hook" (const nil) function))))
-
-(make-obsolete-variable 'cfengine-mode-abbrevs 'edit-abbrevs "24.1")
-
 ;; Taken from the doc for pre-release 2.1.
 (eval-and-compile
   (defconst cfengine2-actions
@@ -1409,7 +1401,6 @@ cfengine2-mode
   (setq-local outline-regexp "[ \t]*\\(\\sw\\|\\s_\\)+:+")
   (setq-local outline-level #'cfengine2-outline-level)
   (setq-local fill-paragraph-function #'cfengine-fill-paragraph)
-  (define-abbrev-table 'cfengine2-mode-abbrev-table cfengine-mode-abbrevs)
   (setq font-lock-defaults
         '(cfengine2-font-lock-keywords nil nil nil beginning-of-line))
   ;; Fixme: set the args of functions in evaluated classes to string
diff --git a/lisp/progmodes/cwarn.el b/lisp/progmodes/cwarn.el
index 971e3f6174..03469b9f55 100644
--- a/lisp/progmodes/cwarn.el
+++ b/lisp/progmodes/cwarn.el
@@ -180,9 +180,6 @@ cwarn-mode
   (cwarn-font-lock-keywords cwarn-mode)
   (font-lock-flush))
 
-;;;###autoload
-(define-obsolete-function-alias 'turn-on-cwarn-mode 'cwarn-mode "24.1")
-
 ;;}}}
 ;;{{{ Help functions
 
diff --git a/lisp/progmodes/make-mode.el b/lisp/progmodes/make-mode.el
index 91307f6c09..bd01786e08 100644
--- a/lisp/progmodes/make-mode.el
+++ b/lisp/progmodes/make-mode.el
@@ -1170,7 +1170,6 @@ makefile-completions-at-point
                       (goto-char (match-end 0))
                     (insert suffix))))))))
 
-(define-obsolete-function-alias 'makefile-complete 'completion-at-point "24.1")
 \f
 
 ;; Backslashification.  Stolen from cc-mode.el.
diff --git a/lisp/progmodes/meta-mode.el b/lisp/progmodes/meta-mode.el
index 5aaa277431..58229cfd7d 100644
--- a/lisp/progmodes/meta-mode.el
+++ b/lisp/progmodes/meta-mode.el
@@ -441,8 +441,6 @@ meta-completions-at-point
                    (insert close)))))))
       (nth 1 entry))))
 
-(define-obsolete-function-alias 'meta-complete-symbol
-  'completion-at-point "24.1")
 \f
 ;;; Indentation.
 
@@ -806,7 +804,6 @@ meta-common-mode-syntax-table
     st)
   "Syntax table used in Metafont or MetaPost mode.")
 
-(define-obsolete-variable-alias 'meta-mode-map 'meta-common-mode-map "24.1")
 (defvar meta-common-mode-map
   (let ((map (make-sparse-keymap)))
     ;; Comment Paragraphs:
diff --git a/lisp/progmodes/pascal.el b/lisp/progmodes/pascal.el
index 351ea6e3a9..8d3194e6a4 100644
--- a/lisp/progmodes/pascal.el
+++ b/lisp/progmodes/pascal.el
@@ -239,14 +239,6 @@ pascal-auto-lineup
 	      (const :tag "Declarations" declaration)
               (const :tag "Case statements" case)))
 
-(defvar pascal-toggle-completions nil
-  "If non-nil, `pascal-complete-word' tries all possible completions.
-Repeated use of \\[pascal-complete-word] then shows all
-completions in turn, instead of displaying a list of all possible
-completions.")
-(make-obsolete-variable 'pascal-toggle-completions
-                        'completion-cycle-threshold "24.1")
-
 (defcustom pascal-type-keywords
   '("array" "file" "packed" "char" "integer" "real" "string" "record")
   "Keywords for types used when completing a word in a declaration or parmlist.
@@ -1297,13 +1289,6 @@ pascal-completions-at-point
     (when (> e b)
       (list b e #'pascal-completion))))
 
-(define-obsolete-function-alias 'pascal-complete-word
-  'completion-at-point "24.1")
-
-(define-obsolete-function-alias 'pascal-show-completions
-  'completion-help-at-point "24.1")
-
-
 (defun pascal-get-default-symbol ()
   "Return symbol around current point as a string."
   (save-excursion
diff --git a/lisp/progmodes/prolog.el b/lisp/progmodes/prolog.el
index 9598209f5e..5aba95d4c7 100644
--- a/lisp/progmodes/prolog.el
+++ b/lisp/progmodes/prolog.el
@@ -742,14 +742,6 @@ prolog-use-sicstus-sd
   :group 'prolog-other
   :type 'boolean)
 
-(defcustom prolog-char-quote-workaround nil
-  "If non-nil, declare 0 as a quote character to handle 0'<char>.
-This is really kludgy, and unneeded (i.e. obsolete) in Emacs>=24."
-  :version "24.1"
-  :group 'prolog-other
-  :type 'boolean)
-(make-obsolete-variable 'prolog-char-quote-workaround nil "24.1")
-
 \f
 ;;-------------------------------------------------------------------
 ;; Internal variables
@@ -1303,7 +1295,7 @@ prolog-input-filter
         (t t)))
 
 ;; This statement was missing in Emacs 24.1, 24.2, 24.3.
-(define-obsolete-function-alias 'switch-to-prolog 'run-prolog "24.1")
+(define-obsolete-function-alias 'switch-to-prolog 'run-prolog "24.1") ; "24.4" ; for grep
 ;;;###autoload
 (defun run-prolog (arg)
   "Run an inferior Prolog process, input and output via buffer *prolog*.
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 16cdf58611..2582f552fe 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -248,7 +248,6 @@
 (eval-when-compile (require 'subr-x))   ;For `string-empty-p'.
 
 ;; Avoid compiler warnings
-(defvar view-return-to-alist)
 (defvar compilation-error-regexp-alist)
 (defvar outline-heading-end-regexp)
 
diff --git a/lisp/progmodes/which-func.el b/lisp/progmodes/which-func.el
index 3c8d4f43db..2e8e8d2319 100644
--- a/lisp/progmodes/which-func.el
+++ b/lisp/progmodes/which-func.el
@@ -234,9 +234,6 @@ which-func-update-1
 	 (setq which-func-mode nil)
 	 (error "Error in which-func-update: %S" info))))))
 
-;;;###autoload
-(define-obsolete-function-alias 'which-func-mode 'which-function-mode "24.1")
-
 (defvar which-func-update-timer nil)
 
 (unless (or (assq 'which-func-mode mode-line-misc-info)
diff --git a/lisp/simple.el b/lisp/simple.el
index ea94727b3a..86973652a7 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -1732,8 +1732,6 @@ count-words--format
 	     words (if (= words 1) "" "s")
 	     chars (if (= chars 1) "" "s"))))
 
-(define-obsolete-function-alias 'count-lines-region 'count-words-region "24.1")
-
 (defun what-line ()
   "Print the current buffer line number and narrowed line number of point."
   (interactive)
@@ -1951,10 +1949,6 @@ eval-minibuffer
   ;; Used for interactive spec `X'.
   (eval (read--expression prompt initial-contents)))
 
-(defvar minibuffer-completing-symbol nil
-  "Non-nil means completing a Lisp symbol in the minibuffer.")
-(make-obsolete-variable 'minibuffer-completing-symbol nil "24.1" 'get)
-
 (defvar minibuffer-default nil
   "The current default value or list of default values in the minibuffer.
 The functions `read-from-minibuffer' and `completing-read' bind
@@ -2015,20 +2009,19 @@ read--expression
 
 PROMPT and optional argument INITIAL-CONTENTS do the same as in
 function `read-from-minibuffer'."
-  (let ((minibuffer-completing-symbol t))
-    (minibuffer-with-setup-hook
-        (lambda ()
-          ;; FIXME: instead of just applying the syntax table, maybe
-          ;; use a special major mode tailored to reading Lisp
-          ;; expressions from the minibuffer? (`emacs-lisp-mode'
-          ;; doesn't preserve the necessary keybindings.)
-          (set-syntax-table emacs-lisp-mode-syntax-table)
-          (add-hook 'completion-at-point-functions
-                    #'elisp-completion-at-point nil t)
-          (run-hooks 'eval-expression-minibuffer-setup-hook))
-      (read-from-minibuffer prompt initial-contents
-                            read-expression-map t
-                            'read-expression-history))))
+  (minibuffer-with-setup-hook
+      (lambda ()
+        ;; FIXME: instead of just applying the syntax table, maybe
+        ;; use a special major mode tailored to reading Lisp
+        ;; expressions from the minibuffer? (`emacs-lisp-mode'
+        ;; doesn't preserve the necessary keybindings.)
+        (set-syntax-table emacs-lisp-mode-syntax-table)
+        (add-hook 'completion-at-point-functions
+                  #'elisp-completion-at-point nil t)
+        (run-hooks 'eval-expression-minibuffer-setup-hook))
+    (read-from-minibuffer prompt initial-contents
+                          read-expression-map t
+                          'read-expression-history)))
 
 (defun read--expression-try-read ()
   "Try to read an Emacs Lisp expression in the minibuffer.
diff --git a/lisp/speedbar.el b/lisp/speedbar.el
index b12cf3d9c2..95d73efb16 100644
--- a/lisp/speedbar.el
+++ b/lisp/speedbar.el
@@ -703,8 +703,6 @@ speedbar-update-flag
 (defvar speedbar-update-flag-disable nil
   "Permanently disable changing of the update flag.")
 
-(define-obsolete-variable-alias
-  'speedbar-syntax-table 'speedbar-mode-syntax-table "24.1")
 (defvar speedbar-mode-syntax-table
   (let ((st (make-syntax-table)))
     ;; Turn off paren matching around here.
@@ -719,8 +717,6 @@ speedbar-mode-syntax-table
     st)
   "Syntax-table used on the speedbar.")
 
-
-(define-obsolete-variable-alias 'speedbar-key-map 'speedbar-mode-map "24.1")
 (defvar speedbar-mode-map
   (let ((map (make-keymap)))
     (suppress-keymap map t)
diff --git a/lisp/strokes.el b/lisp/strokes.el
index 5402ebf1e1..93e0263e0a 100644
--- a/lisp/strokes.el
+++ b/lisp/strokes.el
@@ -1031,8 +1031,6 @@ strokes-help
     (help-mode)
     (help-print-return-message)))
 
-(define-obsolete-function-alias 'strokes-report-bug #'report-emacs-bug "24.1")
-
 (defun strokes-window-configuration-changed-p ()
   "Non-nil if the `strokes-window-configuration' frame properties changed.
 This is based on the last time `strokes-window-configuration' was updated."
diff --git a/lisp/subr.el b/lisp/subr.el
index 07606e7b23..e9aeca1e96 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -4705,9 +4705,6 @@ condition-case-unless-debug
                    ,@(cdr handler)))
                handlers)))
 
-(define-obsolete-function-alias 'condition-case-no-debug
-  'condition-case-unless-debug "24.1")
-
 (defmacro with-demoted-errors (format &rest body)
   "Run BODY and demote any errors to simple messages.
 FORMAT is a string passed to `message' to format any error message.
diff --git a/lisp/term/ns-win.el b/lisp/term/ns-win.el
index 84c5b087b9..e26191b33b 100644
--- a/lisp/term/ns-win.el
+++ b/lisp/term/ns-win.el
@@ -97,8 +97,6 @@ ns-parse-geometry
 
 ;;;; Keyboard mapping.
 
-(define-obsolete-variable-alias 'ns-alternatives-map 'x-alternatives-map "24.1")
-
 ;; Here are some Nextstep-like bindings for command key sequences.
 (define-key global-map [?\s-,] 'customize)
 (define-key global-map [?\s-'] 'next-window-any-frame)
@@ -682,10 +680,6 @@ ns-reg-to-script
 
 ;;;; Pasteboard support.
 
-(define-obsolete-function-alias 'ns-store-cut-buffer-internal
-  'gui-set-selection "24.1")
-
-
 (defun ns-copy-including-secondary ()
   (interactive)
   (call-interactively 'kill-ring-save)
diff --git a/lisp/term/w32-win.el b/lisp/term/w32-win.el
index 7eaa604776..993f1d4320 100644
--- a/lisp/term/w32-win.el
+++ b/lisp/term/w32-win.el
@@ -81,7 +81,6 @@
                   (&optional frame exclude-proportional))
 
 (defvar w32-color-map) ;; defined in w32fns.c
-(make-obsolete 'w32-default-color-map nil "24.1")
 
 (declare-function w32-send-sys-command "w32fns.c")
 (declare-function set-message-beep "w32fns.c")
diff --git a/lisp/term/x-win.el b/lisp/term/x-win.el
index 7c88c85cef..3a0bd65f29 100644
--- a/lisp/term/x-win.el
+++ b/lisp/term/x-win.el
@@ -1171,9 +1171,6 @@ vendor-specific-keysyms
 \f
 ;;;; Selections
 
-(define-obsolete-function-alias 'x-cut-buffer-or-selection-value
-  'x-selection-value "24.1")
-
 ;; Arrange for the kill and yank functions to set and check the clipboard.
 
 (defun x-clipboard-yank ()
diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el
index 544e0da827..6763da046f 100644
--- a/lisp/textmodes/bibtex.el
+++ b/lisp/textmodes/bibtex.el
@@ -316,8 +316,6 @@ 'bibtex-entry-alist
                                        (option (choice :tag "Alternative" :value nil
                                                        (const nil) integer)))))))
 
-(define-obsolete-variable-alias 'bibtex-entry-field-alist
-  'bibtex-BibTeX-entry-alist "24.1")
 (defcustom bibtex-BibTeX-entry-alist
   '(("Article" "Article in Journal"
      (("author")
@@ -3673,14 +3671,6 @@ bibtex-entry-alist
     (if (not (consp (nth 1 (car entry-alist))))
         ;; new format
         entry-alist
-      ;; Convert old format of `bibtex-entry-field-alist'
-      (unless (get var 'entry-list-format)
-        (put var 'entry-list-format "pre-24")
-        (message "Old format of `%s' (pre GNU Emacs 24).
-Please convert to the new format."
-                 (if (eq (indirect-variable 'bibtex-entry-field-alist) var)
-                     'bibtex-entry-field-alist var))
-        (sit-for 3))
       (let (lst)
         (dolist (entry entry-alist)
           (let ((fl (nth 1 entry)) req xref opt)
@@ -5318,7 +5308,6 @@ bibtex-convert-alien
     (goto-char (point-max))
     (message "Buffer is now parsable.  Please save it.")))
 
-(define-obsolete-function-alias 'bibtex-complete #'completion-at-point "24.1")
 (defun bibtex-completion-at-point-function ()
   (let ((pnt (point))
         (case-fold-search t)
diff --git a/lisp/textmodes/reftex-index.el b/lisp/textmodes/reftex-index.el
index 9adf0c819b..00850a69ef 100644
--- a/lisp/textmodes/reftex-index.el
+++ b/lisp/textmodes/reftex-index.el
@@ -269,8 +269,6 @@ reftex-index-update-taglist
     (and newtag (cdr cell) (not (member newtag (cdr cell)))
          (push newtag (cdr cell)))))
 
-(define-obsolete-variable-alias
-  'reftex-index-map 'reftex-index-mode-map "24.1")
 (defvar reftex-index-mode-map
   (let ((map (make-sparse-keymap)))
     ;; Index map
@@ -1198,8 +1196,6 @@ reftex-index-phrases-font-lock-defaults
   '((reftex-index-phrases-font-lock-keywords)
     nil t nil beginning-of-line)
   "Font lock defaults for `reftex-index-phrases-mode'.")
-(define-obsolete-variable-alias
-  'reftex-index-phrases-map 'reftex-index-phrases-mode-map "24.1")
 (defvar reftex-index-phrases-mode-map
   (let ((map (make-sparse-keymap)))
     ;; Keybindings and Menu for phrases buffer
diff --git a/lisp/textmodes/reftex-sel.el b/lisp/textmodes/reftex-sel.el
index d77411483f..5942801a8a 100644
--- a/lisp/textmodes/reftex-sel.el
+++ b/lisp/textmodes/reftex-sel.el
@@ -59,8 +59,6 @@ reftex-select-shared-map
     (define-key map [follow-link] 'mouse-face)
     map))
 
-(define-obsolete-variable-alias
-  'reftex-select-label-map 'reftex-select-label-mode-map "24.1")
 (defvar reftex-select-label-mode-map
   (let ((map (make-sparse-keymap)))
     (set-keymap-parent map reftex-select-shared-map)
@@ -109,8 +107,6 @@ reftex-select-label-mode
   ;; We do not set a local map - reftex-select-item does this.
   )
 
-(define-obsolete-variable-alias
-  'reftex-select-bib-map 'reftex-select-bib-mode-map "24.1")
 (defvar reftex-select-bib-mode-map
   (let ((map (make-sparse-keymap)))
     (set-keymap-parent map reftex-select-shared-map)
diff --git a/lisp/textmodes/reftex-toc.el b/lisp/textmodes/reftex-toc.el
index f6f72cec4f..9a12bbbe61 100644
--- a/lisp/textmodes/reftex-toc.el
+++ b/lisp/textmodes/reftex-toc.el
@@ -28,7 +28,6 @@
 (require 'reftex)
 ;;;
 
-(define-obsolete-variable-alias 'reftex-toc-map 'reftex-toc-mode-map "24.1")
 (defvar reftex-toc-mode-map
   (let ((map (make-sparse-keymap)))
 
diff --git a/lisp/vc/diff-mode.el b/lisp/vc/diff-mode.el
index 3f3e503a3f..30ba4153a9 100644
--- a/lisp/vc/diff-mode.el
+++ b/lisp/vc/diff-mode.el
@@ -2074,7 +2074,7 @@ diff-current-defun
       (re-search-forward "^[^ ]" nil t))
     (pcase-let ((`(,buf ,_line-offset ,pos ,src ,dst ,switched)
                  (ignore-errors         ;Signals errors in place of prompting.
-                   ;; Use `noprompt' since this is used in which-func-mode
+                   ;; Use `noprompt' since this is used in which-function-mode
                    ;; and such.
                    (diff-find-source-location nil nil 'noprompt))))
       (when buf
diff --git a/lisp/vc/vc-hooks.el b/lisp/vc/vc-hooks.el
index cc08767ade..a72138a180 100644
--- a/lisp/vc/vc-hooks.el
+++ b/lisp/vc/vc-hooks.el
@@ -556,15 +556,6 @@ vc-check-master-templates
        templates))))
 
 
-;; toggle-read-only is obsolete since 24.3, but since vc-t-r-o was made
-;; obsolete earlier, it is ok for the latter to be an alias to the former,
-;; since the latter will be removed first.  We can't just make it
-;; an alias for read-only-mode, since that is not 100% the same.
-(defalias 'vc-toggle-read-only 'toggle-read-only)
-(make-obsolete 'vc-toggle-read-only
-               "use `read-only-mode' instead (or `toggle-read-only' in older versions of Emacs)."
-               "24.1")
-
 (defun vc-default-make-version-backups-p (_backend _file)
   "Return non-nil if unmodified versions should be backed up locally.
 The default is to switch off this feature."
diff --git a/lisp/view.el b/lisp/view.el
index 3343136c1c..22eff7ac39 100644
--- a/lisp/view.el
+++ b/lisp/view.el
@@ -113,18 +113,6 @@ view-half-page-size
 
 (defvar-local view-last-regexp nil) ; Global is better???
 
-(defvar-local view-return-to-alist nil
-  "What to do with used windows and where to go when finished viewing buffer.
-This is local in each buffer being viewed.
-It is added to by `view-mode-enter' when starting to view a buffer and
-subtracted from by `view-mode-exit' when finished viewing the buffer.
-
-See RETURN-TO-ALIST argument of function `view-mode-exit' for the format of
-`view-return-to-alist'.")
-(make-obsolete-variable
- 'view-return-to-alist "this variable is no longer used." "24.1")
-(put 'view-return-to-alist 'permanent-local t)
-
 (defvar-local view-exit-action nil
   "If non-nil, a function called when finished viewing.
 The function should take one argument (a buffer).
@@ -487,40 +475,6 @@ view--disable
   (if buffer-read-only
       (setq buffer-read-only view-old-buffer-read-only)))
 
-;;;###autoload
-(defun view-return-to-alist-update (buffer &optional item)
-  "Update `view-return-to-alist' of buffer BUFFER.
-Remove from `view-return-to-alist' all entries referencing dead
-windows.  Optional argument ITEM non-nil means add ITEM to
-`view-return-to-alist' after purging.  For a description of items
-that can be added see the RETURN-TO-ALIST argument of the
-function `view-mode-exit'.  If `view-return-to-alist' contains an
-entry for the selected window, purge that entry from
-`view-return-to-alist' before adding ITEM."
-  (declare (obsolete "this function has no effect." "24.1"))
-  (with-current-buffer buffer
-    (when view-return-to-alist
-      (let* ((list view-return-to-alist)
-	     entry entry-window last)
-	(while list
-	  (setq entry (car list))
-	  (setq entry-window (car entry))
-	  (if (and (windowp entry-window)
-		   (or (and item (eq entry-window (selected-window)))
-		       (not (window-live-p entry-window))))
-	      ;; Remove that entry.
-	      (if last
-		  (setcdr last (cdr list))
-		(setq view-return-to-alist
-		      (cdr view-return-to-alist)))
-	    ;; Leave entry alone.
-	    (setq last entry))
-	  (setq list (cdr list)))))
-    ;; Add ITEM.
-    (when item
-      (setq view-return-to-alist
-	    (cons item view-return-to-alist)))))
-
 ;;;###autoload
 (defun view-mode-enter (&optional quit-restore exit-action)
   "Enter View mode and set up exit from view mode depending on optional arguments.
diff --git a/src/w32fns.c b/src/w32fns.c
index 468073c917..51540e1880 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -797,13 +797,6 @@ w32_default_color_map (void)
   return (cmap);
 }
 
-DEFUN ("w32-default-color-map", Fw32_default_color_map, Sw32_default_color_map,
-       0, 0, 0, doc: /* Return the default color map.  */)
-  (void)
-{
-  return w32_default_color_map ();
-}
-
 static Lisp_Object
 w32_color_map_lookup (const char *colorname)
 {
@@ -10879,7 +10872,6 @@ syms_of_w32fns (void)
   /* W32 specific functions */
 
   defsubr (&Sw32_define_rgb_color);
-  defsubr (&Sw32_default_color_map);
   defsubr (&Sw32_display_monitor_attributes_list);
   defsubr (&Sw32_send_sys_command);
   defsubr (&Sw32_shell_execute);
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: Deleting functions and variables obsolete since 24.1--24.3
  2022-06-30 22:11 Deleting functions and variables obsolete since 24.1--24.3 Stefan Kangas
@ 2022-06-30 23:15 ` Stefan Monnier
  2022-07-08 11:58   ` Stefan Kangas
  2022-07-08 12:29 ` Stefan Kangas
  2022-08-16 14:15 ` Stefan Kangas
  2 siblings, 1 reply; 14+ messages in thread
From: Stefan Monnier @ 2022-06-30 23:15 UTC (permalink / raw)
  To: Stefan Kangas; +Cc: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 126 bytes --]

>     compilation-parse-errors-function [Stefan Monnier]

For this one, I think the patch below is in order,


        Stefan

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: compilation-parse-errors-function.patch --]
[-- Type: text/x-diff, Size: 11819 bytes --]

diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index 9f33186d8b1..47711a90600 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -979,11 +979,6 @@ compilation-enter-directory-face
 (defvar compilation-leave-directory-face 'font-lock-builtin-face
   "Face name to use for leaving directory messages.")
 
-;; Used for compatibility with the old compile.el.
-(defvar compilation-parse-errors-function nil)
-(make-obsolete-variable 'compilation-parse-errors-function
-			'compilation-error-regexp-alist "24.1")
-
 (defcustom compilation-auto-jump-to-first-error nil
   "If non-nil, automatically jump to the first error during compilation."
   :type '(choice (const :tag "Never" nil)
@@ -1519,34 +1514,28 @@ compilation--parse-region
             (and proc (memq (process-status proc) '(run open))))
       (setq end (line-beginning-position))))
   (compilation--remove-properties start end)
-  (if compilation-parse-errors-function
-      ;; An old package!  Try the compatibility code.
-      (progn
-        (goto-char start)
-        (compilation--compat-parse-errors end))
-
-    ;; compilation-directory-matcher is the only part that really needs to be
-    ;; parsed sequentially.  So we could split it out, handle directories
-    ;; like syntax-propertize, and the rest as font-lock-keywords.  But since
-    ;; we want to have it work even when font-lock is off, we'd then need to
-    ;; use our own compilation-parsed text-property to keep track of the parts
-    ;; that have already been parsed.
-    (goto-char start)
-    (while (re-search-forward (car compilation-directory-matcher)
-                              end t)
-      (compilation--flush-directory-cache (match-beginning 0) (match-end 0))
-      (when compilation-debug
-        (font-lock-append-text-property
-         (match-beginning 0) (match-end 0)
-         'compilation-debug
-         (vector 'directory compilation-directory-matcher)))
-      (dolist (elt (cdr compilation-directory-matcher))
-        (add-text-properties (match-beginning (car elt))
-                             (match-end (car elt))
-                             (compilation-directory-properties
-                              (car elt) (cdr elt)))))
-
-    (compilation-parse-errors start end)))
+  ;; compilation-directory-matcher is the only part that really needs to be
+  ;; parsed sequentially.  So we could split it out, handle directories
+  ;; like syntax-propertize, and the rest as font-lock-keywords.  But since
+  ;; we want to have it work even when font-lock is off, we'd then need to
+  ;; use our own compilation-parsed text-property to keep track of the parts
+  ;; that have already been parsed.
+  (goto-char start)
+  (while (re-search-forward (car compilation-directory-matcher)
+                            end t)
+    (compilation--flush-directory-cache (match-beginning 0) (match-end 0))
+    (when compilation-debug
+      (font-lock-append-text-property
+       (match-beginning 0) (match-end 0)
+       'compilation-debug
+       (vector 'directory compilation-directory-matcher)))
+    (dolist (elt (cdr compilation-directory-matcher))
+      (add-text-properties (match-beginning (car elt))
+                           (match-end (car elt))
+                           (compilation-directory-properties
+                            (car elt) (cdr elt)))))
+
+  (compilation-parse-errors start end))
 
 (defun compilation--note-type (type)
   "Note that a new message with severity TYPE was seen.
@@ -3259,73 +3248,11 @@ compilation--flush-file-structure
                (if (eq v fs) (remhash k compilation-locs)))
              compilation-locs)))
 
-;;; Compatibility with the old compile.el.
-
-(defvaralias 'compilation-last-buffer 'next-error-last-buffer)
-(defvar compilation-parsing-end (make-marker))
-(defvar compilation-error-list nil)
-(defvar compilation-old-error-list nil)
-
-(defun compilation--compat-parse-errors (limit)
-  (when compilation-parse-errors-function
-    ;; FIXME: We should remove the rest of the compilation keywords
-    ;; but we can't do that from here because font-lock is using
-    ;; the value right now.  --Stef
-    (save-excursion
-      (setq compilation-error-list nil)
-      ;; Reset compilation-parsing-end each time because font-lock
-      ;; might force us the re-parse many times (typically because
-      ;; some code adds some text-property to the output that we
-      ;; already parsed).  You might say "why reparse", well:
-      ;; because font-lock has just removed the `compilation-message' property
-      ;; so have to do it all over again.
-      (if compilation-parsing-end
-	  (set-marker compilation-parsing-end (point))
-	(setq compilation-parsing-end (point-marker)))
-      (condition-case nil
-	  ;; Ignore any error: we're calling this function earlier than
-	  ;; in the old compile.el so things might not all be setup yet.
-	  (funcall compilation-parse-errors-function limit nil)
-	(error nil))
-      (dolist (err (if (listp compilation-error-list) compilation-error-list))
-	(let* ((src (car err))
-	       (dst (cdr err))
-	       (loc (cond ((markerp dst)
-                           (cons nil
-                                 (compilation--make-cdrloc nil nil dst)))
-			  ((consp dst)
-                           (cons (nth 2 dst)
-                                 (compilation--make-cdrloc
-                                  (nth 1 dst)
-                                  (cons (cdar dst) (caar dst))
-                                  nil))))))
-	  (when loc
-	    (goto-char src)
-	    ;; (put-text-property src (line-end-position)
-            ;;                    'font-lock-face 'font-lock-warning-face)
-	    (put-text-property src (line-end-position)
-			       'compilation-message
-                               (compilation--make-message loc 2 nil nil)))))))
-  (goto-char limit)
-  nil)
-
-;; Beware! this is not only compatibility code.  New code also uses it.  --Stef
 (defun compilation-forget-errors ()
   ;; In case we hit the same file/line specs, we want to recompute a new
   ;; marker for them, so flush our cache.
   (clrhash compilation-locs)
   (setq compilation-gcpro nil)
-  ;; FIXME: the old code reset the directory-stack, so maybe we should
-  ;; put a `directory change' marker of some sort, but where?  -stef
-  ;;
-  ;; FIXME: The old code moved compilation-current-error (which was
-  ;; virtually represented by a mix of compilation-parsing-end and
-  ;; compilation-error-list) to point-min, but that was only meaningful for
-  ;; the internal uses of compilation-forget-errors: all calls from external
-  ;; packages seem to be followed by a move of compilation-parsing-end to
-  ;; something equivalent to point-max.  So we heuristically move
-  ;; compilation-current-error to point-max (since the external package
-  ;; won't know that it should do it).  --Stef
   (setq compilation-current-error nil)
   (let* ((proc (get-buffer-process (current-buffer)))
 	 (mark (if proc (process-mark proc)))
diff --git a/lisp/progmodes/prolog.el b/lisp/progmodes/prolog.el
index 9598209f5e5..ec113d220d7 100644
--- a/lisp/progmodes/prolog.el
+++ b/lisp/progmodes/prolog.el
@@ -1628,8 +1628,6 @@ prolog-consult-compile-file
 (defvar prolog-consult-compile-real-file nil
   "The file name of the buffer to compile/consult.")
 
-(defvar compilation-parse-errors-function)
-
 (defun prolog-consult-compile (compilep file &optional first-line)
   "Consult/compile FILE.
 If COMPILEP is non-nil, perform compilation, otherwise perform CONSULTING.
@@ -1655,14 +1653,14 @@ prolog-consult-compile
       ;; Setting up font-locking for this buffer
       (setq-local font-lock-defaults
                   '(prolog-font-lock-keywords nil nil ((?_ . "w"))))
-      (if (eq prolog-system 'sicstus)
-          ;; FIXME: This looks really problematic: not only is this using
-          ;; the old compilation-parse-errors-function, but
-          ;; prolog-parse-sicstus-compilation-errors only accepts one argument
-          ;; whereas compile.el calls it with 2 (and did so at least since
-          ;; Emacs-20).
-          (setq-local compilation-parse-errors-function
-                      'prolog-parse-sicstus-compilation-errors))
+      ;; (if (eq prolog-system 'sicstus)
+      ;;     ;; FIXME: This looks really problematic: not only is this using
+      ;;     ;; the old compilation-parse-errors-function, but
+      ;;     ;; prolog-parse-sicstus-compilation-errors only accepts one
+      ;;     ;; argument whereas compile.el calls it with 2 (and did so at
+      ;;     ;; least since Emacs-20).
+      ;;     (setq-local compilation-parse-errors-function
+      ;;                 #'prolog-parse-sicstus-compilation-errors))
       (setq buffer-read-only nil)
       (insert command-string "\n"))
     (display-buffer buffer)
@@ -1693,40 +1691,41 @@ prolog-consult-compile
 
 (defvar compilation-error-list)
 
-(defun prolog-parse-sicstus-compilation-errors (limit)
-  "Parse the prolog compilation buffer for errors.
-Argument LIMIT is a buffer position limiting searching.
-For use with the `compilation-parse-errors-function' variable."
-  (setq compilation-error-list nil)
-  (message "Parsing SICStus error messages...")
-  (let (filepath dir file errorline)
-    (while
-        (re-search-backward
-         "{\\([a-zA-Z ]* ERROR\\|Warning\\):.* in line[s ]*\\([0-9]+\\)"
-         limit t)
-      (setq errorline (string-to-number (match-string 2)))
-      (save-excursion
-        (re-search-backward
-         "{\\(consulting\\|compiling\\|processing\\) \\(.*\\)\\.\\.\\.}"
-         limit t)
-        (setq filepath (match-string 2)))
-
-      ;; ###### Does this work with SICStus under Windows
-      ;; (i.e. backslashes and stuff?)
-      (if (string-match "\\(.*/\\)\\([^/]*\\)$" filepath)
-          (progn
-            (setq dir (match-string 1 filepath))
-            (setq file (match-string 2 filepath))))
-
-      (setq compilation-error-list
-            (cons
-             (cons (save-excursion
-                     (beginning-of-line)
-                     (point-marker))
-                   (list (list file dir) errorline))
-             compilation-error-list)
-            ))
-    ))
+;; FIXME: This has been obsolete since Emacs-20!
+;; (defun prolog-parse-sicstus-compilation-errors (limit)
+;;   "Parse the prolog compilation buffer for errors.
+;; Argument LIMIT is a buffer position limiting searching.
+;; For use with the `compilation-parse-errors-function' variable."
+;;   (setq compilation-error-list nil)
+;;   (message "Parsing SICStus error messages...")
+;;   (let (filepath dir file errorline)
+;;     (while
+;;         (re-search-backward
+;;          "{\\([a-zA-Z ]* ERROR\\|Warning\\):.* in line[s ]*\\([0-9]+\\)"
+;;          limit t)
+;;       (setq errorline (string-to-number (match-string 2)))
+;;       (save-excursion
+;;         (re-search-backward
+;;          "{\\(consulting\\|compiling\\|processing\\) \\(.*\\)\\.\\.\\.}"
+;;          limit t)
+;;         (setq filepath (match-string 2)))
+
+;;       ;; ###### Does this work with SICStus under Windows
+;;       ;; (i.e. backslashes and stuff?)
+;;       (if (string-match "\\(.*/\\)\\([^/]*\\)$" filepath)
+;;           (progn
+;;             (setq dir (match-string 1 filepath))
+;;             (setq file (match-string 2 filepath))))
+
+;;       (setq compilation-error-list
+;;             (cons
+;;              (cons (save-excursion
+;;                      (beginning-of-line)
+;;                      (point-marker))
+;;                    (list (list file dir) errorline))
+;;              compilation-error-list)
+;;             ))
+;;     ))
 
 (defun prolog-consult-compile-filter (process output)
   "Filter function for Prolog compilation PROCESS.

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: Deleting functions and variables obsolete since 24.1--24.3
  2022-06-30 23:15 ` Stefan Monnier
@ 2022-07-08 11:58   ` Stefan Kangas
  0 siblings, 0 replies; 14+ messages in thread
From: Stefan Kangas @ 2022-07-08 11:58 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Emacs developers

Stefan Monnier <monnier@iro.umontreal.ca> writes:

> >     compilation-parse-errors-function [Stefan Monnier]
>
> For this one, I think the patch below is in order,

LGTM.



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Deleting functions and variables obsolete since 24.1--24.3
  2022-06-30 22:11 Deleting functions and variables obsolete since 24.1--24.3 Stefan Kangas
  2022-06-30 23:15 ` Stefan Monnier
@ 2022-07-08 12:29 ` Stefan Kangas
  2022-07-08 12:42   ` Eli Zaretskii
  2022-08-16 14:15 ` Stefan Kangas
  2 siblings, 1 reply; 14+ messages in thread
From: Stefan Kangas @ 2022-07-08 12:29 UTC (permalink / raw)
  To: Emacs developers

Stefan Kangas <stefan@marxist.se> writes:

> Please chime up if you notice anything untowards, otherwise I will
> push the attached to master in a week or two.  This list can be
> reviewed before to the next release, but for now hopefully this
> motivates any needed external updates.

No comments within a week; pushed to master (commit 739e3dbe05).



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Deleting functions and variables obsolete since 24.1--24.3
  2022-07-08 12:29 ` Stefan Kangas
@ 2022-07-08 12:42   ` Eli Zaretskii
  2022-07-08 17:14     ` Stefan Kangas
  0 siblings, 1 reply; 14+ messages in thread
From: Eli Zaretskii @ 2022-07-08 12:42 UTC (permalink / raw)
  To: Stefan Kangas; +Cc: emacs-devel

> From: Stefan Kangas <stefan@marxist.se>
> Date: Fri, 8 Jul 2022 14:29:54 +0200
> 
> Stefan Kangas <stefan@marxist.se> writes:
> 
> > Please chime up if you notice anything untowards, otherwise I will
> > push the attached to master in a week or two.  This list can be
> > reviewed before to the next release, but for now hopefully this
> > motivates any needed external updates.
> 
> No comments within a week; pushed to master (commit 739e3dbe05).

A week is almost never long enough to give people time to respond.
Definitely not in this time of year.  IME, at least two to three weeks
are required.



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Deleting functions and variables obsolete since 24.1--24.3
  2022-07-08 12:42   ` Eli Zaretskii
@ 2022-07-08 17:14     ` Stefan Kangas
  2022-07-10  3:07       ` Richard Stallman
  0 siblings, 1 reply; 14+ messages in thread
From: Stefan Kangas @ 2022-07-08 17:14 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Emacs developers

Eli Zaretskii <eliz@gnu.org> writes:

> A week is almost never long enough to give people time to respond.
> Definitely not in this time of year.  IME, at least two to three weeks
> are required.

That's fair enough.  It shouldn't be too hard to resurrect any part of
this if necessary though.



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Deleting functions and variables obsolete since 24.1--24.3
  2022-07-08 17:14     ` Stefan Kangas
@ 2022-07-10  3:07       ` Richard Stallman
  0 siblings, 0 replies; 14+ messages in thread
From: Richard Stallman @ 2022-07-10  3:07 UTC (permalink / raw)
  To: Stefan Kangas; +Cc: eliz, emacs-devel

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > > A week is almost never long enough to give people time to respond.
  > > Definitely not in this time of year.  IME, at least two to three weeks
  > > are required.

  > That's fair enough.  It shouldn't be too hard to resurrect any part of
  > this if necessary though.

Since there is no hurry about this, let's wait a month.
It is nicer not to pressure people when there is no need.

-- 
Dr Richard Stallman (https://stallman.org)
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Deleting functions and variables obsolete since 24.1--24.3
  2022-06-30 22:11 Deleting functions and variables obsolete since 24.1--24.3 Stefan Kangas
  2022-06-30 23:15 ` Stefan Monnier
  2022-07-08 12:29 ` Stefan Kangas
@ 2022-08-16 14:15 ` Stefan Kangas
  2022-08-16 14:50   ` Robert Pluim
                     ` (3 more replies)
  2 siblings, 4 replies; 14+ messages in thread
From: Stefan Kangas @ 2022-08-16 14:15 UTC (permalink / raw)
  To: emacs-devel; +Cc: Alan Mackenzie

Stefan Kangas <stefan@marxist.se> writes:

> The next step is the above items, and anything obsoleted in 24.2 and
> 24.3.

Please see the scratch/obsolete-24.3 branch.  If there are no protests,
I will push it to master in a month or so.

1. These variables in window.el remain doing, help welcome:

    display-buffer-reuse-frames
    special-display-buffer-names
    special-display-frame-alist
    special-display-function
    special-display-regexps

2. There are two obsolete aliases in cc-cmds.el named `c-subword-mode'.
   I don't know what Alan prefers here, so I left them alone.

3. I also left everything in obsolete/cl.el alone, as the benefits of
   deleting them seem fairly small.



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Deleting functions and variables obsolete since 24.1--24.3
  2022-08-16 14:15 ` Stefan Kangas
@ 2022-08-16 14:50   ` Robert Pluim
  2022-08-16 16:31   ` [External] : " Drew Adams
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 14+ messages in thread
From: Robert Pluim @ 2022-08-16 14:50 UTC (permalink / raw)
  To: Stefan Kangas; +Cc: emacs-devel, Alan Mackenzie

>>>>> On Tue, 16 Aug 2022 07:15:28 -0700, Stefan Kangas <stefan@marxist.se> said:

    Stefan> Stefan Kangas <stefan@marxist.se> writes:
    >> The next step is the above items, and anything obsoleted in 24.2 and
    >> 24.3.

    Stefan> Please see the scratch/obsolete-24.3 branch.  If there are no protests,
    Stefan> I will push it to master in a month or so.

    Stefan> 1. These variables in window.el remain doing, help welcome:

    Stefan>     display-buffer-reuse-frames
    Stefan>     special-display-buffer-names
    Stefan>     special-display-frame-alist
    Stefan>     special-display-function
    Stefan>     special-display-regexps

You will get pushback on the special-display-* stuff: theyʼre much
easier to use than their replacements. Paging Drew ;-)

Robert
-- 



^ permalink raw reply	[flat|nested] 14+ messages in thread

* RE: [External] : Re: Deleting functions and variables obsolete since 24.1--24.3
  2022-08-16 14:15 ` Stefan Kangas
  2022-08-16 14:50   ` Robert Pluim
@ 2022-08-16 16:31   ` Drew Adams
  2022-08-17  2:13     ` Po Lu
  2022-08-21 16:16   ` Juri Linkov
  2022-09-09  9:48   ` Stefan Kangas
  3 siblings, 1 reply; 14+ messages in thread
From: Drew Adams @ 2022-08-16 16:31 UTC (permalink / raw)
  To: Stefan Kangas, emacs-devel@gnu.org; +Cc: Alan Mackenzie

> The Great Deletator Stefan Kangas writes:
> 
> > The next step is the above items, and anything obsoleted in 24.2 and
> > 24.3.
> 
> Please see the scratch/obsolete-24.3 branch.  If there are no protests,
> I will push it to master in a month or so.
> 
> 1. These variables in window.el remain doing, help welcome:
> 
>     display-buffer-reuse-frames
>     special-display-buffer-names
>     special-display-frame-alist
>     special-display-function
>     special-display-regexps


I *STRONGLY* object to removing any of the
`special-display' user options and their support.
They should never have been deprecated.  I don't
want to see them ever be abandoned.

It's fine for any user to (try to) use
`display-buffer-alist' to accomplish, in a
complicated way, what `special-display' does simply.

It's wrong to get rid of `special-display'.  I use
it all day, every day, and my code uses it.

IF you create `display-buffer' user options that
unequivocally reproduce what `special-display' does
so simply, THEN we can talk about getting rid of
`special-display'.

That's never been done - in spite of the cavalier
punt statement to just "use `display-buffer-alist'
instead", added by the deprecation to each of the
`special-display' doc strings.

If you can't do it, how do you expect users to?

`special-display' does everything I need that it
says it does, and it does it simply.

`special-display' makes no claim or pretense to do
what `display-buffer-alist' does.  And the latter
doesn't provide what the former provides.  (Can
you make it provide that feature?)

Leave it alone.  Adding `display-buffer-alist' was
a _good_ thing - thank you Martin.  Deprecating,
let alone removing, `special-display' would be an
atrocity.

Removing `special-display' does _not_ "need doing".
Take a break - do something constructive instead.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [External] : Re: Deleting functions and variables obsolete since 24.1--24.3
  2022-08-16 16:31   ` [External] : " Drew Adams
@ 2022-08-17  2:13     ` Po Lu
  0 siblings, 0 replies; 14+ messages in thread
From: Po Lu @ 2022-08-17  2:13 UTC (permalink / raw)
  To: Drew Adams; +Cc: Stefan Kangas, emacs-devel@gnu.org, Alan Mackenzie

Drew Adams <drew.adams@oracle.com> writes:

> I *STRONGLY* object to removing any of the
> `special-display' user options and their support.
> They should never have been deprecated.  I don't
> want to see them ever be abandoned.
>
> It's fine for any user to (try to) use
> `display-buffer-alist' to accomplish, in a
> complicated way, what `special-display' does simply.
>
> It's wrong to get rid of `special-display'.  I use
> it all day, every day, and my code uses it.
>
> IF you create `display-buffer' user options that
> unequivocally reproduce what `special-display' does
> so simply, THEN we can talk about getting rid of
> `special-display'.
>
> That's never been done - in spite of the cavalier
> punt statement to just "use `display-buffer-alist'
> instead", added by the deprecation to each of the
> `special-display' doc strings.
>
> If you can't do it, how do you expect users to?
>
> `special-display' does everything I need that it
> says it does, and it does it simply.
>
> `special-display' makes no claim or pretense to do
> what `display-buffer-alist' does.  And the latter
> doesn't provide what the former provides.  (Can
> you make it provide that feature?)
>
> Leave it alone.  Adding `display-buffer-alist' was
> a _good_ thing - thank you Martin.  Deprecating,
> let alone removing, `special-display' would be an
> atrocity.
>
> Removing `special-display' does _not_ "need doing".
> Take a break - do something constructive instead.

Seconded.  I completely agree here.



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Deleting functions and variables obsolete since 24.1--24.3
  2022-08-16 14:15 ` Stefan Kangas
  2022-08-16 14:50   ` Robert Pluim
  2022-08-16 16:31   ` [External] : " Drew Adams
@ 2022-08-21 16:16   ` Juri Linkov
  2022-08-23  3:20     ` Stefan Kangas
  2022-09-09  9:48   ` Stefan Kangas
  3 siblings, 1 reply; 14+ messages in thread
From: Juri Linkov @ 2022-08-21 16:16 UTC (permalink / raw)
  To: Stefan Kangas; +Cc: emacs-devel, Alan Mackenzie

> Please see the scratch/obsolete-24.3 branch.  If there are no protests,
> I will push it to master in a month or so.

I noticed this comment in the branch:

  diff --git a/lisp/proced.el b/lisp/proced.el
  index a27638d367..29e2860fba 100644
  --- a/lisp/proced.el
  +++ b/lisp/proced.el
  @@ -1768,6 +1768,8 @@ proced-with-processes-buffer
          (save-window-excursion
            ;; Analogous to `dired-pop-to-buffer'
            ;; Don't split window horizontally.  (Bug#1806)
  +         ;; FIXME: `dired-pop-to-buffer' was removed.  Should we just
  +         ;;        use `pop-to-buffer' here also?
            (display-buffer (current-buffer)
                            '(display-buffer-in-direction
                              (direction . bottom)

But the obsolesce message in etc/NEWS.24 informs:

  ** The following functions and variables are obsolete:
  *** 'dired-pop-to-buffer' (use 'dired-mark-pop-up')

So the replacement is 'dired-mark-pop-up' rather than `pop-to-buffer'.



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Deleting functions and variables obsolete since 24.1--24.3
  2022-08-21 16:16   ` Juri Linkov
@ 2022-08-23  3:20     ` Stefan Kangas
  0 siblings, 0 replies; 14+ messages in thread
From: Stefan Kangas @ 2022-08-23  3:20 UTC (permalink / raw)
  To: Juri Linkov; +Cc: emacs-devel, Alan Mackenzie

Juri Linkov <juri@linkov.net> writes:

>   diff --git a/lisp/proced.el b/lisp/proced.el
>   index a27638d367..29e2860fba 100644
>   --- a/lisp/proced.el
>   +++ b/lisp/proced.el
>   @@ -1768,6 +1768,8 @@ proced-with-processes-buffer
>           (save-window-excursion
>             ;; Analogous to `dired-pop-to-buffer'
>             ;; Don't split window horizontally.  (Bug#1806)
>   +         ;; FIXME: `dired-pop-to-buffer' was removed.  Should we just
>   +         ;;        use `pop-to-buffer' here also?
>             (display-buffer (current-buffer)
>                             '(display-buffer-in-direction
>                               (direction . bottom)
>
> But the obsolesce message in etc/NEWS.24 informs:
>
>   ** The following functions and variables are obsolete:
>   *** 'dired-pop-to-buffer' (use 'dired-mark-pop-up')
>
> So the replacement is 'dired-mark-pop-up' rather than `pop-to-buffer'.

Hmm, not sure what the fix is here.  Would it be enough to just update
the FIXME?

diff --git a/lisp/proced.el b/lisp/proced.el
index 29e2860fba..a176ebcf91 100644
--- a/lisp/proced.el
+++ b/lisp/proced.el
@@ -1768,8 +1768,8 @@ proced-with-processes-buffer
        (save-window-excursion
          ;; Analogous to `dired-pop-to-buffer'
          ;; Don't split window horizontally.  (Bug#1806)
-         ;; FIXME: `dired-pop-to-buffer' was removed.  Should we just
-         ;;        use `pop-to-buffer' here also?
+         ;; FIXME: `dired-pop-to-buffer' was removed and replaced with
+         ;;        `dired-mark-pop-up'.
          (display-buffer (current-buffer)
                          '(display-buffer-in-direction
                            (direction . bottom)



^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: Deleting functions and variables obsolete since 24.1--24.3
  2022-08-16 14:15 ` Stefan Kangas
                     ` (2 preceding siblings ...)
  2022-08-21 16:16   ` Juri Linkov
@ 2022-09-09  9:48   ` Stefan Kangas
  3 siblings, 0 replies; 14+ messages in thread
From: Stefan Kangas @ 2022-09-09  9:48 UTC (permalink / raw)
  To: emacs-devel

Stefan Kangas <stefan@marxist.se> writes:

> Please see the scratch/obsolete-24.3 branch.  If there are no protests,
> I will push it to master in a month or so.

Now pushed to master (commits 1f29ee2d21, ea0b913ab6, 2d9674e865).



^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2022-09-09  9:48 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-06-30 22:11 Deleting functions and variables obsolete since 24.1--24.3 Stefan Kangas
2022-06-30 23:15 ` Stefan Monnier
2022-07-08 11:58   ` Stefan Kangas
2022-07-08 12:29 ` Stefan Kangas
2022-07-08 12:42   ` Eli Zaretskii
2022-07-08 17:14     ` Stefan Kangas
2022-07-10  3:07       ` Richard Stallman
2022-08-16 14:15 ` Stefan Kangas
2022-08-16 14:50   ` Robert Pluim
2022-08-16 16:31   ` [External] : " Drew Adams
2022-08-17  2:13     ` Po Lu
2022-08-21 16:16   ` Juri Linkov
2022-08-23  3:20     ` Stefan Kangas
2022-09-09  9:48   ` Stefan Kangas

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).