X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=emacs%2Fnotmuch-lib.el;h=900235bc5edbf59a03c2758da13906eac077e6a0;hb=1f30f7d290f2989fba610c625e3cca6c6df1d118;hp=aa25513a3b6500b1f36ab12e16d252f2cce2aca5;hpb=889dda3731dcdf779cef347576c5d59d1923d26b;p=notmuch diff --git a/emacs/notmuch-lib.el b/emacs/notmuch-lib.el index aa25513a..900235bc 100644 --- a/emacs/notmuch-lib.el +++ b/emacs/notmuch-lib.el @@ -24,7 +24,7 @@ (require 'mm-view) (require 'mm-decode) (require 'json) -(eval-when-compile (require 'cl)) +(require 'cl) (defvar notmuch-command "notmuch" "Command to run the notmuch binary.") @@ -269,6 +269,21 @@ current buffer, if possible." (loop for (key value . rest) on plist by #'cddr collect (cons (intern (substring (symbol-name key) 1)) value))) +(defun notmuch-combine-face-text-property (start end face) + "Combine FACE into the 'face text property between START and END. + +This function combines FACE with any existing faces between START +and END. Attributes specified by FACE take precedence over +existing attributes. FACE must be a face name (a symbol or +string), a property list of face attributes, or a list of these." + + (let ((pos start)) + (while (< pos end) + (let ((cur (get-text-property pos 'face)) + (next (next-single-property-change pos 'face nil end))) + (put-text-property pos next 'face (cons face cur)) + (setq pos next))))) + ;; Compatibility functions for versions of emacs before emacs 23. ;; ;; Both functions here were copied from emacs 23 with the following copyright: