]> git.notmuchmail.org Git - notmuch/commitdiff
emacs: Combine notmuch-combine-face-text-property{, -string}
authorAustin Clements <amdragon@MIT.EDU>
Sat, 22 Mar 2014 11:51:05 +0000 (11:51 +0000)
committerDavid Bremner <david@tethera.net>
Mon, 24 Mar 2014 22:42:33 +0000 (19:42 -0300)
This combines our two face combining functions into one, easy to use
function with a much shorter name: `notmuch-apply-face'.  This
function takes the full set of arguments that
`notmuch-combine-face-text-property' took, but takes them in a more
convenient order and provides smarter defaults that make the function
easy to use on both strings and buffers.

emacs/notmuch-lib.el
emacs/notmuch-tag.el
emacs/notmuch-tree.el
emacs/notmuch.el

index 2fefdadc4e19e17b6f79f0b5b1c1e5350bbe226f..fa7646fecb8bb020c2b06cea1fb5579be19c49f4 100644 (file)
@@ -578,23 +578,32 @@ single element face list."
       face
     (list face)))
 
       face
     (list face)))
 
-(defun notmuch-combine-face-text-property (start end face &optional below object)
-  "Combine FACE into the 'face text property between START and END.
+(defun notmuch-apply-face (object face &optional below start end)
+  "Combine FACE into the 'face text property of OBJECT between START and END.
 
 This function combines FACE with any existing faces between START
 
 This function combines FACE with any existing faces between START
-and END in OBJECT (which defaults to the current buffer).
-Attributes specified by FACE take precedence over existing
-attributes unless BELOW is non-nil.  FACE must be a face name (a
-symbol or string), a property list of face attributes, or a list
-of these.  For convenience when applied to strings, this returns
-OBJECT."
+and END in OBJECT.  Attributes specified by FACE take precedence
+over existing attributes unless BELOW is non-nil.
+
+OBJECT may be a string, a buffer, or nil (which means the current
+buffer).  If object is a string, START and END are 0-based;
+otherwise they are buffer positions (integers or markers).  FACE
+must be a face name (a symbol or string), a property list of face
+attributes, or a list of these.  If START and/or END are omitted,
+they default to the beginning/end of OBJECT.  For convenience
+when applied to strings, this returns OBJECT."
 
   ;; A face property can have three forms: a face name (a string or
   ;; symbol), a property list, or a list of these two forms.  In the
   ;; list case, the faces will be combined, with the earlier faces
   ;; taking precedent.  Here we canonicalize everything to list form
   ;; to make it easy to combine.
 
   ;; A face property can have three forms: a face name (a string or
   ;; symbol), a property list, or a list of these two forms.  In the
   ;; list case, the faces will be combined, with the earlier faces
   ;; taking precedent.  Here we canonicalize everything to list form
   ;; to make it easy to combine.
-  (let ((pos start)
+  (let ((pos (cond (start start)
+                  ((stringp object) 0)
+                  (t 1)))
+       (end (cond (end end)
+                  ((stringp object) (length object))
+                  (t (1+ (buffer-size object)))))
        (face-list (notmuch-face-ensure-list-form face)))
     (while (< pos end)
       (let* ((cur (get-text-property pos 'face object))
        (face-list (notmuch-face-ensure-list-form face)))
     (while (< pos end)
       (let* ((cur (get-text-property pos 'face object))
@@ -607,14 +616,6 @@ OBJECT."
        (setq pos next))))
   object)
 
        (setq pos next))))
   object)
 
-(defun notmuch-combine-face-text-property-string (string face &optional below)
-  (notmuch-combine-face-text-property
-   0
-   (length string)
-   face
-   below
-   string))
-
 (defun notmuch-map-text-property (start end prop func &optional object)
   "Transform text property PROP using FUNC.
 
 (defun notmuch-map-text-property (start end prop func &optional object)
   "Transform text property PROP using FUNC.
 
index 908e7ade6270bccce7fb6afbbb3e63eccc261465..41b168762c82e48b67718dff722faa14c7ac39f0 100644 (file)
@@ -151,7 +151,7 @@ This can be used with `notmuch-tag-format-image-data'."
 (defun notmuch-tag-format-tags (tags &optional face)
   "Return a string representing formatted TAGS."
   (let ((face (or face 'notmuch-tag-face)))
 (defun notmuch-tag-format-tags (tags &optional face)
   "Return a string representing formatted TAGS."
   (let ((face (or face 'notmuch-tag-face)))
-    (notmuch-combine-face-text-property-string
+    (notmuch-apply-face
      (mapconcat #'identity
                ;; nil indicated that the tag was deliberately hidden
                (delq nil (mapcar #'notmuch-tag-format-tag tags))
      (mapconcat #'identity
                ;; nil indicated that the tag was deliberately hidden
                (delq nil (mapcar #'notmuch-tag-format-tag tags))
index 4f2ac028793485d72bff372593432fff5ffcf3f5..e3aa2cd980b5555df7ec8ec65d57320eafeef177 100644 (file)
@@ -715,7 +715,7 @@ unchanged ADDRESS if parsing fails."
     (dolist (spec field-list result-string)
       (let ((field-string (notmuch-tree-format-field (car spec) (cdr spec) msg)))
        (setq result-string (concat result-string field-string))))
     (dolist (spec field-list result-string)
       (let ((field-string (notmuch-tree-format-field (car spec) (cdr spec) msg)))
        (setq result-string (concat result-string field-string))))
-    (notmuch-combine-face-text-property-string result-string face t)))
+    (notmuch-apply-face result-string face t)))
 
 (defun notmuch-tree-insert-msg (msg)
   "Insert the message MSG according to notmuch-tree-result-format"
 
 (defun notmuch-tree-insert-msg (msg)
   "Insert the message MSG according to notmuch-tree-result-format"
index 65baa0cb8886d6ff9e8e531a7c1a8aadfe7625b2..9e39a76b254b71383f98db4620021257a684a3d7 100644 (file)
@@ -649,7 +649,7 @@ foreground and blue background."
          (let ((tag (car elem))
                (attributes (cdr elem)))
            (when (member tag line-tag-list)
          (let ((tag (car elem))
                (attributes (cdr elem)))
            (when (member tag line-tag-list)
-             (notmuch-combine-face-text-property start end attributes))))
+             (notmuch-apply-face nil attributes nil start end))))
        ;; Reverse the list so earlier entries take precedence
        (reverse notmuch-search-line-faces)))
 
        ;; Reverse the list so earlier entries take precedence
        (reverse notmuch-search-line-faces)))