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.0.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::

— The Detailed Node Listing —

Introduction

* Overview::
* Usage::
* Intentions::

Usage

* Additional libraries::

Support

* Emacs 24.4: Emacs 244.
* Emacs 24.5: Emacs 245.
* Emacs 25.1: Emacs 251.
* Emacs 26.1: Emacs 261.
* Emacs 27.1: Emacs 271.
* Emacs 28.1: Emacs 281.



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.0.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: Emacs 244.
* Emacs 24.5: Emacs 245.
* Emacs 25.1: Emacs 251.
* Emacs 26.1: Emacs 261.
* Emacs 27.1: Emacs 271.
* Emacs 28.1: Emacs 281.


File: compat.info,  Node: Emacs 244,  Next: Emacs 245,  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:

‘=’, ‘<’, ‘>’, ‘<=’, ‘>=’
     See *note (elisp) Comparison of Numbers: (elisp)Comparison of
     Numbers.

     Allows for more than two arguments to be compared.
‘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.


File: compat.info,  Node: Emacs 245,  Next: Emacs 251,  Prev: Emacs 244,  Up: Support

2.2 Emacs 24.5
==============

No special support for 24.5 was deemed necessary.


File: compat.info,  Node: Emacs 251,  Next: Emacs 261,  Prev: Emacs 245,  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 ‘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:

‘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’.


File: compat.info,  Node: Emacs 261,  Next: Emacs 271,  Prev: Emacs 251,  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 ‘string-trim-left’
     See *note (elisp) Creating Strings: (elisp)Creating Strings.
Function ‘string-trim-right’
     See *note (elisp) Creating Strings: (elisp)Creating Strings.
Function ‘string-trim’
     See *note (elisp) Creating Strings: (elisp)Creating Strings.
Function ‘c[ad]{3,4}r’
     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.

   These functions are prefixed with ‘compat’ prefix, and are only
loaded when ‘compat-26’ is required:

‘assoc’
     See *note (elisp) Association Lists: (elisp)Association Lists.

     Handle the optional argument TESTFN.
‘line-number-at-pos’
     See *note (elisp) Text Lines: (elisp)Text Lines.

     Handle the optional argument ABSOLUTE.
‘alist-get’
     See *note (elisp) Association Lists: (elisp)Association Lists.

     Handle the optional argument TESTFN.

   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’.


File: compat.info,  Node: Emacs 271,  Next: Emacs 281,  Prev: Emacs 261,  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’.

   These functions are prefixed with ‘compat’ prefix, and are only
loaded when ‘compat-27’ is required:

Function ‘recenter’
     See *note (elisp) Textual Scrolling: (elisp)Textual Scrolling.

     Adds the optional argument REDISPLAY.
Function ‘lookup-key’
     See *note (elisp) Low-Level Key Binding: (elisp)Low-Level Key
     Binding.

     Allows KEYMAP to be a list of keymaps.
Macro ‘setq-local’
     See *note (elisp) Creating Buffer-Local: (elisp)Creating
     Buffer-Local.

     Allow for more than one variable to be set.
Function ‘regexp-opt’
     See *note (elisp) Regexp Functions: (elisp)Regexp Functions.

     Handle an empty list of strings.
Function ‘file-size-human-readable’
     Defined in ‘files.el’.

     Handle the optional third (SPACE) and forth (UNIT) arguments.
Function ‘assoc-delete-all’
     See *note (elisp) Association Lists: (elisp)Association Lists.

     Handle the optional third (TESTFN) 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 function ‘time-equal-p’.
   • The function ‘date-days-in-month’.
   • 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’.


File: compat.info,  Node: Emacs 281,  Prev: Emacs 271,  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.

   These functions are prefixed with ‘compat’ prefix, and are only
loaded when ‘compat-28’ is required:

Function ‘unlock-buffer’
     See *note (elisp) File Locks: (elisp)File Locks.

     Handle ‘file-error’ conditions.

Function ‘string-width’
     See *note (elisp) Size of Displayed Text: (elisp)Size of Displayed
     Text.

     Handle optional arguments FROM and TO.

Function ‘json-serialize’
     See *note (elisp) Parsing JSON: (elisp)Parsing JSON.

     Handle primitive, top-level JSON values.
Function ‘json-insert’
     See *note (elisp) Parsing JSON: (elisp)Parsing JSON.

     Handle primitive, top-level JSON values.
Function ‘json-parse-string’
     See *note (elisp) Parsing JSON: (elisp)Parsing JSON.

     Handle primitive, top-level JSON values.
Function ‘json-parse-buffer’
     See *note (elisp) Parsing JSON: (elisp)Parsing JSON.

     Handle primitive, top-level JSON values.
Function ‘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,  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, bug reports 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>).  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.



Tag Table:
Node: Top821
Node: Introduction2036
Node: Overview2195
Node: Usage3418
Node: Additional libraries4206
Node: Intentions4661
Node: Support6271
Node: Emacs 2446653
Node: Emacs 2459535
Node: Emacs 2519706
Node: Emacs 26112286
Node: Emacs 27114920
Node: Emacs 28118728
Node: Development24444

End Tag Table


Local Variables:
coding: utf-8
End:
