From 5fc1137a0288061d32df9f684742ea177504e8cd Mon Sep 17 00:00:00 2001 From: Andreas Gerler Date: Thu, 23 Nov 2023 19:47:04 +0100 Subject: [PATCH] update compat Signed-off-by: Andreas Gerler --- elpa/compat-29.1.3.4.signed | 1 - elpa/compat-29.1.4.1.signed | 1 + .../NEWS.org | 35 +- .../compat-25.el | 2 +- .../compat-26.el | 2 +- .../compat-27.el | 15 +- .../compat-28.el | 13 +- .../compat-29.el | 110 +++++- .../compat-autoloads.el | 0 .../compat-macs.el | 0 .../compat-pkg.el | 2 +- .../compat.el | 2 +- .../compat.info | 343 +++++++++++------- elpa/{compat-29.1.3.4 => compat-29.1.4.1}/dir | 0 14 files changed, 342 insertions(+), 184 deletions(-) delete mode 100644 elpa/compat-29.1.3.4.signed create mode 100644 elpa/compat-29.1.4.1.signed rename elpa/{compat-29.1.3.4 => compat-29.1.4.1}/NEWS.org (90%) rename elpa/{compat-29.1.3.4 => compat-29.1.4.1}/compat-25.el (99%) rename elpa/{compat-29.1.3.4 => compat-29.1.4.1}/compat-26.el (99%) rename elpa/{compat-29.1.3.4 => compat-29.1.4.1}/compat-27.el (98%) rename elpa/{compat-29.1.3.4 => compat-29.1.4.1}/compat-28.el (98%) rename elpa/{compat-29.1.3.4 => compat-29.1.4.1}/compat-29.el (94%) rename elpa/{compat-29.1.3.4 => compat-29.1.4.1}/compat-autoloads.el (100%) rename elpa/{compat-29.1.3.4 => compat-29.1.4.1}/compat-macs.el (100%) rename elpa/{compat-29.1.3.4 => compat-29.1.4.1}/compat-pkg.el (61%) rename elpa/{compat-29.1.3.4 => compat-29.1.4.1}/compat.el (99%) rename elpa/{compat-29.1.3.4 => compat-29.1.4.1}/compat.info (96%) rename elpa/{compat-29.1.3.4 => compat-29.1.4.1}/dir (100%) diff --git a/elpa/compat-29.1.3.4.signed b/elpa/compat-29.1.3.4.signed deleted file mode 100644 index 6475f6a4..00000000 --- a/elpa/compat-29.1.3.4.signed +++ /dev/null @@ -1 +0,0 @@ -Good signature from 066DAFCB81E42C40 GNU ELPA Signing Agent (2019) (trust undefined) created at 2023-02-11T23:05:03+0100 using RSA \ No newline at end of file diff --git a/elpa/compat-29.1.4.1.signed b/elpa/compat-29.1.4.1.signed new file mode 100644 index 00000000..2e67f96e --- /dev/null +++ b/elpa/compat-29.1.4.1.signed @@ -0,0 +1 @@ +Good signature from 066DAFCB81E42C40 GNU ELPA Signing Agent (2019) (trust undefined) created at 2023-03-26T23:05:02+0200 using RSA \ No newline at end of file diff --git a/elpa/compat-29.1.3.4/NEWS.org b/elpa/compat-29.1.4.1/NEWS.org similarity index 90% rename from elpa/compat-29.1.3.4/NEWS.org rename to elpa/compat-29.1.4.1/NEWS.org index 0a54477a..f7f1a1a3 100644 --- a/elpa/compat-29.1.3.4/NEWS.org +++ b/elpa/compat-29.1.4.1/NEWS.org @@ -1,4 +1,24 @@ -#+title: compat.el - Changelog +#+link: compat-srht https://todo.sr.ht/~pkal/compat/ +#+link: compat-gh https://github.com/emacs-compat/compat/issues/ +#+options: toc:nil num:nil author:nil + +* Release of "Compat" Version 29.1.4.1 + +- compat-29: Add ~directory-abbrev-apply~. +- compat-29: Add ~directory-abbrev-make-regexp~. + +(Release <2023-03-26 Sun>) + +* Release of "Compat" Version 29.1.4.0 + +- compat-27: Drop obsolete ~compat-call dired-get-marked-files~. +- compat-28: Add support for ~defcustom~ type ~natnum~. +- compat-29: Add ~with-restriction~ and ~without-restriction~. +- compat-29: Add ~cl-constantly~. +- compat-29: Drop ~with-narrowing~ which was renamed to ~with-restriction~. +- compat-28: Add support for ~defcustom~ type ~key~. + +(Release <2023-03-05 Sun>) * Release of "Compat" Version 29.1.3.4 @@ -33,7 +53,8 @@ - Fix regression, which prevented loading Compat in interpreted mode. We ensure that Compat works interpreted and byte compiled by running the entire test - suite twice in the CI. + suite twice in the CI. See https://github.com/magit/magit/issues/4858 for the + corresponding Magit issue. - compat-27: Add ~file-name-unquote~. - compat-28: Add ~mark-thing-at-mouse~. - compat-29: Replace ~string-lines~ with version from Emacs 29, support optional @@ -128,7 +149,7 @@ - compat-29: Drop broken functions ~string-pixel-width~ and ~buffer-text-pixel-size~. These functions had poor performance which lead to a downstream issue in the doom-modeline package. If a more efficient solution is - possible, the function will be added back. + possible, the function will be added back. See [[compat-gh:8]] for the bug report. - compat-29: Drop broken function ~string-limit~. - compat-29: Drop broken macro ~with-buffer-unmodified-if-unchanged~, which relied on ~buffer-hash~ which does not exist on all supported Emacs versions. @@ -170,7 +191,7 @@ * Release of "Compat" Version 28.1.2.2 -This is a minor release that hopes to address [[compat:7]]. +This is a minor release that hopes to address [[compat-srht:7]]. (Release <2022-08-25 Thu>) @@ -192,7 +213,7 @@ include much more documentation that had been the case previously. The main change of this release has been the major simplification of Compat's initialisation system, improving the situation around issues -people had been reporting ([[compat:4]], once again) with unconventional +people had been reporting ([[compat-srht:4]], once again) with unconventional or unpopular packaging systems. In addition to this, the following functional changes have been made: @@ -209,7 +230,7 @@ Minor improvements to manual are also part of this release. This release just contains a hot-fix for an issue introduced in the last version, where compat.el raises an error during byte compilation. -See [[compat:4]]. +See [[compat-srht:4]]. (Release <2022-06-19 Sun>) @@ -229,7 +250,7 @@ Two main changes have necessitated a new patch release: This is a minor release fixing a bug in =json-serialize=, that could cause unintended side-effects, not related to packages using Compat -directly (see [[compat:2]]). +directly (see [[compat-srht:2]]). (Released <2022-05-05 Thu>) diff --git a/elpa/compat-29.1.3.4/compat-25.el b/elpa/compat-29.1.4.1/compat-25.el similarity index 99% rename from elpa/compat-29.1.3.4/compat-25.el rename to elpa/compat-29.1.4.1/compat-25.el index f6ad2ad4..b393dc8e 100644 --- a/elpa/compat-29.1.3.4/compat-25.el +++ b/elpa/compat-29.1.4.1/compat-25.el @@ -21,7 +21,7 @@ ;;; Code: -(eval-when-compile (require 'compat-macs)) +(eval-when-compile (load "compat-macs.el" nil t t)) (compat-version "25.1") diff --git a/elpa/compat-29.1.3.4/compat-26.el b/elpa/compat-29.1.4.1/compat-26.el similarity index 99% rename from elpa/compat-29.1.3.4/compat-26.el rename to elpa/compat-29.1.4.1/compat-26.el index 956c4a75..0c22fbf0 100644 --- a/elpa/compat-29.1.3.4/compat-26.el +++ b/elpa/compat-29.1.4.1/compat-26.el @@ -21,7 +21,7 @@ ;;; Code: -(eval-when-compile (require 'compat-macs)) +(eval-when-compile (load "compat-macs.el" nil t t)) (compat-require compat-25 "25.1") (compat-version "26.1") diff --git a/elpa/compat-29.1.3.4/compat-27.el b/elpa/compat-29.1.4.1/compat-27.el similarity index 98% rename from elpa/compat-29.1.3.4/compat-27.el rename to elpa/compat-29.1.4.1/compat-27.el index a2e47ca2..3ff075dd 100644 --- a/elpa/compat-29.1.3.4/compat-27.el +++ b/elpa/compat-29.1.4.1/compat-27.el @@ -21,7 +21,7 @@ ;;; Code: -(eval-when-compile (require 'compat-macs)) +(eval-when-compile (load "compat-macs.el" nil t t)) (compat-require compat-26 "26.1") (compat-version "27.1") @@ -574,19 +574,6 @@ The return value is a string (or nil in case we can’t find it)." (or (lm-header "package-version") (lm-header "version"))))))))) -;;;; Defined in dired.el - -(compat-defun dired-get-marked-files - (&optional localp arg filter distinguish-one-marked error) - "Obsolete function." - :obsolete "The compatibility function has been made obsolete." - :feature dired - :extended t - (let ((result (dired-get-marked-files localp arg filter distinguish-one-marked))) - (if (and (null result) error) - (user-error (if (stringp error) error "No files specified")) - result))) - ;;;; Defined in time-date.el (compat-defun make-decoded-time ;; diff --git a/elpa/compat-29.1.3.4/compat-28.el b/elpa/compat-29.1.4.1/compat-28.el similarity index 98% rename from elpa/compat-29.1.3.4/compat-28.el rename to elpa/compat-29.1.4.1/compat-28.el index 57a40f71..4cca3c20 100644 --- a/elpa/compat-29.1.3.4/compat-28.el +++ b/elpa/compat-29.1.4.1/compat-28.el @@ -21,7 +21,7 @@ ;;; Code: -(eval-when-compile (require 'compat-macs)) +(eval-when-compile (load "compat-macs.el" nil t t)) (compat-require compat-27 "27.1") (compat-version "28.1") @@ -833,5 +833,16 @@ function will never return nil." ;; Obsolete Alias since 29 (compat-defalias button-buttonize buttonize :obsolete t) ;; +;;;; Defined in wid-edit.el + +(compat-guard t ;; + :feature wid-edit + (define-widget 'natnum 'restricted-sexp + "A nonnegative integer." + :tag "Integer (positive)" + :value 0 + :type-error "This field should contain a nonnegative integer" + :match-alternatives '(natnump))) + (provide 'compat-28) ;;; compat-28.el ends here diff --git a/elpa/compat-29.1.3.4/compat-29.el b/elpa/compat-29.1.4.1/compat-29.el similarity index 94% rename from elpa/compat-29.1.3.4/compat-29.el rename to elpa/compat-29.1.4.1/compat-29.el index 9cf4a769..8a22639b 100644 --- a/elpa/compat-29.1.3.4/compat-29.el +++ b/elpa/compat-29.1.4.1/compat-29.el @@ -21,7 +21,7 @@ ;;; Code: -(eval-when-compile (require 'compat-macs)) +(eval-when-compile (load "compat-macs.el" nil t t)) (compat-require compat-28 "28.1") ;; Preloaded in loadup.el @@ -294,22 +294,39 @@ in order to restore the state of the local variables set via this macro. "Delete the current line." (delete-region (pos-bol) (pos-bol 2))) -(compat-defmacro with-narrowing (start end &rest rest) ;; +(compat-defmacro with-restriction (start end &rest rest) ;; "Execute BODY with restrictions set to START and END. The current restrictions, if any, are restored upon return. -With the optional :locked TAG argument, inside BODY, -`narrow-to-region' and `widen' can be used only within the START -and END limits, unless the restrictions are unlocked by calling -`narrowing-unlock' with TAG. See `narrowing-lock' for a more -detailed description. +When the optional :label LABEL argument is present, in which +LABEL is a symbol, inside BODY, `narrow-to-region' and `widen' +can be used only within the START and END limits. To gain access +to other portions of the buffer, use `without-restriction' with the +same LABEL argument. -\(fn START END [:locked TAG] BODY)" +\(fn START END [:label LABEL] BODY)" + (declare (indent 0) (debug t)) `(save-restriction (narrow-to-region ,start ,end) ;; Locking is ignored - ,@(if (eq (car rest) :locked) (cddr rest) rest))) + ,@(if (eq (car rest) :label) (cddr rest) rest))) + +(compat-defmacro without-restriction (&rest rest) ;; + "Execute BODY without restrictions. + +The current restrictions, if any, are restored upon return. + +When the optional :label LABEL argument is present, the +restrictions set by `with-restriction' with the same LABEL argument +are lifted. + +\(fn [:label LABEL] BODY)" + (declare (indent 0) (debug t)) + `(save-restriction + (widen) + ;; Locking is ignored + ,@(if (eq (car rest) :label) (cddr rest) rest))) (compat-defmacro with-memoization (place &rest code) ;; "Return the value of CODE and stash it in PLACE. @@ -606,6 +623,31 @@ The variable list SPEC is the same as in `if-let*'." ;;;; Defined in files.el +(compat-defun directory-abbrev-make-regexp (directory) ;; + "Create a regexp to match DIRECTORY for `directory-abbrev-alist'." + (let ((regexp + ;; We include a slash at the end, to avoid spurious + ;; matches such as `/usr/foobar' when the home dir is + ;; `/usr/foo'. + (concat "\\`" (regexp-quote directory) "\\(/\\|\\'\\)"))) + ;; The value of regexp could be multibyte or unibyte. In the + ;; latter case, we need to decode it. + (if (multibyte-string-p regexp) + regexp + (decode-coding-string regexp + (if (eq system-type 'windows-nt) + 'utf-8 + locale-coding-system))))) + +(compat-defun directory-abbrev-apply (filename) ;; + "Apply the abbreviations in `directory-abbrev-alist' to FILENAME. +Note that when calling this, you should set `case-fold-search' as +appropriate for the filesystem used for FILENAME." + (dolist (dir-abbrev directory-abbrev-alist filename) + (when (string-match (car dir-abbrev) filename) + (setq filename (concat (cdr dir-abbrev) + (substring filename (match-end 0))))))) + (compat-defun file-name-split (filename) ;; "Return a list of all the components of FILENAME. On most systems, this will be true: @@ -1167,14 +1209,17 @@ value can also be a property list with properties `:enter' and :repeat (:enter (commands ...) :exit (commands ...)) `:enter' specifies the list of additional commands that only -enter `repeat-mode'. When the list is empty, then by default all -commands in the map enter `repeat-mode'. This is useful when -there is a command that has the `repeat-map' symbol property, but -doesn't exist in this specific map. `:exit' is a list of -commands that exit `repeat-mode'. When the list is empty, no -commands in the map exit `repeat-mode'. This is useful when a -command exists in this specific map, but it doesn't have the -`repeat-map' symbol property on its symbol. +enter `repeat-mode'. When the list is empty, then only the +commands defined in the map enter `repeat-mode'. Specifying a +list of commands is useful when there are commands that have the +`repeat-map' symbol property, but don't exist in this specific +map. + +`:exit' is a list of commands that exit `repeat-mode'. When the +list is empty, no commands in the map exit `repeat-mode'. +Specifying a list of commands is useful when those commands exist +in this specific map, but should not have the `repeat-map' symbol +property. \(fn VARIABLE-NAME &key DOC FULL PARENT SUPPRESS NAME PREFIX KEYMAP REPEAT &rest [KEY DEFINITION]...)" (declare (indent 1)) @@ -1346,6 +1391,13 @@ Also see `buttonize'." (setq sentences (1- sentences))) sentences)))) +;;;; Defined in cl-lib.el + +(compat-defun cl-constantly (value) ;; + "Return a function that takes any number of arguments, but returns VALUE." + :feature cl-lib + (lambda (&rest _) value)) + ;;;; Defined in cl-macs.el (compat-defmacro cl-with-gensyms (names &rest body) ;; @@ -1499,5 +1551,29 @@ The same keyword arguments are supported as in :directory t ,@body)) +;;;; Defined in wid-edit.el + +(compat-guard (not (fboundp 'widget-key-validate)) ;; + :feature wid-edit + (defvar widget-key-prompt-value-history nil + "History of input to `widget-key-prompt-value'.") + (define-widget 'key 'editable-field + "A key sequence." + :prompt-value 'widget-field-prompt-value + :match 'widget-key-valid-p + :format "%{%t%}: %v" + :validate 'widget-key-validate + :keymap widget-key-sequence-map + :help-echo "C-q: insert KEY, EVENT, or CODE; RET: enter value" + :tag "Key") + (defun widget-key-valid-p (_widget value) + (key-valid-p value)) + (defun widget-key-validate (widget) + (unless (and (stringp (widget-value widget)) + (key-valid-p (widget-value widget))) + (widget-put widget :error (format "Invalid key: %S" + (widget-value widget))) + widget))) + (provide 'compat-29) ;;; compat-29.el ends here diff --git a/elpa/compat-29.1.3.4/compat-autoloads.el b/elpa/compat-29.1.4.1/compat-autoloads.el similarity index 100% rename from elpa/compat-29.1.3.4/compat-autoloads.el rename to elpa/compat-29.1.4.1/compat-autoloads.el diff --git a/elpa/compat-29.1.3.4/compat-macs.el b/elpa/compat-29.1.4.1/compat-macs.el similarity index 100% rename from elpa/compat-29.1.3.4/compat-macs.el rename to elpa/compat-29.1.4.1/compat-macs.el diff --git a/elpa/compat-29.1.3.4/compat-pkg.el b/elpa/compat-29.1.4.1/compat-pkg.el similarity index 61% rename from elpa/compat-29.1.3.4/compat-pkg.el rename to elpa/compat-29.1.4.1/compat-pkg.el index fc1c8acd..ce297f22 100644 --- a/elpa/compat-29.1.3.4/compat-pkg.el +++ b/elpa/compat-29.1.4.1/compat-pkg.el @@ -1,2 +1,2 @@ ;; Generated package description from compat.el -*- no-byte-compile: t -*- -(define-package "compat" "29.1.3.4" "Emacs Lisp Compatibility Library" '((emacs "24.4") (seq "2.3")) :commit "42cf6f29bcab1d390046299c09285db7be03932c" :authors '(("Philip Kaludercic , Daniel Mendler" . "mail@daniel-mendler.de")) :maintainer '("Daniel Mendler , Compat Development" . "~pkal/compat-devel@lists.sr.ht") :keywords '("lisp") :url "https://github.com/emacs-compat/compat") +(define-package "compat" "29.1.4.1" "Emacs Lisp Compatibility Library" '((emacs "24.4") (seq "2.3")) :commit "cb09942868d50e654f159f9614fe3f22af96e547" :authors '(("Philip Kaludercic , Daniel Mendler" . "mail@daniel-mendler.de")) :maintainer '("Daniel Mendler , Compat Development" . "~pkal/compat-devel@lists.sr.ht") :keywords '("lisp") :url "https://github.com/emacs-compat/compat") diff --git a/elpa/compat-29.1.3.4/compat.el b/elpa/compat-29.1.4.1/compat.el similarity index 99% rename from elpa/compat-29.1.3.4/compat.el rename to elpa/compat-29.1.4.1/compat.el index 48d30c54..d318489d 100644 --- a/elpa/compat-29.1.3.4/compat.el +++ b/elpa/compat-29.1.4.1/compat.el @@ -4,7 +4,7 @@ ;; Author: Philip Kaludercic , Daniel Mendler ;; Maintainer: Daniel Mendler , Compat Development <~pkal/compat-devel@lists.sr.ht> -;; Version: 29.1.3.4 +;; Version: 29.1.4.1 ;; URL: https://github.com/emacs-compat/compat ;; Package-Requires: ((emacs "24.4") (seq "2.3")) ;; Keywords: lisp diff --git a/elpa/compat-29.1.3.4/compat.info b/elpa/compat-29.1.4.1/compat.info similarity index 96% rename from elpa/compat-29.1.3.4/compat.info rename to elpa/compat-29.1.4.1/compat.info index 8dc4614f..fcd83e1c 100644 --- a/elpa/compat-29.1.3.4/compat.info +++ b/elpa/compat-29.1.4.1/compat.info @@ -1,4 +1,4 @@ -This is doc5ZeelO.info, produced by makeinfo version 6.7 from +This is doc0jZUSv.info, produced by makeinfo version 6.7 from compat.texi. Copyright © 2022-2023 Free Software Foundation, Inc. @@ -20,14 +20,14 @@ START-INFO-DIR-ENTRY END-INFO-DIR-ENTRY  -File: doc5ZeelO.info, Node: Top, Next: Introduction, Up: (dir) +File: doc0jZUSv.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 -29.1.3.4. +29.1.4.1. Copyright © 2022-2023 Free Software Foundation, Inc. @@ -68,7 +68,7 @@ Support  -File: doc5ZeelO.info, Node: Introduction, Next: Support, Prev: Top, Up: Top +File: doc0jZUSv.info, Node: Introduction, Next: Support, Prev: Top, Up: Top 1 Introduction ************** @@ -80,7 +80,7 @@ File: doc5ZeelO.info, Node: Introduction, Next: Support, Prev: Top, Up: Top * Limitations::  -File: doc5ZeelO.info, Node: Overview, Next: Usage, Up: Introduction +File: doc0jZUSv.info, Node: Overview, Next: Usage, Up: Introduction 1.1 Overview ============ @@ -95,7 +95,7 @@ audience are package developers that are interested in using newer developments, without having to break compatibility.  -File: doc5ZeelO.info, Node: Usage, Next: Limitations, Prev: Overview, Up: Introduction +File: doc0jZUSv.info, Node: Usage, Next: Limitations, Prev: Overview, Up: Introduction 1.2 Usage ========= @@ -103,7 +103,7 @@ File: doc5ZeelO.info, Node: Usage, Next: Limitations, Prev: Overview, Up: In The intended use-case for this library is for package developers to add as a dependency in the header: - ;; Package-Requires: ((emacs "24.4") (compat "29.1.3.4")) + ;; Package-Requires: ((emacs "24.4") (compat "29.1.4.1")) There is no need to depend on ‘emacs’ 24.4 specifically. One can choose to any newer version, if features not provided by Compat @@ -183,7 +183,7 @@ provide a development mailing list <~pkal/compat-devel@lists.sr.ht>).  -File: doc5ZeelO.info, Node: Limitations, Prev: Usage, Up: Introduction +File: doc0jZUSv.info, Node: Limitations, Prev: Usage, Up: Introduction 1.3 Limitations =============== @@ -218,6 +218,10 @@ belong here, a *note report: Development. would be much appreciated. be used by packages, but is only useful on the configuration level. The macro ‘setopt’ is such an example. + • Private (double dashed) functions are not ported back. If Compat + includes some private functions, they are meant purely for internal + usage. + • The added or extended function belongs to the “application level” and not the “library level”. Features which are not preloaded often belong to the “application level”. Application examples are @@ -271,7 +275,7 @@ belong here, a *note report: Development. would be much appreciated. the level of Compat.  -File: doc5ZeelO.info, Node: Support, Next: Development, Prev: Introduction, Up: Top +File: doc0jZUSv.info, Node: Support, Next: Development, Prev: Introduction, Up: Top 2 Support ********* @@ -288,7 +292,7 @@ manage to provide for each Emacs version. * Emacs 29.1:: Compatibility support for Emacs 29.1  -File: doc5ZeelO.info, Node: Emacs 25.1, Next: Emacs 26.1, Up: Support +File: doc0jZUSv.info, Node: Emacs 25.1, Next: Emacs 26.1, Up: Support 2.1 Emacs 25.1 ============== @@ -519,7 +523,7 @@ implemented in 25.1: • The ‘thunk’ library.  -File: doc5ZeelO.info, Node: Emacs 26.1, Next: Emacs 27.1, Prev: Emacs 25.1, Up: Support +File: doc0jZUSv.info, Node: Emacs 26.1, Next: Emacs 27.1, Prev: Emacs 25.1, Up: Support 2.2 Emacs 26.1 ============== @@ -930,7 +934,7 @@ implemented in 26.1: • The ‘xdg’ library.  -File: doc5ZeelO.info, Node: Emacs 27.1, Next: Emacs 28.1, Prev: Emacs 26.1, Up: Support +File: doc0jZUSv.info, Node: Emacs 27.1, Next: Emacs 28.1, Prev: Emacs 26.1, Up: Support 2.3 Emacs 27.1 ============== @@ -1399,7 +1403,7 @@ implemented in 27.1: • The ‘image-converter’ library.  -File: doc5ZeelO.info, Node: Emacs 28.1, Next: Emacs 29.1, Prev: Emacs 27.1, Up: Support +File: doc0jZUSv.info, Node: Emacs 28.1, Next: Emacs 29.1, Prev: Emacs 27.1, Up: Support 2.4 Emacs 28.1 ============== @@ -1411,6 +1415,9 @@ The following functions and macros are implemented in Emacs 28.1. These functions are made available by Compat on Emacs versions older than 28.1. + The ‘defcustom’ type ‘natnum’ introduced in Emacs 28.1 is made +available by Compat. + -- Function: process-lines-ignore-status program &rest args This function is just like ‘process-lines’, but does not signal an error if PROGRAM exits with a non-zero exit status. @@ -1824,7 +1831,6 @@ implemented in 28.1: ‘define-globalized-minor-mode’. • Support for the ‘:success’ handler of ‘condition-case’. • The function ‘benchmark-call’. - • Support for the ‘natnum’ defcustom type. • Additional Edebug keywords. • The libjansson JSON APIs, e.g., ‘json-parse-string’. • The macro ‘pcase-setq’. @@ -1850,7 +1856,7 @@ implemented in 28.1: • The ‘multisession’ library.  -File: doc5ZeelO.info, Node: Emacs 29.1, Prev: Emacs 28.1, Up: Support +File: doc0jZUSv.info, Node: Emacs 29.1, Prev: Emacs 28.1, Up: Support 2.5 Emacs 29.1 ============== @@ -1863,6 +1869,9 @@ functions are made available by Compat on Emacs versions older than 29.1. Note that due to upstream changes, it might happen that there will be the need for changes, so use these functions with care. + The ‘defcustom’ type ‘key’ introduced in Emacs 28.1 is made available +by Compat. + -- Function: count-sentences start end Count sentences in current buffer from START to END. @@ -1911,13 +1920,51 @@ will be the need for changes, so use these functions with care. evaluated and then stashed in PLACE. If PLACE’s value is non-‘nil’, return that value instead of evaluating CODE. - -- Macro: with-narrowing start end [:locked tag] &rest body - Execute BODY with restrictions set to START and END. The current - restrictions, if any, are restored upon return. With the optional - :locked TAG argument, inside TAG, ‘narrow-to-region’ and ‘widen’ - can be used only within the START and END limits, unless the - restrictions are unlocked by calling ‘narrowing-unlock’ with TAG. - See ‘narrowing-lock’ for a more detailed description. + -- Special Form: with-restriction start end [:label label] body + This special form saves the current bounds of the accessible + portion of the buffer, sets the accessible portion to start at + START and end at END, evaluates the BODY forms, and restores the + saved bounds. In that case it is equivalent to + + (save-restriction + (narrow-to-region start end) + body) + + When the optional argument LABEL, a symbol, is present, the + narrowing is “labeled”. A labeled narrowing differs from a + non-labeled one in several ways: + + • During the evaluation of the BODY form, ‘narrow-to-region’ and + ‘widen’ can be used only within the START and END limits. + + • To lift the restriction introduced by ‘with-restriction’ and + gain access to other portions of the buffer, use + ‘without-restriction’ with the same LABEL argument. (Another + way to gain access to other portions of the buffer is to use + an indirect buffer (*note (elisp)Indirect Buffers::).) + + • Labeled narrowings can be nested. + + • Labeled narrowings can only be used in Lisp programs: they are + never visible on display, and never interfere with narrowings + set by the user. + + If you use ‘with-restriction’ with the optional LABEL argument, we + recommend documenting the LABEL in the doc strings of the functions + which use it, so that other Lisp programs your code calls could + lift the labeled narrowing if and when it needs. + + -- Special Form: without-restriction [:label label] body + This special form saves the current bounds of the accessible + portion of the buffer, widens the buffer, evaluates the BODY forms, + and restores the saved bounds. In that case it is equivalent to + + (save-restriction + (widen) + body) + + When the optional argument LABEL is present, the narrowing set by + ‘with-restriction’ with the same LABEL argument is lifted. -- Function: pos-bol &optional count Like ‘line-beginning-position’, but ignores fields (and is more @@ -2175,6 +2222,14 @@ will be the need for changes, so use these functions with care. *Note (elisp)File Attributes::. + -- Function: directory-abbrev-make-regexp directory + Create a regexp to match DIRECTORY for ‘directory-abbrev-alist’. + + -- Function: directory-abbrev-apply filename + Apply the abbreviations in ‘directory-abbrev-alist’ to FILENAME. + Note that when calling this, you should set ‘case-fold-search’ as + appropriate for the filesystem used for FILENAME. + -- Function: key-valid-p keys Say whether KEYS is a valid key. A key is a string consisting of one or more key strokes. The key strokes are separated by single @@ -2418,6 +2473,10 @@ will be the need for changes, so use these functions with care. The same keyword arguments are supported as in ‘ert-with-temp-file’ (which see), except for ‘:text’. + -- Function: cl-constantly value + Return a function that takes any number of arguments, but returns + VALUE. + -- Macro: cl-with-gensyms names... body This macro expands to code that executes BODY with each of the variables in NAMES bound to a fresh uninterned symbol, or “gensym”, @@ -2611,7 +2670,7 @@ implemented in 29.1: • The ‘pixel-fill’ library.  -File: doc5ZeelO.info, Node: Development, Next: Function Index, Prev: Support, Up: Top +File: doc0jZUSv.info, Node: Development, Next: Function Index, Prev: Support, Up: Top 3 Development ************* @@ -2635,7 +2694,7 @@ continuous integration to check if patches preserve existing functionality.  -File: doc5ZeelO.info, Node: Function Index, Next: Variable Index, Prev: Development, Up: Top +File: doc0jZUSv.info, Node: Function Index, Next: Variable Index, Prev: Development, Up: Top Appendix A Function Index ************************* @@ -2643,52 +2702,53 @@ Appendix A Function Index [index] * Menu: -* add-display-text-property: Emacs 29.1. (line 137) +* add-display-text-property: Emacs 29.1. (line 178) * alist-get: Emacs 25.1. (line 82) -* always: Emacs 28.1. (line 80) +* always: Emacs 28.1. (line 83) * and-let*: Emacs 26.1. (line 158) * assoc-delete-all: Emacs 26.1. (line 13) * bignump: Emacs 27.1. (line 55) * bool-vector: Emacs 25.1. (line 178) -* bounds-of-thing-at-mouse: Emacs 28.1. (line 289) +* bounds-of-thing-at-mouse: Emacs 28.1. (line 292) * buffer-hash: Emacs 26.1. (line 80) -* buffer-local-boundp: Emacs 28.1. (line 122) -* buffer-local-restore-state: Emacs 29.1. (line 39) -* buffer-local-set-state: Emacs 29.1. (line 39) -* buffer-match-p: Emacs 29.1. (line 205) -* buttonize: Emacs 29.1. (line 103) -* buttonize-region: Emacs 29.1. (line 112) -* cl-once-only: Emacs 29.1. (line 588) -* cl-with-gensyms: Emacs 29.1. (line 569) -* color-dark-p: Emacs 28.1. (line 320) -* color-values-from-color-spec: Emacs 28.1. (line 326) +* buffer-local-boundp: Emacs 28.1. (line 125) +* buffer-local-restore-state: Emacs 29.1. (line 42) +* buffer-local-set-state: Emacs 29.1. (line 42) +* buffer-match-p: Emacs 29.1. (line 246) +* buttonize: Emacs 29.1. (line 144) +* buttonize-region: Emacs 29.1. (line 153) +* cl-constantly: Emacs 29.1. (line 618) +* cl-once-only: Emacs 29.1. (line 641) +* cl-with-gensyms: Emacs 29.1. (line 622) +* color-dark-p: Emacs 28.1. (line 323) +* color-values-from-color-spec: Emacs 28.1. (line 329) * compat-call: Usage. (line 43) * compat-call <1>: Emacs 26.1. (line 278) * compat-call alist-get: Emacs 26.1. (line 344) * compat-call assoc: Emacs 26.1. (line 316) * compat-call assoc-delete-all: Emacs 27.1. (line 417) -* compat-call count-windows: Emacs 28.1. (line 402) -* compat-call define-key: Emacs 29.1. (line 685) +* compat-call count-windows: Emacs 28.1. (line 405) +* compat-call define-key: Emacs 29.1. (line 738) * compat-call executable-find: Emacs 27.1. (line 429) * compat-call file-size-human-readable: Emacs 27.1. (line 397) * compat-call line-number-at-pos: Emacs 26.1. (line 330) * compat-call lookup-key: Emacs 27.1. (line 356) -* compat-call plist-get: Emacs 29.1. (line 701) -* compat-call plist-member: Emacs 29.1. (line 725) -* compat-call plist-put: Emacs 29.1. (line 713) +* compat-call plist-get: Emacs 29.1. (line 754) +* compat-call plist-member: Emacs 29.1. (line 778) +* compat-call plist-put: Emacs 29.1. (line 766) * compat-call recenter: Emacs 27.1. (line 346) * compat-call regexp-opt: Emacs 27.1. (line 385) -* compat-call set-transient-map: Emacs 29.1. (line 640) +* compat-call set-transient-map: Emacs 29.1. (line 693) * compat-call setq-local: Emacs 27.1. (line 370) * compat-call sort: Emacs 25.1. (line 190) -* compat-call string-lines: Emacs 29.1. (line 676) +* compat-call string-lines: Emacs 29.1. (line 729) * compat-call string-trim: Emacs 26.1. (line 375) * compat-call string-trim-left: Emacs 26.1. (line 359) * compat-call string-trim-right: Emacs 26.1. (line 367) -* compat-call string-width: Emacs 28.1. (line 385) +* compat-call string-width: Emacs 28.1. (line 388) * compat-function: Usage. (line 51) -* compiled-function-p: Emacs 29.1. (line 173) -* count-sentences: Emacs 29.1. (line 14) +* compiled-function-p: Emacs 29.1. (line 214) +* count-sentences: Emacs 29.1. (line 17) * cXXXr: Emacs 26.1. (line 66) * cXXXXr: Emacs 26.1. (line 67) * date-days-in-month: Emacs 27.1. (line 213) @@ -2698,25 +2758,27 @@ Appendix A Function Index * decoded-time-hour: Emacs 27.1. (line 170) * decoded-time-minute: Emacs 27.1. (line 165) * decoded-time-month: Emacs 27.1. (line 180) -* decoded-time-period: Emacs 28.1. (line 357) +* decoded-time-period: Emacs 28.1. (line 360) * decoded-time-second: Emacs 27.1. (line 160) * decoded-time-weekday: Emacs 27.1. (line 190) * decoded-time-year: Emacs 27.1. (line 185) * decoded-time-zone: Emacs 27.1. (line 200) -* define-keymap: Emacs 29.1. (line 457) -* defvar-keymap: Emacs 29.1. (line 525) -* delete-line: Emacs 29.1. (line 48) -* directory-empty-p: Emacs 28.1. (line 240) +* define-keymap: Emacs 29.1. (line 506) +* defvar-keymap: Emacs 29.1. (line 574) +* delete-line: Emacs 29.1. (line 51) +* directory-abbrev-apply: Emacs 29.1. (line 370) +* directory-abbrev-make-regexp: Emacs 29.1. (line 367) +* directory-empty-p: Emacs 28.1. (line 243) * directory-name-p: Emacs 25.1. (line 56) -* dlet: Emacs 28.1. (line 140) +* dlet: Emacs 28.1. (line 143) * dolist-with-progress-reporter: Emacs 27.1. (line 119) -* ensure-list: Emacs 28.1. (line 155) -* ert-with-temp-directory: Emacs 29.1. (line 557) -* ert-with-temp-file: Emacs 29.1. (line 551) +* ensure-list: Emacs 28.1. (line 158) +* ert-with-temp-directory: Emacs 29.1. (line 606) +* ert-with-temp-file: Emacs 29.1. (line 600) * file-attribute-access-time: Emacs 26.1. (line 223) * file-attribute-collect: Emacs 26.1. (line 260) * file-attribute-device-number: Emacs 26.1. (line 255) -* file-attribute-file-identifier: Emacs 29.1. (line 286) +* file-attribute-file-identifier: Emacs 29.1. (line 327) * file-attribute-group-id: Emacs 26.1. (line 218) * file-attribute-inode-number: Emacs 26.1. (line 250) * file-attribute-link-number: Emacs 26.1. (line 208) @@ -2726,128 +2788,129 @@ Appendix A Function Index * file-attribute-status-change-time: Emacs 26.1. (line 234) * file-attribute-type: Emacs 26.1. (line 203) * file-attribute-user-id: Emacs 26.1. (line 213) -* file-backup-file-names: Emacs 28.1. (line 345) -* file-has-changed-p: Emacs 29.1. (line 311) +* file-backup-file-names: Emacs 28.1. (line 348) +* file-has-changed-p: Emacs 29.1. (line 352) * file-local-name: Emacs 26.1. (line 167) -* file-modes-number-to-symbolic: Emacs 28.1. (line 339) -* file-name-concat: Emacs 28.1. (line 50) -* file-name-parent-directory: Emacs 29.1. (line 302) +* file-modes-number-to-symbolic: Emacs 28.1. (line 342) +* file-name-concat: Emacs 28.1. (line 53) +* file-name-parent-directory: Emacs 29.1. (line 343) * file-name-quote: Emacs 26.1. (line 102) * file-name-quoted-p: Emacs 26.1. (line 95) -* file-name-split: Emacs 29.1. (line 292) +* file-name-split: Emacs 29.1. (line 333) * file-name-unquote: Emacs 26.1. (line 90) -* file-name-with-extension: Emacs 28.1. (line 222) +* file-name-with-extension: Emacs 28.1. (line 225) * file-size-human-readable-iec: Emacs 27.1. (line 251) * fixnump: Emacs 27.1. (line 60) * flatten-tree: Emacs 27.1. (line 132) * format-message: Emacs 25.1. (line 44) -* format-prompt: Emacs 28.1. (line 251) -* funcall-with-delayed-message: Emacs 29.1. (line 95) -* function-alias-p: Emacs 29.1. (line 180) -* garbage-collect-maybe: Emacs 28.1. (line 65) +* format-prompt: Emacs 28.1. (line 254) +* funcall-with-delayed-message: Emacs 29.1. (line 136) +* function-alias-p: Emacs 29.1. (line 221) +* garbage-collect-maybe: Emacs 28.1. (line 68) * gensym: Emacs 26.1. (line 70) -* get-display-property: Emacs 29.1. (line 120) -* get-scratch-buffer-create: Emacs 29.1. (line 27) +* get-display-property: Emacs 29.1. (line 161) +* get-scratch-buffer-create: Emacs 29.1. (line 30) * hash-table-empty: Emacs 25.1. (line 120) * if-let: Emacs 25.1. (line 97) * if-let*: Emacs 26.1. (line 149) * ignore-errors: Emacs 27.1. (line 106) * image-property: Emacs 26.1. (line 198) -* insert-into-buffer: Emacs 28.1. (line 89) -* key-parse: Emacs 29.1. (line 358) -* key-valid-p: Emacs 29.1. (line 326) -* keymap-global-lookup: Emacs 29.1. (line 453) -* keymap-global-set: Emacs 29.1. (line 387) -* keymap-global-unset: Emacs 29.1. (line 407) -* keymap-local-lookup: Emacs 29.1. (line 449) -* keymap-local-set: Emacs 29.1. (line 397) -* keymap-local-unset: Emacs 29.1. (line 422) -* keymap-lookup: Emacs 29.1. (line 436) -* keymap-set: Emacs 29.1. (line 363) -* keymap-substitute: Emacs 29.1. (line 428) -* length<: Emacs 28.1. (line 42) -* length=: Emacs 28.1. (line 39) -* length>: Emacs 28.1. (line 47) -* list-of-strings-p: Emacs 29.1. (line 51) -* macroexp-file-name: Emacs 28.1. (line 298) +* insert-into-buffer: Emacs 28.1. (line 92) +* key-parse: Emacs 29.1. (line 407) +* key-valid-p: Emacs 29.1. (line 375) +* keymap-global-lookup: Emacs 29.1. (line 502) +* keymap-global-set: Emacs 29.1. (line 436) +* keymap-global-unset: Emacs 29.1. (line 456) +* keymap-local-lookup: Emacs 29.1. (line 498) +* keymap-local-set: Emacs 29.1. (line 446) +* keymap-local-unset: Emacs 29.1. (line 471) +* keymap-lookup: Emacs 29.1. (line 485) +* keymap-set: Emacs 29.1. (line 412) +* keymap-substitute: Emacs 29.1. (line 477) +* length<: Emacs 28.1. (line 45) +* length=: Emacs 28.1. (line 42) +* length>: Emacs 28.1. (line 50) +* list-of-strings-p: Emacs 29.1. (line 54) +* macroexp-file-name: Emacs 28.1. (line 301) * macroexp-parse: Emacs 25.1. (line 175) * macroexp-quote: Emacs 25.1. (line 172) -* macroexp-warn-and-return: Emacs 28.1. (line 302) +* macroexp-warn-and-return: Emacs 28.1. (line 305) * macroexpand-1: Emacs 25.1. (line 165) * major-mode-restore: Emacs 27.1. (line 22) * major-mode-suspend: Emacs 27.1. (line 13) * make-empty-file: Emacs 27.1. (line 254) -* make-lock-file-name: Emacs 28.1. (line 353) +* make-lock-file-name: Emacs 28.1. (line 356) * make-nearby-temp-file: Emacs 26.1. (line 120) -* make-separator-line: Emacs 28.1. (line 85) +* make-separator-line: Emacs 28.1. (line 88) * mapcan: Emacs 26.1. (line 53) -* mark-thing-at-mouse: Emacs 28.1. (line 295) -* match-buffers: Emacs 29.1. (line 239) +* mark-thing-at-mouse: Emacs 28.1. (line 298) +* match-buffers: Emacs 29.1. (line 280) * minibuffer-history-value: Emacs 27.1. (line 32) -* named-let: Emacs 28.1. (line 204) -* ntake: Emacs 29.1. (line 160) +* named-let: Emacs 28.1. (line 207) +* ntake: Emacs 29.1. (line 201) * package-get-version: Emacs 27.1. (line 205) -* plistp: Emacs 29.1. (line 54) -* pos-bol: Emacs 29.1. (line 70) -* pos-eol: Emacs 29.1. (line 74) -* process-lines-handling-status: Emacs 28.1. (line 17) -* process-lines-ignore-status: Emacs 28.1. (line 13) +* plistp: Emacs 29.1. (line 57) +* pos-bol: Emacs 29.1. (line 111) +* pos-eol: Emacs 29.1. (line 115) +* process-lines-handling-status: Emacs 28.1. (line 20) +* process-lines-ignore-status: Emacs 28.1. (line 16) * proper-list-p: Emacs 27.1. (line 76) * provided-mode-derived-p: Emacs 27.1. (line 247) * read-answer: Emacs 26.1. (line 17) * read-char-from-minibuffer: Emacs 27.1. (line 44) * read-multiple-choice: Emacs 26.1. (line 185) -* readablep: Emacs 29.1. (line 17) +* readablep: Emacs 29.1. (line 20) * region-bounds: Emacs 25.1. (line 28) * region-noncontiguous-p: Emacs 25.1. (line 34) -* replace-regexp-in-string: Emacs 28.1. (line 114) -* replace-string-in-region: Emacs 28.1. (line 99) +* replace-regexp-in-string: Emacs 28.1. (line 117) +* replace-string-in-region: Emacs 28.1. (line 102) * ring-resize: Emacs 27.1. (line 28) * save-mark-and-excursion: Emacs 25.1. (line 39) -* string-chop-newline: Emacs 28.1. (line 199) -* string-clean-whitespace: Emacs 28.1. (line 168) +* string-chop-newline: Emacs 28.1. (line 202) +* string-clean-whitespace: Emacs 28.1. (line 171) * string-distance: Emacs 27.1. (line 86) -* string-equal-ignore-case: Emacs 29.1. (line 193) -* string-fill: Emacs 28.1. (line 175) -* string-glyph-split: Emacs 29.1. (line 248) +* string-equal-ignore-case: Emacs 29.1. (line 234) +* string-fill: Emacs 28.1. (line 178) +* string-glyph-split: Emacs 29.1. (line 289) * string-greaterp: Emacs 25.1. (line 64) -* string-lines: Emacs 28.1. (line 183) -* string-pad: Emacs 28.1. (line 190) -* string-replace: Emacs 28.1. (line 74) -* string-search: Emacs 28.1. (line 31) -* string-split: Emacs 29.1. (line 199) -* subr-native-elisp-p: Emacs 28.1. (line 369) -* subr-primitive-p: Emacs 28.1. (line 362) -* substitute-quotes: Emacs 29.1. (line 23) -* take: Emacs 29.1. (line 146) +* string-lines: Emacs 28.1. (line 186) +* string-pad: Emacs 28.1. (line 193) +* string-replace: Emacs 28.1. (line 77) +* string-search: Emacs 28.1. (line 34) +* string-split: Emacs 29.1. (line 240) +* subr-native-elisp-p: Emacs 28.1. (line 372) +* subr-primitive-p: Emacs 28.1. (line 365) +* substitute-quotes: Emacs 29.1. (line 26) +* take: Emacs 29.1. (line 187) * temporary-file-directory: Emacs 26.1. (line 137) * text-property-search-backward: Emacs 27.1. (line 332) * text-property-search-forward: Emacs 27.1. (line 260) -* text-quoting-style: Emacs 28.1. (line 25) -* thing-at-mouse: Emacs 28.1. (line 282) +* text-quoting-style: Emacs 28.1. (line 28) +* thing-at-mouse: Emacs 28.1. (line 285) * thread-first: Emacs 25.1. (line 123) * thread-last: Emacs 25.1. (line 144) * time-equal-p: Emacs 27.1. (line 208) -* use-region-beginning: Emacs 29.1. (line 36) -* use-region-end: Emacs 29.1. (line 33) -* use-region-noncontiguous-p: Emacs 29.1. (line 30) +* use-region-beginning: Emacs 29.1. (line 39) +* use-region-end: Emacs 29.1. (line 36) +* use-region-noncontiguous-p: Emacs 29.1. (line 33) * when-let: Emacs 25.1. (line 115) * when-let*: Emacs 26.1. (line 153) -* while-let: Emacs 29.1. (line 545) -* with-buffer-unmodified-if-unchanged: Emacs 29.1. (line 271) -* with-delayed-message: Emacs 29.1. (line 78) -* with-environment-variables: Emacs 28.1. (line 306) -* with-existing-directory: Emacs 28.1. (line 129) +* while-let: Emacs 29.1. (line 594) +* with-buffer-unmodified-if-unchanged: Emacs 29.1. (line 312) +* with-delayed-message: Emacs 29.1. (line 119) +* with-environment-variables: Emacs 28.1. (line 309) +* with-existing-directory: Emacs 28.1. (line 132) * with-file-modes: Emacs 25.1. (line 71) -* with-memoization: Emacs 29.1. (line 57) +* with-memoization: Emacs 29.1. (line 60) * with-minibuffer-selected-window: Emacs 27.1. (line 38) -* with-narrowing: Emacs 29.1. (line 62) +* with-restriction: Emacs 29.1. (line 65) * with-suppressed-warnings: Emacs 27.1. (line 65) -* with-window-non-dedicated: Emacs 28.1. (line 374) +* with-window-non-dedicated: Emacs 28.1. (line 377) +* without-restriction: Emacs 29.1. (line 99) * xor: Emacs 27.1. (line 142)  -File: doc5ZeelO.info, Node: Variable Index, Prev: Function Index, Up: Top +File: doc0jZUSv.info, Node: Variable Index, Prev: Function Index, Up: Top Appendix B Variable Index ************************* @@ -2859,7 +2922,7 @@ Appendix B Variable Index * gensym-counter: Emacs 26.1. (line 77) * mounted-file-systems: Emacs 26.1. (line 133) * regexp-unmatchable: Emacs 27.1. (line 152) -* set-transient-map-timeout: Emacs 29.1. (line 666) +* set-transient-map-timeout: Emacs 29.1. (line 719) * text-quoting-style: Emacs 25.1. (line 13) @@ -2870,15 +2933,15 @@ Node: Introduction2258 Node: Overview2421 Node: Usage2947 Node: Limitations7161 -Node: Support11786 -Node: Emacs 25.112371 -Node: Emacs 26.121773 -Node: Emacs 27.139025 -Node: Emacs 28.159422 -Node: Emacs 29.179048 -Node: Development113288 -Node: Function Index114308 -Node: Variable Index129229 +Node: Support11945 +Node: Emacs 25.112530 +Node: Emacs 26.121932 +Node: Emacs 27.139184 +Node: Emacs 28.159581 +Node: Emacs 29.179251 +Node: Development115649 +Node: Function Index116669 +Node: Variable Index131882  End Tag Table diff --git a/elpa/compat-29.1.3.4/dir b/elpa/compat-29.1.4.1/dir similarity index 100% rename from elpa/compat-29.1.3.4/dir rename to elpa/compat-29.1.4.1/dir -- 2.47.3