Add dlet to compat.el
This commit is contained in:
parent
9ed685f740
commit
6f1f0de1c1
|
@ -13,5 +13,22 @@
|
|||
(dolist (file (directory-files (locate-user-emacs-file "lisp/compat") :full "\\.el\\'"))
|
||||
(load file :noerror))
|
||||
|
||||
;; Other stuff...
|
||||
|
||||
(unless (fboundp 'dlet)
|
||||
(defmacro dlet (binders &rest body)
|
||||
"Like `let' but using dynamic scoping."
|
||||
(declare (indent 1) (debug let))
|
||||
;; (defvar FOO) only affects the current scope, but in order for
|
||||
;; this not to affect code after the main `let' we need to create a new scope,
|
||||
;; which is what the surrounding `let' is for.
|
||||
;; FIXME: (let () ...) currently doesn't actually create a new scope,
|
||||
;; which is why we use (let (_) ...).
|
||||
`(let (_)
|
||||
,@(mapcar (lambda (binder)
|
||||
`(defvar ,(if (consp binder) (car binder) binder)))
|
||||
binders)
|
||||
(let ,binders ,@body))))
|
||||
|
||||
(provide 'compat)
|
||||
;;; compat.el ends here
|
||||
|
|
Loading…
Reference in New Issue