From 04725cfbe5a8905651b3f6a4dcf1f3dce9a085e1 Mon Sep 17 00:00:00 2001 From: Austin Clements Date: Wed, 29 May 2013 21:13:45 -0400 Subject: emacs: Record part p-list in a text property This is similar to what we already do with the message p-list, though we apply the part's text property to the whole part's text, in contrast with the message p-list, which is (rather obscurely) only applied to the first character. --- emacs/notmuch-show.el | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'emacs/notmuch-show.el') diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index a080134f..e84e1baf 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -900,7 +900,17 @@ If HIDE is non-nil then initially hide this part." ;; Ensure that the part ends with a carriage return. (unless (bolp) (insert "\n")) - (notmuch-show-create-part-overlays msg beg (point) hide))) + (notmuch-show-create-part-overlays msg beg (point) hide) + ;; Record part information. Since we already inserted subparts, + ;; don't override existing :notmuch-part properties. + (notmuch-map-text-property beg (point) :notmuch-part + (lambda (v) (or v part))) + ;; Make :notmuch-part front sticky and rear non-sticky so it stays + ;; applied to the beginning of each line when we indent the message. + (notmuch-map-text-property beg (point) 'front-sticky + (lambda (v) (pushnew :notmuch-part v))) + (notmuch-map-text-property beg (point) 'rear-nonsticky + (lambda (v) (pushnew :notmuch-part v))))) (defun notmuch-show-insert-body (msg body depth) "Insert the body BODY at depth DEPTH in the current thread." @@ -1404,6 +1414,14 @@ Some useful entries are: (notmuch-show-move-to-message-top) (get-text-property (point) :notmuch-message-properties))) +(defun notmuch-show-get-part-properties () + "Return the properties of the innermost part containing point. + +This is the part property list retrieved from the CLI. Signals +an error if there is no part containing point." + (or (get-text-property (point) :notmuch-part) + (error "No message part here"))) + (defun notmuch-show-set-prop (prop val &optional props) (let ((inhibit-read-only t) (props (or props -- cgit v1.2.3