From: Philip Kaludercic <philipk@posteo.net>
To: Stefan Kangas <stefankangas@gmail.com>
Cc: 66554@debbugs.gnu.org, Eli Zaretskii <eliz@gnu.org>,
monnier@iro.umontreal.ca
Subject: bug#66554: [PATCH] Add the public API of Compat to the core
Date: Thu, 11 Jan 2024 20:07:41 +0000 [thread overview]
Message-ID: <87a5pbpraq.fsf@posteo.net> (raw)
In-Reply-To: <CADwFkmn57+yo_6_zp1SBOb6ve7LwT==pJbKfUn=sFHDdd_fH4A@mail.gmail.com> (Stefan Kangas's message of "Thu, 11 Jan 2024 11:35:28 -0800")
[-- Attachment #1: Type: text/plain, Size: 726 bytes --]
Stefan Kangas <stefankangas@gmail.com> writes:
> Eli Zaretskii <eliz@gnu.org> writes:
>
>> I don't mind, but it sounds like the details of adding compat.el to
>> core are not yet clear to all, and are still being discussed.
>
> OK, thanks. There's no rush here, I think. I hope that people will
> speak up so that we can get a handle on those details.
>
>> Also, it sounds like we would need to modify compat.el for every
>> release or something? if so, this should be in make-tarball.txt.
>>
>> It might be also a good idea to mention this in the ELisp manual
>> somewhere.
>
> Philip, could you take a look at this and amend the patch accordingly?
> Thanks in advance.
This would integrate my previous two suggestions:
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Add-the-public-API-of-Compat-to-the-core.patch --]
[-- Type: text/x-diff, Size: 5484 bytes --]
From 83743d8c407cf5ef8a34816b88e9b28d890bc7f6 Mon Sep 17 00:00:00 2001
From: Philip Kaludercic <philipk@posteo.net>
Date: Wed, 13 Sep 2023 12:26:22 +0200
Subject: [PATCH] Add the public API of Compat to the core
* lisp/emacs-lisp/compat.el: Add stub file with minimal definitions,
so that core packages, that haven't been installed from ELPA, can make
use of the public API and use more recent function signatures.
* lisp/progmodes/python.el (compat): Remove 'noerror flag, because
Compat can now be required without the real package being available.
* admin/admin.el (set-version): Update the version in the package
header when setting the version.
* lisp/subr.el (version-regexp-alist): Add non-numeric version string
"compat", to ensure that the build-in compat is always
preferred. (Bug#66554)
---
admin/admin.el | 5 ++++
lisp/emacs-lisp/compat.el | 61 +++++++++++++++++++++++++++++++++++++++
lisp/progmodes/python.el | 2 +-
lisp/subr.el | 4 +--
4 files changed, 69 insertions(+), 3 deletions(-)
create mode 100644 lisp/emacs-lisp/compat.el
diff --git a/admin/admin.el b/admin/admin.el
index 7fa2727aeb7..bcf1be6ff67 100644
--- a/admin/admin.el
+++ b/admin/admin.el
@@ -115,6 +115,11 @@ set-version
(set-version-in-file root "nt/README.W32" version
(rx (and "version" (1+ space)
(submatch (1+ (in "0-9."))))))
+ (set-version-in-file root "lisp/emacs-lisp/compat.el" version
+ (rx (and bol ";; Version : " (1+ space)
+ (submatch (1+ (in "0-9.")))
+ "compat")))
+
;; TODO: msdos could easily extract the version number from
;; configure.ac with sed, rather than duplicating the information.
(set-version-in-file root "msdos/sed2v2.inp" version
diff --git a/lisp/emacs-lisp/compat.el b/lisp/emacs-lisp/compat.el
new file mode 100644
index 00000000000..b45b3ede633
--- /dev/null
+++ b/lisp/emacs-lisp/compat.el
@@ -0,0 +1,61 @@
+;;; compat.el --- Pseudo-Compatibility for Elisp -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2021-2024 Free Software Foundation, Inc.
+
+;; Author: \
+;; Philip Kaludercic <philipk@posteo.net>, \
+;; Daniel Mendler <mail@daniel-mendler.de>
+;; Maintainer: \
+;; Daniel Mendler <mail@daniel-mendler.de>, \
+;; Compat Development <~pkal/compat-devel@lists.sr.ht>,
+;; emacs-devel@gnu.org
+;; URL: https://github.com/emacs-compat/compat
+;; Version: 30.1compat
+;; Keywords: lisp, maint
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; The Compat package on ELPA provides forward-compatibility
+;; definitions for other packages. While mostly transparent, a
+;; minimal API is necessary whenever core definitions change calling
+;; conventions (e.g. `plist-get' can be invoked with a predicate from
+;; Emacs 29.1 onward). For core packages on ELPA to be able to take
+;; advantage of this functionality, the macros `compat-function' and
+;; `compat-call' have to be available in the core, usable even if
+;; users do not have the Compat package installed, which this file
+;; ensures.
+
+;; Note that Compat is not a core package and this file is not
+;; available on GNU ELPA.
+
+;;; Code:
+
+(defmacro compat-function (fun)
+ "Return compatibility function symbol for FUN.
+This is a pseudo-compatibility stub for core packages on ELPA,
+that depend on the Compat package, whenever the user doesn't have
+the package installed on their current system."
+ `#',fun)
+
+(defmacro compat-call (fun &rest args)
+ "Call compatibility function or macro FUN with ARGS.
+This is a pseudo-compatibility stub for core packages on ELPA,
+that depend on the Compat package, whenever the user doesn't have
+the package installed on their current system."
+ (cons fun args))
+
+(provide 'compat)
+;;; compat.el ends here
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 1148da11a06..c3f18692f61 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -267,7 +267,7 @@
(eval-when-compile (require 'subr-x)) ;For `string-empty-p' and `string-join'.
(require 'treesit)
(require 'pcase)
-(require 'compat nil 'noerror)
+(require 'compat)
(require 'project nil 'noerror)
(require 'seq)
diff --git a/lisp/subr.el b/lisp/subr.el
index df28989b399..007206ebf0e 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -6873,9 +6873,9 @@ version-separator
Usually the separator is \".\", but it can be any other string.")
-
(defconst version-regexp-alist
- '(("^[-._+ ]?snapshot$" . -4)
+ `(("^[-._+ ]?compat$" . ,most-positive-fixnum)
+ ("^[-._+ ]?snapshot$" . -4)
;; treat "1.2.3-20050920" and "1.2-3" as snapshot releases
("^[-._+]$" . -4)
;; treat "1.2.3-CVS" as snapshot release
--
2.39.2
next prev parent reply other threads:[~2024-01-11 20:07 UTC|newest]
Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-15 9:35 bug#66554: [PATCH] Add the public API of Compat to the core Philip Kaludercic
2024-01-10 22:02 ` Stefan Kangas
2024-01-11 5:27 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-01-11 7:54 ` Philip Kaludercic
2024-01-11 8:06 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-01-11 17:35 ` Philip Kaludercic
2024-01-11 17:58 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-01-11 19:24 ` Philip Kaludercic
2024-01-11 20:11 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-01-11 20:24 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-01-11 20:43 ` Philip Kaludercic
2024-01-11 21:01 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-01-12 16:29 ` Philip Kaludercic
2024-01-12 18:05 ` Eli Zaretskii
2024-01-12 18:17 ` Philip Kaludercic
2024-01-12 18:29 ` Eli Zaretskii
2024-01-12 18:40 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-01-12 20:05 ` Eli Zaretskii
2024-01-12 22:27 ` Philip Kaludercic
2024-01-13 6:44 ` Eli Zaretskii
2024-01-13 12:23 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-01-18 19:51 ` Philip Kaludercic
2024-01-18 20:17 ` Eli Zaretskii
2024-01-18 20:33 ` Stefan Kangas
2024-01-19 6:40 ` Eli Zaretskii
2024-01-19 6:52 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-01-18 20:35 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-01-19 6:43 ` Eli Zaretskii
2024-01-19 6:57 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-01-19 16:44 ` Philip Kaludercic
2024-01-19 18:50 ` Eli Zaretskii
2024-01-24 6:23 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-01-26 7:58 ` Philip Kaludercic
2024-01-26 10:42 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-01-26 12:35 ` Eli Zaretskii
2024-02-01 15:53 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-02-02 8:11 ` Philip Kaludercic
2024-02-02 12:36 ` Eli Zaretskii
2024-02-06 19:10 ` Philip Kaludercic
2024-02-06 19:37 ` Eli Zaretskii
2024-02-06 19:59 ` Philip Kaludercic
2024-02-07 17:15 ` Philip Kaludercic
2024-02-07 17:31 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-02-07 17:43 ` Eli Zaretskii
2024-02-08 7:40 ` Philip Kaludercic
2024-02-08 8:21 ` Eli Zaretskii
2024-02-08 10:47 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-02-10 16:29 ` Philip Kaludercic
2024-02-10 16:36 ` Eli Zaretskii
2024-02-10 16:46 ` Philip Kaludercic
2024-02-10 17:20 ` Eli Zaretskii
2024-02-10 17:40 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-02-10 17:47 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-02-10 18:03 ` Eli Zaretskii
2024-02-10 18:00 ` Eli Zaretskii
2024-02-10 18:14 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-02-10 19:12 ` Eli Zaretskii
2024-02-11 21:52 ` Philip Kaludercic
2024-01-18 20:47 ` Philip Kaludercic
2024-01-19 6:47 ` Eli Zaretskii
2024-01-18 20:18 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-01-18 20:41 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-01-18 23:34 ` Stefan Kangas
2024-01-19 5:49 ` Philip Kaludercic
2024-01-19 6:42 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-01-12 8:10 ` Eli Zaretskii
2024-01-11 20:24 ` Philip Kaludercic
2024-01-11 20:40 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-01-12 7:32 ` Eli Zaretskii
2024-01-12 7:38 ` Philip Kaludercic
2024-01-12 11:54 ` Eli Zaretskii
2024-01-11 10:32 ` Eli Zaretskii
2024-01-11 19:35 ` Stefan Kangas
2024-01-11 20:07 ` Philip Kaludercic [this message]
2024-01-12 7:12 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87a5pbpraq.fsf@posteo.net \
--to=philipk@posteo.net \
--cc=66554@debbugs.gnu.org \
--cc=eliz@gnu.org \
--cc=monnier@iro.umontreal.ca \
--cc=stefankangas@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.