aboutsummaryrefslogtreecommitdiffhomepage
path: root/notmuch.el
diff options
context:
space:
mode:
authorGravatar David Bremner <bremner@unb.ca>2010-02-11 22:34:31 -0400
committerGravatar Carl Worth <cworth@cworth.org>2010-02-20 12:12:09 -0800
commite6c6bf3250475ead63a8306342d3af1d2d48e18a (patch)
treeff8fdab2dec60cbe2b88cf86422c2d2f72905341 /notmuch.el
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.
Diffstat (limited to 'notmuch.el')
-rw-r--r--notmuch.el24
1 files changed, 24 insertions, 0 deletions
diff --git a/notmuch.el b/notmuch.el
index 5fc38bf7..977ee278 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