Emacs Org模式源不显示来自gmail atom feed的电子邮件正文

时间:2011-02-22 07:34:27

标签: emacs org-mode atom-feed

我已成功将我的Gmail Atom Feed添加到包含以下代码的组织文件

(setq org-feed-alist
          '(("Mail Entries"
              "http://mail.google.com/mail/feed/atom"
              "~/org/feeds.org" "Mail Entries"
              :parse-entry org-feed-parse-atom-entry
              :parse-feed org-feed-parse-atom-feed
              :item-full-text
              :template "* TODO %title\n %summary\n"
)))

典型的Gmail Atom Feed如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#">
<title>Gmail - Inbox for mail@gmail.com</title>
<tagline>New messages in your Gmail Inbox</tagline>
<fullcount>1</fullcount>
<link rel="alternate" href="http://mail.google.com/mail" type="text/html" />
<modified>2011-02-22T06:38:03Z</modified>
<entry>
<title>RE: URGENT URGENT</title>
<summary>Do this now or the world will end</summary>
<link rel="alternate" href="http://mail.google.com/mail?account_id=mail@gmail.com&amp;message_id=654646578943541&amp;view=conv&amp;extsrc=atom" type="text/html" />
<modified>2011-02-21T21:30:18Z</modified>
<issued>2011-02-21T21:30:18Z</issued>
<id>tag:gmail.google.com,2003:104521846321321</id>
<author>
<name>me</name>
<email>mail@gmail.com</email>
</author>
</entry>

当我点击C-c C-x g并输入我的凭据时,我会在我的.org文件中找到它

** TODO RE: URGENT URGENT
  %summary

不是来自Atom Feed的实际摘要,其摘要应为“现在就这样做或世界将会结束”

我已阅读org-feed.el中的文档,这一行让我相信我可以在%summary的模板中包含摘要XML项目。

  

Feed项中的任何字段都可以插入到模板中   %name,例如%title%description%pubDate等。

我错了吗?有没有办法将摘要插入我的模板(最好不要修改org-feed.el)

任何助手都会在谢谢和彩虹中淋浴

1 个答案:

答案 0 :(得分:5)

问题在于org-feed-parse-atom-entry。它不提供对所有xml元素的访问。

我成功地使用这些建议来启用摘要:

(defadvice org-feed-parse-atom-entry (after org-feed-parse-atom-entry-summary activate)
  ;; Add <summary/> as :summary.
  (let* ((entry (ad-get-arg 0))
         (xml (car (read-from-string (plist-get entry :item-full-text)))))
    (setq entry (plist-put entry :summary
                           (xml-substitute-special
                            (car (xml-node-children
                                  (car (xml-get-children xml 'summary)))))))
    entry))

另外,:item-full-text不是org-feed-alist的正确关键字。它是传入各种函数的条目p列表中使用的键。