X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=emacs%2Fnotmuch-compat.el;h=2cedd39d5eb8e98604b4497ea70bf7106ab1a4c2;hp=2975f4c2ec1bffb31a4e1e4110544b82a2d2a01d;hb=HEAD;hpb=0f37509cc7e92f2c09fcd7d7f3e2b477e4f29401 diff --git a/emacs/notmuch-compat.el b/emacs/notmuch-compat.el index 2975f4c2..179bf59c 100644 --- a/emacs/notmuch-compat.el +++ b/emacs/notmuch-compat.el @@ -1,4 +1,4 @@ -;;; notmuch-compat.el --- compatibility functions for earlier versions of emacs +;;; notmuch-compat.el --- compatibility functions for earlier versions of emacs -*- lexical-binding: t -*- ;; ;; The functions in this file are copied from more modern versions of ;; emacs and are Copyright (C) 1985-1986, 1992, 1994-1995, 1999-2017 @@ -41,7 +41,17 @@ (unless (fboundp 'message--fold-long-headers) (add-hook 'message-header-hook 'notmuch-message--fold-long-headers)) -;; End of compatibility functions +;; `dlet' isn't available until Emacs 28.1. Below is a copy, with the +;; addition of `with-no-warnings'. +(defmacro notmuch-dlet (binders &rest body) + "Like `let*' but using dynamic scoping." + (declare (indent 1) (debug let)) + `(let (_) + (with-no-warnings ; Quiet "lacks a prefix" warning. + ,@(mapcar (lambda (binder) + `(defvar ,(if (consp binder) (car binder) binder))) + binders)) + (let* ,binders ,@body))) (provide 'notmuch-compat)