[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/compat c81333a6b0 30/84: Merge branch 'master' into ema
From: |
ELPA Syncer |
Subject: |
[elpa] externals/compat c81333a6b0 30/84: Merge branch 'master' into emacs-29.1 |
Date: |
Tue, 3 Jan 2023 08:57:33 -0500 (EST) |
branch: externals/compat
commit c81333a6b040893cfa245b4ba3b84dae15829771
Merge: 8d17ffdd88 46b44c3be1
Author: Philip Kaludercic <philipk@posteo.net>
Commit: Philip Kaludercic <philipk@posteo.net>
Merge branch 'master' into emacs-29.1
---
README.md | 97 +++++++++++++++++----------------------------------------
compat-24.el | 33 ++------------------
compat-25.el | 2 ++
compat-26.el | 2 ++
compat-27.el | 25 +++++++++++++++
compat-28.el | 2 ++
compat-macs.el | 31 +++++++-----------
compat-tests.el | 40 +++++++++++++++---------
compat.el | 7 +++--
compat.texi | 15 +++++++--
10 files changed, 117 insertions(+), 137 deletions(-)
diff --git a/README.md b/README.md
index 9666e3999a..ec9ca086cb 100644
--- a/README.md
+++ b/README.md
@@ -4,79 +4,41 @@ COMPATibility Library for Emacs
Find here the source for compat.el, a forwards-compatibility library
for (GNU) Emacs Lisp, versions 24.3 and newer.
-The intended audience of this library aren't day-to-day users, but
-package developers that wish to make use of newer functionality, not
-provided in older versions of Emacs, without breaking compatibility
-for users bound to specific Emacs releases.
-
-Version 24.3 is chosen as the oldest version, because this is the
-newest version on CentOS 7. It is intended to preserve compatibility
-for at least as the CentOS 7 reaches [EOL], 2024.
-
-If you are developing a package with compat.el in mind, consider
-loading `compat-help` (on your system, not in a package) to get
-relevant notes inserted into the help buffers of functions that are
-implemented or advised in compat.el.
-
-Note that compat.el provides a few prefixed function, ie. functions
-with a `compat-` prefix. These are used to provide extended
-functionality for commands that are already defined (`sort`, `assoc`,
-...). It might be possible to transform these into advised functions
-later on, so that the modified functionality is accessible without a
-prefix. Feedback on this point is appreciated.
-
-Installation
-------------
-
-compat.el shouldn't be installed directly, but downloaded from [GNU
-ELPA]. If necessary, this can be done using M-x package-install-file
-in the current working directory.
-
-Usage
------
-
-The intended use-case for this library is for package developers to
-add as a dependency in the header:
-
- ;; Package-Requires: ((emacs "24.3") (compat "28.1.2.0"))
-
-and later on a
+For information on how to use Compat, please consult the [manual].
+The latest state of development can be found in the [snapshot
+version].
- (require 'compat)
-
-This will load all non-prefixed definitions (functions and macros with
-a leading `compat-`). To load these, an additional
-
- (require 'compat-XY) ; e.g. 26
-
-will be necessary, to load compatibility code for Emacs version XY.
-
-It is recommended to subscribe to the [compat-announce] mailing list
-to be notified when new versions are released or relevant changes are
-made.
+[manual]: https://elpa.gnu.org/packages/doc/compat.html
+[snapshot version]: https://elpa.gnu.org/devel/doc/compat.html
Contribute
----------
-As compat.el is distribed as part of GNU ELPA, and therefore requires
-a [copyright assignment] to the FSF, for all non-trivial code
+As compat.el is distribed as part of [GNU ELPA], and therefore
+requires a [copyright assignment] to the [FSF], for all non-trivial code
contributions.
+[GNU ELPA]: http://elpa.gnu.org/packages/compat.html
+[copyright assignment]:
https://www.gnu.org/software/emacs/manual/html_node/emacs/Copyright-Assignment.html
+[FSF]: https://www.fsf.org/
+
Source code
-----------
Compat is developed on [SourceHut]. A restricted [GitHub] mirror is
also provided.
+[SourceHut]: https://sr.ht/~pkal/compat
+[GitHub]: https://github.com/phikal/compat.el
+
Bug and patches
---------------
-Patches and comments can be sent to the [development mailing
-list][compat-devel]. Bug reports and issues should be directed to the
-[issue tracker][compat-tracker] (also accessible via
-[Email][compat-tracker-mailto]). [GitHub] can also be used to submit
-patches ("Pull Request"). These may include issues in the
-compatibility code, missing definitions or performance issues.
+Patches and comments can be sent to the [development mailing list].
+Bug reports and issues should be directed to the [issue tracker] (also
+accessible via [email]). [GitHub] can also be used to submit patches
+("Pull Request"). These may include issues in the compatibility code,
+missing definitions or performance issues.
When contributing, make sure to provide test and use the existing
tests defined in compat-test.el. These can be easily executed using
@@ -84,18 +46,17 @@ the bundled Makefile:
make test
+[development mailing list]: https://lists.sr.ht/~pkal/compat-devel
+[issue tracker]: https://todo.sr.ht/~pkal/compat
+[email]: mailto:~pkal/compat@todo.sr.ht
+
Distribution
------------
-compat.el and all other files in this directory are distributed under
-the GPL, Version 3 (like Emacs itself).
+compat.el and all other source files in this directory are distributed
+under the [GNU Public License], Version 3 (like Emacs itself). The manual
+(`compat.texi`) is distributed under the [GNU Free Documentation
+License], Version 1.3.
-[EOL]: https://wiki.centos.org/About/Product
-[GNU ELPA]: http://elpa.gnu.org/packages/compat.html
-[copyright assignment]:
https://www.gnu.org/software/emacs/manual/html_node/emacs/Copyright-Assignment.html
-[SourceHut]: https://sr.ht/~pkal/compat
-[GitHub]: https://github.com/phikal/compat.el
-[compat-announce]: https://lists.sr.ht/~pkal/compat-announce
-[compat-devel]: https://lists.sr.ht/~pkal/compat-devel
-[compat-tracker]: https://todo.sr.ht/~pkal/compat
-[compat-tracker-mailto]: mailto:~pkal/compat@todo.sr.ht
+[GNU Public License]: https://www.gnu.org/licenses/gpl-3.0.en.html
+[GNU Free Documentation License]: https://www.gnu.org/licenses/fdl-1.3.html
diff --git a/compat-24.el b/compat-24.el
index f208ae7bd8..8e0fd93e92 100644
--- a/compat-24.el
+++ b/compat-24.el
@@ -39,11 +39,12 @@
(eval-when-compile (require 'compat-macs))
+(compat-declare-version "24.4")
+
;;;; Defined in data.c
(compat-defun = (number-or-marker &rest numbers-or-markers)
"Handle multiple arguments."
- :version "24.4"
:prefix t
(catch 'fail
(while numbers-or-markers
@@ -54,7 +55,6 @@
(compat-defun < (number-or-marker &rest numbers-or-markers)
"Handle multiple arguments."
- :version "24.4"
:prefix t
(catch 'fail
(while numbers-or-markers
@@ -65,7 +65,6 @@
(compat-defun > (number-or-marker &rest numbers-or-markers)
"Handle multiple arguments."
- :version "24.4"
:prefix t
(catch 'fail
(while numbers-or-markers
@@ -76,7 +75,6 @@
(compat-defun <= (number-or-marker &rest numbers-or-markers)
"Handle multiple arguments."
- :version "24.4"
:prefix t
(catch 'fail
(while numbers-or-markers
@@ -87,7 +85,6 @@
(compat-defun >= (number-or-marker &rest numbers-or-markers)
"Handle multiple arguments."
- :version "24.4"
:prefix t
(catch 'fail
(while numbers-or-markers
@@ -100,7 +97,6 @@
If optional third argument C is given, store result into C.
A, B, and C must be bool vectors of the same length.
Return the destination vector if it changed or nil otherwise."
- :version "24.4"
(unless (bool-vector-p a)
(signal 'wrong-type-argument (list 'bool-vector-p a)))
(unless (bool-vector-p b)
@@ -124,7 +120,6 @@ Return the destination vector if it changed or nil
otherwise."
If optional third argument C is given, store result into C.
A, B, and C must be bool vectors of the same length.
Return the destination vector if it changed or nil otherwise."
- :version "24.4"
(unless (bool-vector-p a)
(signal 'wrong-type-argument (list 'bool-vector-p a)))
(unless (bool-vector-p b)
@@ -148,7 +143,6 @@ Return the destination vector if it changed or nil
otherwise."
If optional third argument C is given, store result into C.
A, B, and C must be bool vectors of the same length.
Return the destination vector if it changed or nil otherwise."
- :version "24.4"
(unless (bool-vector-p a)
(signal 'wrong-type-argument (list 'bool-vector-p a)))
(unless (bool-vector-p b)
@@ -172,7 +166,6 @@ Return the destination vector if it changed or nil
otherwise."
If optional third argument C is given, store result into C.
A, B, and C must be bool vectors of the same length.
Return the destination vector if it changed or nil otherwise."
- :version "24.4"
(unless (bool-vector-p a)
(signal 'wrong-type-argument (list 'bool-vector-p a)))
(unless (bool-vector-p b)
@@ -196,7 +189,6 @@ Return the destination vector if it changed or nil
otherwise."
If optional second argument B is given, store result into B.
A and B must be bool vectors of the same length.
Return the destination vector."
- :version "24.4"
(unless (bool-vector-p a)
(signal 'wrong-type-argument (list 'bool-vector-p a)))
(unless (or (null b) (bool-vector-p b))
@@ -211,7 +203,6 @@ Return the destination vector."
(compat-defun bool-vector-subsetp (a b)
"Return t if every t value in A is also t in B, nil otherwise.
A and B must be bool vectors of the same length."
- :version "24.4"
(unless (bool-vector-p a)
(signal 'wrong-type-argument (list 'bool-vector-p a)))
(unless (bool-vector-p b)
@@ -227,7 +218,6 @@ A and B must be bool vectors of the same length."
(compat-defun bool-vector-count-consecutive (a b i)
"Count how many consecutive elements in A equal B starting at I.
A is a bool vector, B is t or nil, and I is an index into A."
- :version "24.4"
(unless (bool-vector-p a)
(signal 'wrong-type-argument (list 'bool-vector-p a)))
(setq b (and b t)) ;normalise to nil or t
@@ -242,7 +232,6 @@ A is a bool vector, B is t or nil, and I is an index into
A."
"Count how many elements in A are t.
A is a bool vector. To count A's nil elements, subtract the
return value from A's length."
- :version "24.4"
(unless (bool-vector-p a)
(signal 'wrong-type-argument (list 'bool-vector-p a)))
(let ((n 0))
@@ -259,7 +248,6 @@ return value from A's length."
FILE is normally a feature name, but it can also be a file name,
in case that file does not provide any feature. See `eval-after-load'
for more details about the different forms of FILE and their semantics."
- :version "24.4"
(declare (indent 1) (debug (form def-body)))
;; See https://nullprogram.com/blog/2018/02/22/ on how
;; `eval-after-load' is used to preserve compatibility with 24.3.
@@ -267,7 +255,6 @@ for more details about the different forms of FILE and
their semantics."
(compat-defun special-form-p (object)
"Non-nil if and only if OBJECT is a special form."
- :version "24.4"
(if (and (symbolp object) (fboundp object))
(setq object (condition-case nil
(indirect-function object)
@@ -276,7 +263,6 @@ for more details about the different forms of FILE and
their semantics."
(compat-defun macrop (object)
"Non-nil if and only if OBJECT is a macro."
- :version "24.4"
(let ((def (condition-case nil
(indirect-function object)
(void-function nil))))
@@ -288,7 +274,6 @@ for more details about the different forms of FILE and
their semantics."
"Return non-nil if SUFFIX is a suffix of STRING.
If IGNORE-CASE is non-nil, the comparison is done without paying
attention to case differences."
- :version "24.4"
(let ((start-pos (- (length string) (length suffix))))
(and (>= start-pos 0)
(eq t (compare-strings suffix nil nil
@@ -298,7 +283,6 @@ attention to case differences."
"Extend `split-string' by a TRIM argument.
The remaining arguments STRING, SEPARATORS and OMIT-NULLS are
handled just as with `split-string'."
- :version "24.4"
:prefix t
(let* ((token (split-string string separators omit-nulls))
(trimmed (if trim
@@ -317,7 +301,6 @@ handled just as with `split-string'."
"Destructively remove `equal' consecutive duplicates from LIST.
First and last elements are considered consecutive if CIRCULAR is
non-nil."
- :version "24.4"
(let ((tail list) last)
(while (cdr tail)
(if (equal (car tail) (cadr tail))
@@ -337,7 +320,6 @@ MESSAGE is a string that will be output to the echo area if
such an error
is signaled without being caught by a `condition-case'.
PARENT is either a signal or a list of signals from which it inherits.
Defaults to `error'."
- :version "24.4"
(unless parent (setq parent 'error))
(let ((conditions
(if (consp parent)
@@ -364,7 +346,6 @@ only need to call FUN once. This can be useful when FUN
performs a
relatively slow operation, such as calling an external process.
When IGNORE-CASE is non-nil, FUN is expected to be case-insensitive."
- :version "24.4"
(let* (last-arg last-result
(new-fun
(lambda (arg)
@@ -378,7 +359,6 @@ When IGNORE-CASE is non-nil, FUN is expected to be
case-insensitive."
;;* UNTESTED
(compat-defun completion-table-merge (&rest tables)
"Create a completion table that collects completions from all TABLES."
- :version "24.4"
(lambda (string pred action)
(cond
((null action)
@@ -406,7 +386,6 @@ When IGNORE-CASE is non-nil, FUN is expected to be
case-insensitive."
;;* UNTESTED
(compat-advise require (feature &rest args)
"Allow for Emacs 24.x to require the inexistent FEATURE subr-x."
- :version "24.4"
;; As the compatibility advise around `require` is more a hack than
;; of of actual value, the highlighting is suppressed.
:no-highlight t
@@ -419,7 +398,6 @@ When IGNORE-CASE is non-nil, FUN is expected to be
case-insensitive."
(compat-defun hash-table-keys (hash-table)
"Return a list of keys in HASH-TABLE."
- :version "24.4"
(let (values)
(maphash
(lambda (k _v) (push k values))
@@ -428,7 +406,6 @@ When IGNORE-CASE is non-nil, FUN is expected to be
case-insensitive."
(compat-defun hash-table-values (hash-table)
"Return a list of values in HASH-TABLE."
- :version "24.4"
(let (values)
(maphash
(lambda (_k v) (push v values))
@@ -437,33 +414,28 @@ When IGNORE-CASE is non-nil, FUN is expected to be
case-insensitive."
(compat-defun string-empty-p (string)
"Check whether STRING is empty."
- :version "24.4"
(string= string ""))
(compat-defun string-join (strings &optional separator)
"Join all STRINGS using SEPARATOR.
Optional argument SEPARATOR must be a string, a vector, or a list of
characters; nil stands for the empty string."
- :version "24.4"
(mapconcat #'identity strings separator))
(compat-defun string-blank-p (string)
"Check whether STRING is either empty or only whitespace.
The following characters count as whitespace here: space, tab, newline and
carriage return."
- :version "24.4"
(string-match-p "\\`[ \t\n\r]*\\'" string))
(compat-defun string-remove-prefix (prefix string)
"Remove PREFIX from STRING if present."
- :version "24.4"
(if (string-prefix-p prefix string)
(substring string (length prefix))
string))
(compat-defun string-remove-suffix (suffix string)
"Remove SUFFIX from STRING if present."
- :version "24.4"
(if (string-suffix-p suffix string)
(substring string 0 (- (length string) (length suffix)))
string))
@@ -496,7 +468,6 @@ The optional argument SPEC-TYPE determines which spec to
set:
and `face-override-spec' specs;
Any other value means not to set any spec, but to run the
function for defining FACE and recalculating its attributes."
- :version "24.4"
(if (get face 'face-alias)
(setq face (get face 'face-alias)))
;; Save SPEC to the relevant symbol property.
diff --git a/compat-25.el b/compat-25.el
index eb9d0a8b8f..60f365ba68 100644
--- a/compat-25.el
+++ b/compat-25.el
@@ -34,6 +34,8 @@
(eval-when-compile (require 'compat-macs))
+(compat-declare-version "25.1")
+
;;;; Defined in alloc.c
(compat-defun bool-vector (&rest objects)
diff --git a/compat-26.el b/compat-26.el
index 76087b8066..f712d24e76 100644
--- a/compat-26.el
+++ b/compat-26.el
@@ -40,6 +40,8 @@
(eval-when-compile (require 'compat-macs))
(declare-function compat-func-arity "compat" (func))
+(compat-declare-version "26.1")
+
;;;; Defined in eval.c
(compat-defun func-arity (func)
diff --git a/compat-27.el b/compat-27.el
index a5eb72e36a..99a1d33d83 100644
--- a/compat-27.el
+++ b/compat-27.el
@@ -41,6 +41,8 @@
(eval-when-compile (require 'compat-macs))
+(compat-declare-version "27.1")
+
;;;; Defined in fns.c
(compat-defun proper-list-p (object)
@@ -397,6 +399,29 @@ where USER is a valid login name."
body)))
(cons 'progn (nreverse body))))
+(compat-defun provided-mode-derived-p (mode &rest modes)
+ "Non-nil if MODE is derived from one of MODES.
+Uses the `derived-mode-parent' property of the symbol to trace backwards.
+If you just want to check `major-mode', use `derived-mode-p'."
+ :realname compat--provided-mode-derived-p
+ ;; If MODE is an alias, then look up the real mode function first.
+ (when-let ((alias (symbol-function mode)))
+ (when (symbolp alias)
+ (setq mode alias)))
+ (while
+ (and
+ (not (memq mode modes))
+ (let* ((parent (get mode 'derived-mode-parent))
+ (parentfn (symbol-function parent)))
+ (setq mode (if (and parentfn (symbolp parentfn)) parentfn parent)))))
+ mode)
+
+;;* UNTESTED
+(defun derived-mode-p (&rest modes)
+ "Non-nil if the current major mode is derived from one of MODES.
+Uses the `derived-mode-parent' property of the symbol to trace backwards."
+ (apply #'compat--provided-mode-derived-p major-mode modes))
+
;;* UNTESTED
(compat-defmacro ignore-error (condition &rest body)
"Execute BODY; if the error CONDITION occurs, return nil.
diff --git a/compat-28.el b/compat-28.el
index 1b1d6de3d5..1cb3879acb 100644
--- a/compat-28.el
+++ b/compat-28.el
@@ -41,6 +41,8 @@
(eval-when-compile (require 'compat-macs))
+(compat-declare-version "28.1")
+
;;;; Defined in fns.c
;;* INCOMPLETE FEATURE: Should handle multibyte regular expressions
diff --git a/compat-macs.el b/compat-macs.el
index f661fd1158..fa0f6ea74a 100644
--- a/compat-macs.el
+++ b/compat-macs.el
@@ -40,6 +40,16 @@ is loaded (in this case `compat-26').")
`(unless (bound-and-true-p compat--inhibit-prefixed)
,@body))
+(defvar compat-current-version nil
+ "Default version to use when no explicit version was given.")
+
+(defmacro compat-declare-version (version)
+ "Set the Emacs version that is currently being handled to VERSION."
+ ;; FIXME: Avoid setting the version for any definition that might
+ ;; follow, but try to restrict it to the current file/buffer.
+ (setq compat-current-version version)
+ nil)
+
(defvar compat--generate-function #'compat--generate-default
"Function used to generate compatibility code.
The function must take six arguments: NAME, DEF-FN, INSTALL-FN,
@@ -93,25 +103,8 @@ DEF-FN, INSTALL-FN, CHECK-FN, ATTR and TYPE."
(max-version (plist-get attr :max-version))
(feature (plist-get attr :feature))
(cond (plist-get attr :cond))
- (version
- ;; If you edit this, also edit `compat--generate-testable' in
- ;; `compat-tests.el'.
- (or (plist-get attr :version)
- (let* ((file (car (last current-load-list)))
- (file (if (stringp file)
- ;; Some library, which requires compat-XY.el,
- ;; is being compiled and compat-XY.el has not
- ;; been compiled yet.
- file
- ;; compat-XY.el is being compiled.
- (or (bound-and-true-p byte-compile-current-file)
- ;; Fallback to the buffer being evaluated.
- (buffer-file-name)))))
- (if (and file
- (string-match
- "compat-\\([[:digit:]]+\\)\\.\\(?:elc?\\)\\'" file))
- (concat (match-string 1 file) ".1")
- (error "BUG: No version number could be extracted")))))
+ (version (or (plist-get attr :version)
+ compat-current-version))
(realname (or (plist-get attr :realname)
(intern (format "compat--%S" name))))
(check (cond
diff --git a/compat-tests.el b/compat-tests.el
index e88092312d..db9a0e76d7 100644
--- a/compat-tests.el
+++ b/compat-tests.el
@@ -36,6 +36,7 @@
(require 'compat-macs)
+(defvar compat-current-version)
(defun compat--generate-testable (name def-fn install-fn check-fn attr type)
"Generate a more verbose compatibility definition, fit for testing.
See `compat-generate-function' for details on the arguments NAME,
@@ -44,20 +45,8 @@ DEF-FN, INSTALL-FN, CHECK-FN, ATTR and TYPE."
(max-version (plist-get attr :max-version))
(feature (plist-get attr :feature))
(cond (plist-get attr :cond))
- (version
- ;; If you edit this, also edit `compat--generate-default' in
- ;; compat-macs.el.
- (or (plist-get attr :version)
- (let* ((file (car (last current-load-list)))
- (file (if (stringp file)
- file
- (or (bound-and-true-p byte-compile-current-file)
- (buffer-file-name)))))
- (if (and file
- (string-match
- "compat-\\([[:digit:]]+\\)\\.\\(?:elc?\\)\\'" file))
- (concat (match-string 1 file) ".1")
- (error "BUG: No version number could be extracted")))))
+ (version (or (plist-get attr :version)
+ compat-current-version))
(realname (or (plist-get attr :realname)
(intern (format "compat--%S" name))))
(body `(progn
@@ -2016,6 +2005,29 @@ being compared against."
(ought t "~root/")
(ought t "~root/file"))
+(let ((one (make-symbol "1"))
+ (two (make-symbol "2"))
+ (three (make-symbol "3"))
+ (one.5 (make-symbol "1.5"))
+ (eins (make-symbol "𝟙")))
+ (put two 'derived-mode-parent one)
+ (put one.5 'derived-mode-parent one)
+ (put three 'derived-mode-parent two)
+ (compat-deftests provided-mode-derived-p
+ (ought one one one)
+ (ought one two one)
+ (ought one three one)
+ (ought nil one eins)
+ (ought nil two eins)
+ (ought nil two one.5)
+ (ought one two one.5 one)
+ (ought two two one.5 two)
+ (ought one three one.5 one)
+ (ought two three one.5 one two)
+ (ought two three one.5 two one)
+ (ought three three one.5 two one three)
+ (ought three three one.5 three two one)))
+
(compat-deftests file-parent-directory ;assuming unix
(ought nil "/")
(ought "/" "/dir")
diff --git a/compat.el b/compat.el
index 6cfa80bd77..0b28ff05e2 100644
--- a/compat.el
+++ b/compat.el
@@ -33,9 +33,10 @@
;;
;; Not every function provided in newer versions of Emacs is provided
;; here. Some depend on new features from the core, others cannot be
-;; implemented to a meaningful degree. The main audience for this
-;; library are not regular users, but package maintainers. Therefore
-;; commands and user options are usually not implemented here.
+;; implemented to a meaningful degree. Please consult the Compat
+;; manual for details. The main audience for this library are not
+;; regular users, but package maintainers. Therefore commands and
+;; user options are usually not implemented here.
;;; Code:
diff --git a/compat.texi b/compat.texi
index 064533a3f2..7e057ff283 100644
--- a/compat.texi
+++ b/compat.texi
@@ -750,8 +750,6 @@ The @code{define-inline} functionality.
The functions @code{string-collate-lessp} and
@code{string-collate-equalp}.
@item
-Support for @code{alist-get} as a generalised variable.
-@item
The function @code{funcall-interactivly}.
@item
The function @code{buffer-substring-with-bidi-context}.
@@ -1471,6 +1469,19 @@ of @env{PATH} can lead to confusing results.
@xref{Subprocess Creation,,,elisp}.
@end defopt
+@c based on lisp/modes.el
+@defun provided-mode-derived-p mode &rest modes
+This function returns non-@code{nil} if @var{mode} is derived from any
+of the major modes given by the symbols @var{modes}.
+@end defun
+
+@defun derived-mode-p &rest modes
+This function returns non-@code{nil} if the current major mode is
+derived from any of the major modes given by the symbols @var{modes}.
+
+@xref{Derived Modes,,,elisp}.
+@end defun
+
@subsection Prefixed Definitions
These functions are prefixed with @code{compat} prefix, and are only
loaded when @code{compat-27} is required:
- [elpa] externals/compat 5031a586a3 09/84: Add take and ntake defined in Emacs 29, (continued)
- [elpa] externals/compat 5031a586a3 09/84: Add take and ntake defined in Emacs 29, ELPA Syncer, 2023/01/03
- [elpa] externals/compat 71ddb93f75 10/84: Merge branch 'master' into emacs-29, ELPA Syncer, 2023/01/03
- [elpa] externals/compat 3104c89c2d 13/84: Test compat-string-trim instead of string-trim, ELPA Syncer, 2023/01/03
- [elpa] externals/compat 29dd29609a 15/84: Prepare compat.el for testing functions from compat-29, ELPA Syncer, 2023/01/03
- [elpa] externals/compat 9b8799091c 16/84: Add @subsection headers for Emacs 29.1 node, ELPA Syncer, 2023/01/03
- [elpa] externals/compat db53afa3a7 18/84: Add buffer-text-pixel-size from Emacs 29, ELPA Syncer, 2023/01/03
- [elpa] externals/compat a4036f9b1b 01/84: Prepare Emacs 29.1 compatibility, ELPA Syncer, 2023/01/03
- [elpa] externals/compat f21b114ec7 02/84: Add string-limit, ELPA Syncer, 2023/01/03
- [elpa] externals/compat 9083cfc4f6 05/84: Add get-display-property, ELPA Syncer, 2023/01/03
- [elpa] externals/compat 87da1d984d 11/84: Begin documenting Emacs 29 support, ELPA Syncer, 2023/01/03
- [elpa] externals/compat c81333a6b0 30/84: Merge branch 'master' into emacs-29.1,
ELPA Syncer <=
- [elpa] externals/compat 2ee63f46b2 07/84: Make compat-font-lock dependency on compat-macs explicit, ELPA Syncer, 2023/01/03
- [elpa] externals/compat 22b2634ada 06/84: Compile compat-macs before anything else, ELPA Syncer, 2023/01/03
- [elpa] externals/compat 2e206a8304 21/84: Add prefixed plist-get from Emacs 29, ELPA Syncer, 2023/01/03
- [elpa] externals/compat e13ca90cd7 12/84: Rewrite legacy compat-test definitions, ELPA Syncer, 2023/01/03
- [elpa] externals/compat e370f9b7e7 25/84: Add match-buffers from Emacs 29, ELPA Syncer, 2023/01/03
- [elpa] externals/compat 4710da5fa7 28/84: Add file-parent-directory from Emacs 29, ELPA Syncer, 2023/01/03
- [elpa] externals/compat bb86f3aa3b 37/84: Simplify compat--generate-testable, ELPA Syncer, 2023/01/03
- [elpa] externals/compat 282f2dc6a7 41/84: Call install-fn in compat--generate-testable, ELPA Syncer, 2023/01/03
- [elpa] externals/compat 3f3f2e44d5 43/84: Split compat-insert-into-buffer into multiple tests, ELPA Syncer, 2023/01/03
- [elpa] externals/compat 933d6fdf80 24/84: Add buffer-match-p from Emacs 29, ELPA Syncer, 2023/01/03