emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/cl-lib 6f4af5f 02/10: Add cl-letf and cl-labels.


From: Stefan Monnier
Subject: [elpa] externals/cl-lib 6f4af5f 02/10: Add cl-letf and cl-labels.
Date: Tue, 1 Dec 2020 15:28:43 -0500 (EST)

branch: externals/cl-lib
commit 6f4af5f3c3983b1199c4ae41846a288431508541
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Commit: Stefan Monnier <monnier@iro.umontreal.ca>

    Add cl-letf and cl-labels.
---
 cl-lib.el | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/cl-lib.el b/cl-lib.el
index 836c554..015226a 100644
--- a/cl-lib.el
+++ b/cl-lib.el
@@ -4,7 +4,7 @@
 
 ;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
 ;; vcomment: Emacs-24.3's version is 1.0 so this has to stay below.
-;; Version: 0.1
+;; Version: 0.2
 
 ;; This program is free software; you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
@@ -173,7 +173,7 @@
                callf2
                callf
                letf*
-               ;; letf
+               letf
                rotatef
                shiftf
                remf
@@ -276,5 +276,14 @@
                (intern (format "cl-%s" fun)))))
     (defalias new fun)))
 
+;; `cl-labels' is not 100% compatible with `labels' when using dynamic scoping
+;; (mostly because it does not turn lambdas that refer to those functions into
+;; closures).  OTOH it is compatible when using lexical scoping.
+
+(defmacro cl-labels (&rest args)
+  (if (and (boundp 'lexical-binding) lexical-binding)
+      `(labels ,@args)
+    (error "`cl-labels' with dynamic scoping is not implemented")))
+
 (provide 'cl-lib)
 ;;; cl-lib.el ends here



reply via email to

[Prev in Thread] Current Thread [Next in Thread]