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.

Reply via email to