2013-06-22 16 views
5

Próbuję utworzyć szablon przy użyciu szablonów przechwytywania org podczas korzystania z mu4e. Przeglądając wiadomość w trybie mu4e: view, mogę wywołać szablony przechwytywania org za pomocą klawisza, a następnie dodać przypomnienie w pliku z linkiem do wiadomości. Coś takiego:Korzystanie z szablonów przechwytywania org za pomocą mu4e

* NEXT Respond to Person A on Message Subject 
SCHEDULED: <2013-06-22 Sat> 
[2013-06-22 Sat 22:05] 
Email subject linked to mu4e message 

Oto szablon w moim .emacs:

(setq org-capture-templates 
(quote (("r" "respond" entry (file "~/refile.org") 
"* NEXT Respond to %:from on %:subject\nSCHEDULED: %t\n%U\n%a\n\n" 
:clock-in t :clock-resume t :immediate-finish t)))) 

Ale zmienne w sekcji 9.1.3.2 do orgmode oficjalnej instrukcji nie są ustawione w mu4e. Zgaduję, że powinien on zostać ustawiony w następującej funkcji w org-mu4e.el. Zobacz 3 wiersze oznaczone komentarzem, który dodałem, ale to nie rozwiązuje problemu. Link (% a) zostaje zainicjowany, ale nie: do,: od i: subject.

Gdybym debugowania, widzę wywołanie funkcji Org-store-link-rekwizyty wygląda następująco:

org-store-link-props(:type "mu4e" :from (("Person Name" . "[email protected]")) 
:to (("Me Surname" . "[email protected]")) :subject "Re: Subject of Email" 
:message-id "message-id") 

Jednak szablon ocenia się:

* NEXT Respond to %:from on %:subject 
SCHEDULED: <2013-06-23 Sun> 
[2013-06-23 Sun 21:08] 

Dzięki za help - jest to ostatnia funkcja, która działa dla mnie:

(defun org-mu4e-store-link() 
"Store a link to a mu4e query or message." 
(cond 
;; storing links to queries 
((eq major-mode 'mu4e-headers-mode) 
    (let* ((query (mu4e-last-query)) 
     desc link) 
(org-store-link-props :type "mu4e" :query query) 
(setq 
    desc (concat "mu4e:query:" query) 
    link desc) 
(org-add-link-props :link link :description desc) 
link)) 
    ;; storing links to messages 
((eq major-mode 'mu4e-view-mode) 
    (let* ((msg (mu4e-message-at-point)) 
    (msgid (or (plist-get msg :message-id) "<none>")) 
    (from (car (car (mu4e-message-field msg :from)))) 
    (to (car (car (mu4e-message-field msg :to)))) 
    (subject (mu4e-message-field msg :subject)) 
    link) 
    (setq link (concat "mu4e:msgid:" msgid)) 
    (org-store-link-props :type "mu4e" :link link 
      :message-id msgid) 
    (setq link (concat "mu4e:msgid:" msgid)) 
    (org-store-link-props 
    :type "mu4e" :from from :to to :subject subject 
      :message-id msgid) 

    (org-add-link-props :link link 
      :description (funcall org-mu4e-link-desc-func msg)) 
    link)))) 

(org-add-link-type "mu4e" 'org-mu4e-open) 
(add-hook 'org-store-link-functions 'org-mu4e-store-link) 
+0

Dobra, zrobiłem pewne postępy. Wygląda na to, że mu4e-message-field zwraca e-maile jako (("Imię Nazwisko". "[email protected]")). Więc jeśli zmienię to na ciąg z czymś takim jak dwa wywołania samochodu, to działa, chyba że pole "z" w mailu nie ma imienia i adresu e-mail, na przykład "Imię Nazwisko ". Nie jest to wcale eleganckie rozwiązanie, ale działa na razie. – cheese

+0

Kolejny sposób przechodzenia z listy list do łańcucha działałby lepiej? – cheese

+0

Jeśli przyjrzeć się sekcji "Funkcje wiadomości" w podręczniku (wydaje się, że SO nie pozwala sformatować tego jako czegoś bardzo czytelnego ...): Pola kontaktowe (do, od, DW, UDW) to listy cons-pairs "(nazwisko, adres e-mail)"; "Nazwa" może być "zerowa". Na przykład: (mu4e-message-field some-msg: to) ;;; => (("Jack". "[email protected]") (nil. "[email protected]")) – djcb

Odpowiedz

3

Coś takiego powinno działać:

(setq from 
    (let ((first (car (mu4e-message-field-at-point :from)))) 
    (if (car first) 
     (format "%s <%s>" (car first) (cdr first)) 
     (cdr first)))) 
Powiązane problemy