summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Bremner <bremner@unb.ca>2010-02-11 22:34:31 -0400
committerCarl Worth <cworth@cworth.org>2010-02-20 12:12:09 -0800
commite6c6bf3250475ead63a8306342d3af1d2d48e18a (patch)
treeff8fdab2dec60cbe2b88cf86422c2d2f72905341
parentbecdb42b1f660950f1d755ba2d96ff403e995671 (diff)
notmuch-show-get-header: new function; return alist of parsed header fields.
This function parses the displayed message to recover header fields. It uses mailheader.el to do the actual header parsing, after preprocessing to remove indentation. It relies on the variables notmuch-show-message-begin-regexp, notmuch-show-header-begin-regexp, and notmuch-show-message-end-regexp.
-rw-r--r--notmuch.el24
1 files changed, 24 insertions, 0 deletions
diff --git a/notmuch.el b/notmuch.el
index 5fc38bf..977ee27 100644
--- a/notmuch.el
+++ b/notmuch.el
@@ -225,6 +225,30 @@ Unlike builtin `previous-line' this version accepts no arguments."
(re-search-forward notmuch-show-tags-regexp)
(split-string (buffer-substring (match-beginning 1) (match-end 1)))))
+(defun notmuch-show-get-header ()
+ "Retrieve and parse the header from the current message. Returns an alist with of (header . value)
+where header is a symbol and value is a string. The summary from notmuch-show is returned as the
+pseudoheader summary"
+ (require 'mailheader)
+ (save-excursion
+ (beginning-of-line)
+ (if (not (looking-at notmuch-show-message-begin-regexp))
+ (re-search-backward notmuch-show-message-begin-regexp))
+ (re-search-forward (concat notmuch-show-header-begin-regexp "\n[[:space:]]*\\(.*\\)\n"))
+ (let* ((summary (buffer-substring-no-properties (match-beginning 1) (match-end 1)))
+ (beg (point)))
+ (re-search-forward notmuch-show-header-end-regexp)
+ (let ((text (buffer-substring beg (match-beginning 0))))
+ (with-temp-buffer
+ (insert text)
+ (goto-char (point-min))
+ (while (looking-at "\\([[:space:]]*\\)[A-Za-z][-A-Za-z0-9]*:")
+ (delete-region (match-beginning 1) (match-end 1))
+ (forward-line)
+ )
+ (goto-char (point-min))
+ (cons (cons 'summary summary) (mail-header-extract-no-properties)))))))
+
(defun notmuch-show-add-tag (&rest toadd)
"Add a tag to the current message."
(interactive