;;; compat.el --- Pseudo-Compatibility for Elisp -*- lexical-binding: t; -*- ;; Copyright (C) 2021-2024 Free Software Foundation, Inc. ;; Author: \ ;; Philip Kaludercic , \ ;; Daniel Mendler ;; Maintainer: \ ;; Daniel Mendler , \ ;; Compat Development <~pkal/compat-devel@lists.sr.ht>, ;; emacs-devel@gnu.org ;; URL: https://github.com/emacs-compat/compat ;; 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 . ;;; 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)) ;; To ensure that if the user has installed Compat X.Y.Z.A on Emacs ;; X.Y, that the this file is preferred by package.el, we ;; programmatically set the version of this file: ;;;###autoload (push (list 'compat emacs-major-version emacs-minor-version most-positive-fixnum) package--builtin-versions) (provide 'compat) ;;; compat.el ends here