aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--emacs/notmuch-lib.el32
1 files changed, 22 insertions, 10 deletions
diff --git a/emacs/notmuch-lib.el b/emacs/notmuch-lib.el
index dd180ee0..74b3d6d2 100644
--- a/emacs/notmuch-lib.el
+++ b/emacs/notmuch-lib.el
@@ -116,6 +116,19 @@ within the current window."
(or (memq prop buffer-invisibility-spec)
(assq prop buffer-invisibility-spec)))))
+; This lets us avoid compiling these replacement functions when emacs
+; is sufficiently new enough to supply them alone. We do the macro
+; treatment rather than just wrapping our defun calls in a when form
+; specifically so that the compiler never sees the code on new emacs,
+; (since the code is triggering warnings that we don't know how to get
+; rid of.
+;
+; A more clever macro here would accept a condition and a list of forms.
+(defmacro compile-on-emacs-prior-to-23 (form)
+ "Conditionally evaluate form only on emacs < emacs-23."
+ (list 'when (< emacs-major-version 23)
+ form))
+
;; Compatibility functions for versions of emacs before emacs 23.
;;
;; Both functions here were copied from emacs 23 with the following copyright:
@@ -124,21 +137,20 @@ within the current window."
;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
;;
;; and under the GPL version 3 (or later) exactly as notmuch itself.
-(when (< emacs-major-version 23)
- (defun apply-partially (fun &rest args)
- "Return a function that is a partial application of FUN to ARGS.
+(compile-on-emacs-prior-to-23
+ (defun apply-partially (fun &rest args)
+ "Return a function that is a partial application of FUN to ARGS.
ARGS is a list of the first N arguments to pass to FUN.
The result is a new function which does the same as FUN, except that
the first N arguments are fixed at the values with which this function
was called."
- (lexical-let ((fun fun) (args1 args))
- (lambda (&rest args2) (apply fun (append args1 args2)))))
-
- (defun mouse-event-p (object)
- "Return non-nil if OBJECT is a mouse click event."
- (memq (event-basic-type object) '(mouse-1 mouse-2 mouse-3 mouse-movement))))
-
+ (lexical-let ((fun fun) (args1 args))
+ (lambda (&rest args2) (apply fun (append args1 args2))))))
+(compile-on-emacs-prior-to-23
+ (defun mouse-event-p (object)
+ "Return non-nil if OBJECT is a mouse click event."
+ (memq (event-basic-type object) '(mouse-1 mouse-2 mouse-3 mouse-movement))))
(provide 'notmuch-lib)