1119 lines
40 KiB
Plaintext
1119 lines
40 KiB
Plaintext
This is compat.info, produced by makeinfo version 6.7 from compat.texi.
|
||
|
||
Copyright © 2022 Free Software Foundation, Inc.
|
||
|
||
Permission is granted to copy, distribute and/or modify this
|
||
document under the terms of the GNU Free Documentation License,
|
||
Version 1.3 or any later version published by the Free Software
|
||
Foundation; with no Invariant Sections, with the Front-Cover Texts
|
||
being “A GNU Manual,” and with the Back-Cover Texts as in (a)
|
||
below. A copy of the license is included in the section entitled
|
||
“GNU Free Documentation License.”
|
||
|
||
(a) The FSF’s Back-Cover Text is: “You have the freedom to copy and
|
||
modify this GNU manual.”
|
||
|
||
INFO-DIR-SECTION Emacs
|
||
START-INFO-DIR-ENTRY
|
||
* Compat: (compat). Compatibility Library for Emacs Lisp.
|
||
END-INFO-DIR-ENTRY
|
||
|
||
|
||
File: compat.info, Node: Top, Next: Introduction, Up: (dir)
|
||
|
||
"Compat" Manual
|
||
***************
|
||
|
||
This manual documents the usage of the "Compat" Emacs lisp library, the
|
||
forward-compatibility library for Emacs Lisp, corresponding to version
|
||
28.1.2.0.
|
||
|
||
Copyright © 2022 Free Software Foundation, Inc.
|
||
|
||
Permission is granted to copy, distribute and/or modify this
|
||
document under the terms of the GNU Free Documentation License,
|
||
Version 1.3 or any later version published by the Free Software
|
||
Foundation; with no Invariant Sections, with the Front-Cover Texts
|
||
being “A GNU Manual,” and with the Back-Cover Texts as in (a)
|
||
below. A copy of the license is included in the section entitled
|
||
“GNU Free Documentation License.”
|
||
|
||
(a) The FSF’s Back-Cover Text is: “You have the freedom to copy and
|
||
modify this GNU manual.”
|
||
|
||
* Menu:
|
||
|
||
* Introduction::
|
||
* Support::
|
||
* Development::
|
||
* Function Index::
|
||
* Variable Index::
|
||
|
||
— The Detailed Node Listing —
|
||
|
||
Introduction
|
||
|
||
* Overview::
|
||
* Usage::
|
||
* Intentions::
|
||
|
||
Usage
|
||
|
||
* Additional libraries::
|
||
|
||
Support
|
||
|
||
* Emacs 24.4:: Compatibility support for Emacs 24.4
|
||
* Emacs 24.5:: Compatibility support for Emacs 24.5
|
||
* Emacs 25.1:: Compatibility support for Emacs 25.1
|
||
* Emacs 26.1:: Compatibility support for Emacs 26.1
|
||
* Emacs 27.1:: Compatibility support for Emacs 27.1
|
||
* Emacs 28.1:: Compatibility support for Emacs 28.1
|
||
|
||
|
||
|
||
File: compat.info, Node: Introduction, Next: Support, Prev: Top, Up: Top
|
||
|
||
1 Introduction
|
||
**************
|
||
|
||
* Menu:
|
||
|
||
* Overview::
|
||
* Usage::
|
||
* Intentions::
|
||
|
||
|
||
File: compat.info, Node: Overview, Next: Usage, Up: Introduction
|
||
|
||
1.1 Overview
|
||
============
|
||
|
||
The objective of Compat is to provide "forwards compatibility" library
|
||
for Emacs Lisp. That is to say by using Compat, an Elisp package does
|
||
not have to make the decision to either use new and useful functionality
|
||
or support old versions of Emacs.
|
||
|
||
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
|
||
(https://wiki.centos.org/About/Product), 2024.
|
||
|
||
If you are developing a package with Compat 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.
|
||
|
||
Note that Compat 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’,
|
||
‘seq’, ...). 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.
|
||
|
||
|
||
File: compat.info, Node: Usage, Next: Intentions, Prev: Overview, Up: Introduction
|
||
|
||
1.2 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
|
||
|
||
(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
|
||
(https://lists.sr.ht/~pkal/compat-announce) mailing list to be notified
|
||
when new versions are released or relevant changes are made.
|
||
|
||
* Menu:
|
||
|
||
* Additional libraries::
|
||
|
||
|
||
File: compat.info, Node: Additional libraries, Up: Usage
|
||
|
||
1.2.1 Additional libraries
|
||
--------------------------
|
||
|
||
These libraries are packages with Compat, but are disabled by default.
|
||
To use them you can use ‘M-x load-library’:
|
||
|
||
compat-help
|
||
Add notes to ‘*Help*’ buffer, if a compatibility definition has
|
||
something to warn you about.
|
||
compat-font-lock
|
||
Highlight functions that are implemented as compatibility
|
||
definitions.
|
||
|
||
|
||
File: compat.info, Node: Intentions, Prev: Usage, Up: Introduction
|
||
|
||
1.3 Intentions
|
||
==============
|
||
|
||
The library intends to provide support back until Emacs 24.3. The
|
||
intended audience are package developers that are interested in using
|
||
newer developments, without having to break compatibility.
|
||
|
||
Sadly, total backwards compatibility cannot be provided for technical
|
||
reasons. These might include:
|
||
|
||
• An existing function or macro was extended by some new
|
||
functionality. To support these cases, the function or macro would
|
||
have to be advised. As this is usually regarded as invasive and is
|
||
shown to be a significant overhead, even when the new feature is
|
||
not used, this approach is not used.
|
||
|
||
As a compromise, prefixed functions and macros (starting with a
|
||
‘compat-’ prefix) can be provided.
|
||
|
||
• New functionality was implemented in the core, and depends on
|
||
external libraries that cannot be reasonably duplicated in the
|
||
scope of a compatibility library.
|
||
|
||
• New functionality depends on an entire new, non-trivial library.
|
||
Sometimes these are provided via ELPA (xref, project, ...), but
|
||
other times it would be infeasible to duplicate an entire library
|
||
within Compat while also providing the necessary backwards
|
||
compatibility.
|
||
|
||
• It just wasn’t added, and there is no good reason (though good
|
||
excuses might exist). If you happen to find such a function, *note
|
||
reporting: Development. it would be much appreciated.
|
||
|
||
Always begin by assuming that this might be the case, unless proven
|
||
otherwise.
|
||
|
||
|
||
File: compat.info, Node: Support, Next: Development, Prev: Introduction, Up: Top
|
||
|
||
2 Support
|
||
*********
|
||
|
||
This section goes into the features that Compat manages and doesn’t
|
||
manage to provide for each Emacs version.
|
||
|
||
* Menu:
|
||
|
||
* Emacs 24.4:: Compatibility support for Emacs 24.4
|
||
* Emacs 24.5:: Compatibility support for Emacs 24.5
|
||
* Emacs 25.1:: Compatibility support for Emacs 25.1
|
||
* Emacs 26.1:: Compatibility support for Emacs 26.1
|
||
* Emacs 27.1:: Compatibility support for Emacs 27.1
|
||
* Emacs 28.1:: Compatibility support for Emacs 28.1
|
||
|
||
|
||
File: compat.info, Node: Emacs 24.4, Next: Emacs 24.5, Up: Support
|
||
|
||
2.1 Emacs 24.4
|
||
==============
|
||
|
||
The following functions and macros implemented in 24.4, and are provided
|
||
by Compat by default:
|
||
|
||
-- Macro: with-eval-after-load
|
||
See *note (elisp) Hooks for Loading: (elisp)Hooks for Loading.
|
||
|
||
-- Function: special-form-p
|
||
See *note (elisp) Special Forms: (elisp)Special Forms.
|
||
|
||
-- Function: macrop
|
||
See *note (elisp) Simple Macro: (elisp)Simple Macro.
|
||
|
||
-- Function: string-suffix-p
|
||
See *note (elisp) Text Comparison: (elisp)Text Comparison.
|
||
|
||
-- Function: delete-consecutive-dups
|
||
Defined in ‘subr.el’.
|
||
|
||
-- Function: define-error
|
||
See *note (elisp) Error Symbols: (elisp)Error Symbols.
|
||
|
||
-- Function: bool-vector-exclusive-or
|
||
See *note (elisp) Bool-Vectors: (elisp)Bool-Vectors.
|
||
|
||
-- Function: bool-vector-union
|
||
See *note (elisp) Bool-Vectors: (elisp)Bool-Vectors.
|
||
|
||
-- Function: bool-vector-intersection
|
||
See *note (elisp) Bool-Vectors: (elisp)Bool-Vectors.
|
||
|
||
-- Function: bool-vector-not
|
||
See *note (elisp) Bool-Vectors: (elisp)Bool-Vectors.
|
||
|
||
-- Function: bool-vector-subsetp
|
||
See *note (elisp) Bool-Vectors: (elisp)Bool-Vectors.
|
||
|
||
-- Function: bool-vector-count-consecutive
|
||
See *note (elisp) Bool-Vectors: (elisp)Bool-Vectors.
|
||
|
||
-- Function: bool-vector-count-population
|
||
See *note (elisp) Bool-Vectors: (elisp)Bool-Vectors.
|
||
|
||
-- Function: completion-table-merge
|
||
See *note (elisp) Basic Completion: (elisp)Basic Completion.
|
||
|
||
-- Function: completion-table-with-cache
|
||
See *note (elisp) Programmed Completion: (elisp)Programmed
|
||
Completion.
|
||
|
||
-- Function: face-spec-set
|
||
See *note (elisp) Defining Faces: (elisp)Defining Faces.
|
||
|
||
These functions are prefixed with ‘compat’ prefix, and are only
|
||
loaded when ‘compat-24’ is required:
|
||
|
||
-- Function: compat-=
|
||
-- Function: compat-<
|
||
-- Function: compat->
|
||
-- Function: compat-<=
|
||
-- Function: compat->=
|
||
See *note (elisp) Comparison of Numbers: (elisp)Comparison of
|
||
Numbers.
|
||
|
||
Allows for more than two arguments to be compared.
|
||
|
||
-- Function: compat-split-string
|
||
See *note (elisp) Creating Strings: (elisp)Creating Strings.
|
||
|
||
Takes optional argument TRIM.
|
||
|
||
Compat does not provide support for the following Lisp features
|
||
implemented in 24.4:
|
||
|
||
• Allowing the second optional argument to ‘eval’ to specify a
|
||
lexical environment.
|
||
• The ‘define-alternatives’ macro.
|
||
• Support for the ‘defalias-fset-function’ symbol property.
|
||
• The ‘group-gid’ and ‘groupd-read-gid’ functions.
|
||
• The ‘pre-redisplay-function’ hook.
|
||
• Allowing for ‘with-demoted-errors’ to take a additional argument
|
||
‘format’.
|
||
• The ‘face-spec-set’ function.
|
||
• The ‘add-face-text-property’ function.
|
||
• No ‘tty-setup-hook’ hook.
|
||
• The ‘get-pos-property’ function.
|
||
• The ‘define-advice’ macro.
|
||
• Support for generators.
|
||
• The ‘string-trim’, ‘string-trim-left’ and ‘string-trim-right’
|
||
functions. These are instead provided as prefixed function as part
|
||
of *note Emacs 26.1:: support.
|
||
|
||
|
||
File: compat.info, Node: Emacs 24.5, Next: Emacs 25.1, Prev: Emacs 24.4, Up: Support
|
||
|
||
2.2 Emacs 24.5
|
||
==============
|
||
|
||
No special support for 24.5 was deemed necessary.
|
||
|
||
|
||
File: compat.info, Node: Emacs 25.1, Next: Emacs 26.1, Prev: Emacs 24.5, Up: Support
|
||
|
||
2.3 Emacs 25.1
|
||
==============
|
||
|
||
The following functions and macros implemented in 25.1, and are provided
|
||
by Compat by default:
|
||
|
||
-- Function: format-message
|
||
See *note (elisp) Formatting Strings: (elisp)Formatting Strings.
|
||
|
||
-- Function: directory-name-p
|
||
See *note (elisp) Directory Names: (elisp)Directory Names.
|
||
|
||
-- Function: string-greaterp
|
||
See *note (elisp) Text Comparison: (elisp)Text Comparison.
|
||
|
||
-- Macro: with-file-modes
|
||
See *note (elisp) Changing Files: (elisp)Changing Files.
|
||
|
||
-- Function: alist-get
|
||
See *note (elisp) Association Lists: (elisp)Association Lists.
|
||
|
||
-- Macro: if-let
|
||
Defined in ‘subr-x.el’.
|
||
|
||
-- Macro: when-let
|
||
Defined in ‘subr-x.el’.
|
||
|
||
-- Macro: thread-first
|
||
Defined in ‘subr-x.el’.
|
||
|
||
-- Macro: thread-last
|
||
Defined in ‘subr-x.el’.
|
||
|
||
-- Function: macroexpand-1
|
||
See *note (elisp) Expansion: (elisp)Expansion.
|
||
|
||
-- Function: directory-files-recursively
|
||
See *note (elisp) Contents of Directories: (elisp)Contents of
|
||
Directories.
|
||
|
||
-- Function: bool-vector
|
||
See *note (elisp) Bool-Vectors: (elisp)Bool-Vectors.
|
||
|
||
These functions are prefixed with ‘compat’ prefix, and are only
|
||
loaded when ‘compat-25’ is required:
|
||
|
||
-- Function: compat-sort
|
||
See *note (elisp) Sequence Functions: (elisp)Sequence Functions.
|
||
|
||
Adds support for vectors to be sorted, next to just lists.
|
||
|
||
Compat does not provide support for the following Lisp features
|
||
implemented in 25.1:
|
||
|
||
• New ‘pcase’ patterns.
|
||
• The hook ‘prefix-command-echo-keystrokes-functions’ and
|
||
‘prefix-command-preserve-state-hook’.
|
||
• The hook ‘pre-redisplay-functions’.
|
||
• The function ‘make-process’.
|
||
• Support for the variable ‘inhibit-message’.
|
||
• The ‘define-inline’ functionality.
|
||
• The functions ‘string-collate-lessp’ and ‘string-collate-equalp’.
|
||
• Support for ‘alist-get’ as a generalised variable.
|
||
• The function ‘funcall-interactivly’.
|
||
• The function ‘buffer-substring-with-bidi-context’.
|
||
• The function ‘font-info’.
|
||
• The function ‘default-font-width’.
|
||
• The function ‘window-font-height’ and ‘window-font-width’.
|
||
• The function ‘window-max-chars-per-line’.
|
||
• The function ‘set-binary-mode’.
|
||
• The functions ‘bufferpos-to-filepos’ and ‘filepos-to-bufferpos’.
|
||
|
||
Note that the changes in Emacs 25.2 and 25.3 are also included here,
|
||
for the sake of simplicity.
|
||
|
||
|
||
File: compat.info, Node: Emacs 26.1, Next: Emacs 27.1, Prev: Emacs 25.1, Up: Support
|
||
|
||
2.4 Emacs 26.1
|
||
==============
|
||
|
||
The following functions and macros implemented in 26.1, and are provided
|
||
by Compat by default:
|
||
|
||
-- Function: func-arity
|
||
See *note (elisp) What Is a Function: (elisp)What Is a Function.
|
||
|
||
-- Function: mapcan
|
||
See *note (elisp) Mapping Functions: (elisp)Mapping Functions.
|
||
|
||
-- Function: cXXXr
|
||
-- Function: cXXXXr
|
||
See *note (elisp) List Elements: (elisp)List Elements.
|
||
|
||
-- Variable: gensym-counter
|
||
See ‘gensym’.
|
||
|
||
-- Function: gensym
|
||
See *note (elisp) Creating Symbols: (elisp)Creating Symbols.
|
||
|
||
-- Function: make-nearby-temp-file
|
||
See *note (elisp) Unique File Names: (elisp)Unique File Names.
|
||
|
||
-- Variable: mounted-file-systems
|
||
Defined in ‘files.el’.
|
||
|
||
-- Function: temporary-file-directory
|
||
See *note (elisp) Unique File Names: (elisp)Unique File Names.
|
||
|
||
-- Macro: if-let*
|
||
Defined in ‘subr-x.el’.
|
||
|
||
-- Macro: when-let*
|
||
Defined in ‘subr-x.el’.
|
||
|
||
-- Macro: and-let*
|
||
Defined in ‘subr-x.el’.
|
||
|
||
**Please Note:** The implementation provided by Compat does not
|
||
include a bug that was observed with Emacs 26 (see
|
||
<https://debbugs.gnu.org/cgi/bugreport.cgi?bug=31840>).
|
||
|
||
-- Function: file-local-name
|
||
See *note (elisp) Magic File Names: (elisp)Magic File Names.
|
||
|
||
-- Function: file-name-quoted-p
|
||
See *note (elisp) File Name Expansion: (elisp)File Name Expansion.
|
||
|
||
-- Function: file-name-quote
|
||
See *note (elisp) File Name Expansion: (elisp)File Name Expansion.
|
||
|
||
-- Function: image-property
|
||
Defined in ‘image.el’.
|
||
|
||
This function can also be used as a generalised variable. To use
|
||
this you need to explicitly require ‘compat-26’.
|
||
|
||
-- Function: file-attribute-type
|
||
See *note (elisp) File Attributes: (elisp)File Attributes.
|
||
|
||
-- Function: file-attribute-link-number
|
||
See *note (elisp) File Attributes: (elisp)File Attributes.
|
||
|
||
-- Function: file-attribute-user-id
|
||
See *note (elisp) File Attributes: (elisp)File Attributes.
|
||
|
||
-- Function: file-attribute-group-id
|
||
See *note (elisp) File Attributes: (elisp)File Attributes.
|
||
|
||
-- Function: file-attribute-access-time
|
||
See *note (elisp) File Attributes: (elisp)File Attributes.
|
||
|
||
-- Function: file-attribute-modification-time
|
||
See *note (elisp) File Attributes: (elisp)File Attributes.
|
||
|
||
-- Function: file-attribute-status-change-time
|
||
See *note (elisp) File Attributes: (elisp)File Attributes.
|
||
|
||
-- Function: file-attribute-size
|
||
See *note (elisp) File Attributes: (elisp)File Attributes.
|
||
|
||
-- Function: file-attribute-modes
|
||
See *note (elisp) File Attributes: (elisp)File Attributes.
|
||
|
||
-- Function: file-attribute-inode-number
|
||
See *note (elisp) File Attributes: (elisp)File Attributes.
|
||
|
||
-- Function: file-attribute-device-number
|
||
See *note (elisp) File Attributes: (elisp)File Attributes.
|
||
|
||
-- Function: file-attribute-collect
|
||
Defined in ‘files.el’.
|
||
|
||
These functions are prefixed with ‘compat’ prefix, and are only
|
||
loaded when ‘compat-26’ is required:
|
||
|
||
-- Function: compat-assoc
|
||
See *note (elisp) Association Lists: (elisp)Association Lists.
|
||
|
||
Handle the optional argument TESTFN.
|
||
|
||
-- Function: compat-line-number-at-pos
|
||
See *note (elisp) Text Lines: (elisp)Text Lines.
|
||
|
||
Handle the optional argument ABSOLUTE.
|
||
|
||
-- Function: compat-alist-get
|
||
See *note (elisp) Association Lists: (elisp)Association Lists.
|
||
|
||
Handle the optional argument TESTFN. Can also be used as a
|
||
generalised variable.
|
||
|
||
-- Function: compat-string-trim-left
|
||
See *note (elisp) Creating Strings: (elisp)Creating Strings.
|
||
|
||
Handles the optional argument REGEXP.
|
||
|
||
-- Function: compat-string-trim-right
|
||
See *note (elisp) Creating Strings: (elisp)Creating Strings.
|
||
|
||
Handles the optional argument REGEXP.
|
||
|
||
-- Function: compat-string-trim
|
||
See *note (elisp) Creating Strings: (elisp)Creating Strings.
|
||
|
||
Handles the optional arguments TRIM-LEFT and TRIM-RIGHT.
|
||
|
||
Compat does not provide support for the following Lisp features
|
||
implemented in 26.1:
|
||
|
||
• The function ‘secure-hash-algorithms’.
|
||
• The function ‘gnutls-avalaible-p’.
|
||
• Support for records and record functions.
|
||
• The function ‘mapbacktrace’.
|
||
• The function ‘file-name-case-insensitive-p’.
|
||
• The file-attributes constructors.
|
||
• The function ‘read-multiple-choice’.
|
||
• The additional elements of ‘parse-partial-sexp’.
|
||
• The function ‘add-variable-watcher’.
|
||
• The function ‘undo-amalgamate-change-group’.
|
||
• The function ‘char-from-name’
|
||
• Signalling errors when ‘length’ or ‘member’ deal with list cycles.
|
||
• The function ‘frame-list-z-order’.
|
||
• The function ‘frame-restack’.
|
||
• Support for side windows and atomic windows.
|
||
• All changes related to ‘display-buffer’.
|
||
• The function ‘window-swap-states’.
|
||
|
||
Note that the changes in Emacs 26.2 and 26.3 are also included here,
|
||
for the sake of simplicity.
|
||
|
||
|
||
File: compat.info, Node: Emacs 27.1, Next: Emacs 28.1, Prev: Emacs 26.1, Up: Support
|
||
|
||
2.5 Emacs 27.1
|
||
==============
|
||
|
||
The following functions and macros implemented in 27.1, and are provided
|
||
by Compat by default:
|
||
|
||
-- Function: proper-list-p
|
||
See *note (elisp) List-related Predicates: (elisp)List-related
|
||
Predicates.
|
||
|
||
-- Function: string-distance
|
||
See *note (elisp) Text Comparison: (elisp)Text Comparison.
|
||
|
||
-- Function: json-serialize
|
||
See *note (elisp) Parsing JSON: (elisp)Parsing JSON.
|
||
|
||
-- Function: json-insert
|
||
See *note (elisp) Parsing JSON: (elisp)Parsing JSON.
|
||
|
||
-- Function: json-parse-string
|
||
See *note (elisp) Parsing JSON: (elisp)Parsing JSON.
|
||
|
||
-- Function: json-parse-buffer
|
||
See *note (elisp) Parsing JSON: (elisp)Parsing JSON.
|
||
|
||
-- Macro: ignore-error
|
||
See *note (elisp) Handling Errors: (elisp)Handling Errors.
|
||
|
||
-- Macro: dolist-with-progress-reporter
|
||
See *note (elisp) Progress: (elisp)Progress.
|
||
|
||
-- Function: flatten-tree
|
||
See *note (elisp) Building Lists: (elisp)Building Lists.
|
||
|
||
-- Function: xor
|
||
See *note (elisp) Combining Conditions: (elisp)Combining
|
||
Conditions.
|
||
|
||
-- Variable: regexp-unmatchable
|
||
Defined in ‘subr.el’.
|
||
|
||
-- Function: decoded-time-second
|
||
Defined in ‘simple.el’.
|
||
|
||
-- Function: decoded-time-minute
|
||
Defined in ‘simple.el’.
|
||
|
||
-- Function: decoded-time-hour
|
||
Defined in ‘simple.el’.
|
||
|
||
-- Function: decoded-time-day
|
||
Defined in ‘simple.el’.
|
||
|
||
-- Function: decoded-time-month
|
||
Defined in ‘simple.el’.
|
||
|
||
-- Function: decoded-time-year
|
||
Defined in ‘simple.el’.
|
||
|
||
-- Function: decoded-time-weekday
|
||
Defined in ‘simple.el’.
|
||
|
||
-- Function: decoded-time-dst
|
||
Defined in ‘simple.el’.
|
||
|
||
-- Function: decoded-time-zone
|
||
Defined in ‘simple.el’.
|
||
|
||
-- Function: package-get-version
|
||
Defined in ‘package.el’.
|
||
|
||
-- Function: time-equal-p
|
||
See *note (elisp) Time Calculations: (elisp)Time Calculations.
|
||
|
||
-- Function: date-days-in-month
|
||
See *note (elisp) Time Calculations: (elisp)Time Calculations.
|
||
|
||
-- Function: exec-path
|
||
See *note (elisp) Subprocess Creation: (elisp)Subprocess Creation.
|
||
|
||
This function requires the ‘time-date’ feature to be loaded.
|
||
|
||
These functions are prefixed with ‘compat’ prefix, and are only
|
||
loaded when ‘compat-27’ is required:
|
||
|
||
-- Function: compat-recenter
|
||
See *note (elisp) Textual Scrolling: (elisp)Textual Scrolling.
|
||
|
||
Adds the optional argument REDISPLAY.
|
||
|
||
-- Function: compat-lookup-key
|
||
See *note (elisp) Low-Level Key Binding: (elisp)Low-Level Key
|
||
Binding.
|
||
|
||
Allows KEYMAP to be a list of keymaps.
|
||
|
||
-- Macro: compat-setq-local
|
||
See *note (elisp) Creating Buffer-Local: (elisp)Creating
|
||
Buffer-Local.
|
||
|
||
Allow for more than one variable to be set.
|
||
|
||
-- Function: compat-regexp-opt
|
||
See *note (elisp) Regexp Functions: (elisp)Regexp Functions.
|
||
|
||
Handle an empty list of strings.
|
||
|
||
-- Function: compat-file-size-human-readable
|
||
Defined in ‘files.el’.
|
||
|
||
Handle the optional third (SPACE) and forth (UNIT) arguments.
|
||
|
||
-- Function: compat-assoc-delete-all
|
||
See *note (elisp) Association Lists: (elisp)Association Lists.
|
||
|
||
Handle the optional third (TESTFN) argument.
|
||
|
||
-- Function: compat-executable-find
|
||
*note (elisp) Locating Files: (elisp)Locating Files.
|
||
|
||
Handle the optional second (REMOTE) argument.
|
||
|
||
-- Function: compat-dired-get-marked-files
|
||
Defined in ‘dired.el’
|
||
|
||
Handles the optional fifth (ERROR) argument.
|
||
|
||
Compat does not provide support for the following Lisp features
|
||
implemented in 27.1:
|
||
|
||
• Bigint support.
|
||
• The function ‘time-convert’.
|
||
• All ‘iso8601-*’ functions.
|
||
• The macro ‘benchmark-progn’.
|
||
• The function ‘read-char-from-minibuffer’.
|
||
• The minor mode ‘reveal-mode’.
|
||
• The macro ‘with-suppressed-warnings’.
|
||
• Support for ‘condition-case’ to handle t.
|
||
• The functions ‘major-mode-suspend’ and ‘major-mode-restore’.
|
||
• The function ‘provided-mode-derived-p’.
|
||
• The function ‘file-system-info’.
|
||
• The more consistent treatment of NaN values.
|
||
• The function ‘ring-resize’.
|
||
• The function ‘group-name’.
|
||
• Additional ‘format-spec’ modifiers.
|
||
• Support for additional body forms for
|
||
‘define-globalized-minor-mode’.
|
||
• The macro ‘with-connection-local-variables’ and related
|
||
functionality.
|
||
|
||
Note that the changes in Emacs 27.2 are also included here, for the
|
||
sake of simplicity.
|
||
|
||
|
||
File: compat.info, Node: Emacs 28.1, Prev: Emacs 27.1, Up: Support
|
||
|
||
2.6 Emacs 28.1
|
||
==============
|
||
|
||
The following functions and macros implemented in 28.1, and are provided
|
||
by Compat by default:
|
||
|
||
-- Function: string-search
|
||
See *note (elisp) Text Comparison: (elisp)Text Comparison.
|
||
|
||
-- Function: length=
|
||
See *note (elisp) Sequence Functions: (elisp)Sequence Functions.
|
||
|
||
-- Function: length<
|
||
See *note (elisp) Sequence Functions: (elisp)Sequence Functions.
|
||
|
||
-- Function: length>
|
||
See *note (elisp) Sequence Functions: (elisp)Sequence Functions.
|
||
|
||
-- Function: file-name-concat
|
||
See *note (elisp) Directory Names: (elisp)Directory Names.
|
||
|
||
-- Function: garbage-collect-maybe
|
||
Defined in ‘alloc.c’.
|
||
|
||
-- Function: string-replace
|
||
See *note (elisp) Search and Replace: (elisp)Search and Replace.
|
||
|
||
-- Function: always
|
||
*note (elisp) Calling Functions: (elisp)Calling Functions.
|
||
|
||
-- Function: insert-into-buffer
|
||
See *note (elisp) Insertion: (elisp)Insertion.
|
||
|
||
-- Function: replace-regexp-in-region
|
||
See *note (elisp) Search and Replace: (elisp)Search and Replace.
|
||
|
||
-- Function: replace-string-in-region
|
||
See *note (elisp) Search and Replace: (elisp)Search and Replace.
|
||
|
||
-- Function: buffer-local-boundp
|
||
See *note (elisp) Creating Buffer-Local: (elisp)Creating
|
||
Buffer-Local.
|
||
|
||
-- Function: with-existing-directory
|
||
See *note (elisp) Testing Accessibility: (elisp)Testing
|
||
Accessibility.
|
||
|
||
-- Macro: dlet
|
||
See *note (elisp) Local Variables: (elisp)Local Variables.
|
||
|
||
-- Function: ensure-list
|
||
See *note (elisp) Building Lists: (elisp)Building Lists.
|
||
|
||
-- Function: string-clean-whitespace
|
||
See *note (elisp) Creating Strings: (elisp)Creating Strings.
|
||
|
||
-- Function: string-fill
|
||
See *note (elisp) Creating Strings: (elisp)Creating Strings.
|
||
|
||
-- Function: string-lines
|
||
See *note (elisp) Creating Strings: (elisp)Creating Strings.
|
||
|
||
-- Function: string-pad
|
||
See *note (elisp) Creating Strings: (elisp)Creating Strings.
|
||
|
||
-- Function: string-chop-newline
|
||
See *note (elisp) Creating Strings: (elisp)Creating Strings.
|
||
|
||
-- Macro: named-let
|
||
See *note (elisp) Local Variables: (elisp)Local Variables.
|
||
|
||
-- Function: file-name-with-extension
|
||
See *note (elisp) File Name Components: (elisp)File Name
|
||
Components.
|
||
|
||
-- Function: directory-empty-p
|
||
See *note (elisp) Contents of Directories: (elisp)Contents of
|
||
Directories.
|
||
|
||
-- Function: format-prompt
|
||
See *note (elisp) Text from Minibuffer: (elisp)Text from
|
||
Minibuffer.
|
||
|
||
-- Function: thing-at-mouse
|
||
Defined in ‘thingatpt.el’.
|
||
|
||
-- Function: macroexp-file-name
|
||
Defined in ‘macroexp’.
|
||
|
||
-- Macro: with-environment-variables
|
||
See *note (elisp) System Environment: (elisp)System Environment.
|
||
|
||
-- Function: button-buttonize
|
||
Defined in ‘button.el’.
|
||
|
||
-- Function: make-directory-autoloads
|
||
See *note (elisp) Autoload: (elisp)Autoload.
|
||
|
||
-- Function: color-values-from-color-spec
|
||
Defined in ‘xfaces.c’.
|
||
|
||
-- Function: file-modes-number-to-symbolic
|
||
See *note (elisp) Changing Files: (elisp)Changing Files.
|
||
|
||
-- Function: file-backup-file-names
|
||
See *note (elisp) Backup Names: (elisp)Backup Names.
|
||
|
||
-- Function: make-lock-file-name
|
||
Defined in ‘files.el’.
|
||
|
||
-- Function: null-device
|
||
Defined in ‘files.el’.
|
||
|
||
-- Function: decoded-time-period
|
||
Defined in ‘time-data.el’.
|
||
|
||
-- Function: subr-primitive-p
|
||
Defined in ‘subr.el’.
|
||
|
||
These functions are prefixed with ‘compat’ prefix, and are only
|
||
loaded when ‘compat-28’ is required:
|
||
|
||
-- Function: compat-unlock-buffer
|
||
See *note (elisp) File Locks: (elisp)File Locks.
|
||
|
||
Handle ‘file-error’ conditions.
|
||
|
||
-- Function: compat-string-width
|
||
See *note (elisp) Size of Displayed Text: (elisp)Size of Displayed
|
||
Text.
|
||
|
||
Handle optional arguments FROM and TO.
|
||
|
||
-- Function: compat-json-serialize
|
||
See *note (elisp) Parsing JSON: (elisp)Parsing JSON.
|
||
|
||
Handle primitive, top-level JSON values.
|
||
|
||
-- Function: compat-json-insert
|
||
See *note (elisp) Parsing JSON: (elisp)Parsing JSON.
|
||
|
||
Handle primitive, top-level JSON values.
|
||
|
||
-- Function: compat-json-parse-string
|
||
See *note (elisp) Parsing JSON: (elisp)Parsing JSON.
|
||
|
||
Handle primitive, top-level JSON values.
|
||
|
||
-- Function: compat-json-parse-buffer
|
||
See *note (elisp) Parsing JSON: (elisp)Parsing JSON.
|
||
|
||
Handle primitive, top-level JSON values.
|
||
|
||
-- Function: compat-count-windows
|
||
Defined in ‘window.el’.
|
||
|
||
Handle optional argument ALL-FRAMES.
|
||
|
||
Compat does not provide support for the following Lisp features
|
||
implemented in 28.1:
|
||
|
||
• Support for ‘interactive’ or ‘declare’ to list applicable modes.
|
||
• Support for ‘:interactive’ argument to ‘define-minor-mode’ and
|
||
‘define-derived-mode’.
|
||
• Support for ‘:predicate’ argument to
|
||
‘define-globalized-minor-mode’.
|
||
• "Success handler" for ‘condition-case’.
|
||
• The function ‘benchmark-call’.
|
||
• Support for the ‘natnum’ defcustom type.
|
||
• The function ‘macroexp-compiling-p’.
|
||
• The function ‘macroexp-warn-and-return’.
|
||
• Additional Edebug keywords.
|
||
• Shorthand support.
|
||
• The function ‘custom-add-choice’.
|
||
• The function ‘decoded-time-period’.
|
||
• The function ‘dom-print’.
|
||
• The function ‘dom-remove-attribute’.
|
||
• The function ‘dns-query-asynchronous’.
|
||
• The function ‘get-locale-names’.
|
||
• The function ‘json-avaliable-p’.
|
||
• The function ‘mail-header-parse-addresses-lax’.
|
||
• The function ‘mail-header-parse-address-lax’.
|
||
• The function ‘make-separator-line’.
|
||
• The function ‘num-processors’.
|
||
• The function ‘object-intervals’.
|
||
• The function ‘process-lines-ignore-status’.
|
||
• The function ‘require-theme’.
|
||
• The function ‘syntax-class-to-char’.
|
||
• The function ‘null-device’ and ‘path-separator’.
|
||
|
||
|
||
File: compat.info, Node: Development, Next: Function Index, Prev: Support, Up: Top
|
||
|
||
3 Development
|
||
*************
|
||
|
||
Compat is developed on SourceHut (https://sr.ht/~pkal/compat). A
|
||
restricted GitHub mirror (https://github.com/phikal/compat.el) is also
|
||
maintained.
|
||
|
||
Patches and comments can be sent to the development mailing list
|
||
(https://lists.sr.ht/~pkal/compat-devel) (~pkal/compat-devel@lists.sr.ht
|
||
<~pkal/compat-devel@lists.sr.ht>). Bug reports are best sent to the
|
||
issue tracker (https://todo.sr.ht/~pkal/compat) (~pkal/compat@todo.sr.ht
|
||
<~pkal/compat@todo.sr.ht>). The GitHub mirror can also be used to
|
||
submit patches. These may include issues in the compatibility code,
|
||
missing definitions or performance issues.
|
||
|
||
Please note that as a GNU ELPA package, Compat requires contributors
|
||
to have signed the FSF copyright assignment
|
||
(https://www.gnu.org/software/emacs/manual/html_node/emacs/Copyright-Assignment.html),
|
||
before any non-trivial contribution (roughly 15 lines of code) can be
|
||
applied.
|
||
|
||
|
||
File: compat.info, Node: Function Index, Next: Variable Index, Prev: Development, Up: Top
|
||
|
||
Appendix A Function Index
|
||
*************************
|
||
|
||
|