branch: externals/compat commit bb928cabe6d2418f0d51e8ae9b76b92788961a55 Author: Daniel Mendler <m...@daniel-mendler.de> Commit: Daniel Mendler <m...@daniel-mendler.de>
Only require Compat libraries which are needed --- NEWS.org | 2 ++ compat-26.el | 1 - compat-27.el | 1 - compat-28.el | 1 - compat-29.el | 1 - compat-macs.el | 6 ++++-- compat.el | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/NEWS.org b/NEWS.org index 42a6d60138..59aa56e948 100644 --- a/NEWS.org +++ b/NEWS.org @@ -12,6 +12,8 @@ it was compiled on. - Compat compiles without byte compilation warnings on all supported Emacs versions. Warnings are treated as errors in the test suite. +- Compat takes great care to remove unneeded definitions at compile time. On + recent Emacs 29 the byte compiled files are empty and not loaded. * Release of "Compat" Version 29.1.0.1 diff --git a/compat-26.el b/compat-26.el index 3cbe19f492..266bc56b48 100644 --- a/compat-26.el +++ b/compat-26.el @@ -22,7 +22,6 @@ ;;; Code: -(require 'compat-25) (eval-when-compile (load "compat-macs.el" nil t t)) (compat-declare-version "26.1") diff --git a/compat-27.el b/compat-27.el index bac6f21f63..ef609a24e4 100644 --- a/compat-27.el +++ b/compat-27.el @@ -22,7 +22,6 @@ ;;; Code: -(require 'compat-26) (eval-when-compile (load "compat-macs.el" nil t t)) (compat-declare-version "27.1") diff --git a/compat-28.el b/compat-28.el index 419c19de91..a3e2e4a58e 100644 --- a/compat-28.el +++ b/compat-28.el @@ -22,7 +22,6 @@ ;;; Code: -(require 'compat-27) (eval-when-compile (load "compat-macs.el" nil t t)) (compat-declare-version "28.1") diff --git a/compat-29.el b/compat-29.el index 7bb0a6f25a..6220bc769d 100644 --- a/compat-29.el +++ b/compat-29.el @@ -22,7 +22,6 @@ ;;; Code: -(require 'compat-28) (eval-when-compile (load "compat-macs.el" nil t t)) ;; TODO Update to 29.1 as soon as the Emacs emacs-29 branch version bumped (compat-declare-version "29.0") diff --git a/compat-macs.el b/compat-macs.el index ff623887c5..cf3239e529 100644 --- a/compat-macs.el +++ b/compat-macs.el @@ -26,12 +26,14 @@ (require 'subr-x) (defvar compat--current-version nil - "Default version to use when no explicit version was given.") + "Version of the currently defined compatibility definitions.") (defmacro compat-declare-version (version) "Set the Emacs version that is currently being handled to VERSION." (setq compat--current-version version) - nil) + (let ((before (1- (car (version-to-list version))))) + (when (and (< 24 before) (< emacs-major-version before)) + `(require ',(intern (format "compat-%d" before)))))) (defun compat--format-docstring (type name docstring) "Format DOCSTRING for NAME of TYPE. diff --git a/compat.el b/compat.el index f54a5c3c39..7e37e143f0 100644 --- a/compat.el +++ b/compat.el @@ -42,7 +42,7 @@ ;;; Code: -(require 'compat-29) +(when (< emacs-major-version 29) (require 'compat-29)) (defmacro compat-function (fun) "Return compatibility function symbol for FUN.