Vielen Dank Melioratus, was für eine hervorragende Antwort! Es ist erstaunlich, wie Sie die verschiedenen Mechanismen des Org-Modus verwendet haben, um dies zu tun. Der wichtigste Teil davon war für mich, :results raw
welcher Text ausgegeben wurde, der bei der Erstellung der Agenda erneut gescannt werden sollte. Das war der Schlüssel.
Als ich mir ansah, wie ich dies erweitern könnte, um viele Daten zu verarbeiten, fragte ich mich, ob ich die Datumsberechnungen nicht einfach in elisp durchführen könnte. Ich bin noch sehr neu in Elisp, aber ich habe ein bisschen herumgehackt und mir das ausgedacht.
Meine Aufgabe besteht darin, das Datum zu berechnen, an dem meine Medikamente aufgebraucht sind, indem ich dem Tag, an dem ich mit der Flasche beginne, 30 Tage hinzufüge. Was ich getan habe war das.
In meinen .emacs habe ich einige Funktionen geschrieben:
(defun date-high-low (secs)
"Split int into high-low words"
(list (/ secs 65536) (% secs 65536)))
(defun date-plus-days (datestr days)
"Generate org-style date string from date + days offset"
(format-time-string "<%Y-%m-%d %a>" (date-high-low (truncate (+ (org-time-string-to-seconds datestr) (* days 86400))))))
(defun org-header-date-plus-days (fmt datestr days)
"Use above to build final org header entry from format string"
(princ (format fmt (date-plus-days datestr days))))
Ich habe versucht, diese Funktionen generisch zu halten und mich nicht auf die Medikamente zur Wiederverwendbarkeit zu konzentrieren. Es könnte bessere Möglichkeiten geben, dies zu tun, wie ich sagte, ich bin ein Neuling.
Dann mache ich in meiner .org-Datei Folgendes:
#+HEADER: :results raw output replace
#+begin_src elisp
(org-header-date-plus-days "** MED LAST DAY Med-1\nDEADLINE: %s\n" "[2014-12-14 Sun]" 30)
(org-header-date-plus-days "** MED LAST DAY Med-2\nDEADLINE: %s\n" "[2014-12-22 Mon]" 54)
(org-header-date-plus-days "** MED LAST DAY Med-3\nDEADLINE: %s\n" "[2015-01-02 Fri]" 60)
#+end_src
Schön und ordentlich, eine Zeile pro Instanz. Wenn Sie Cc Cc für den Block ausführen, werden die Überschrift und die FRIST mit Datum generiert und es wird perfekt in der Agenda angezeigt. Es funktioniert gut und ich bin mit den Ergebnissen zufrieden. Nochmals vielen Dank für den Tipp an Sie und Lawlist.
ps Das einzige, was nicht funktioniert, ist das replace
. Es wird immer an den Block # + RESULTS angehängt, daher muss ich ihn löschen, bevor ich ihn generieren kann. Es ist geringfügig, aber ich verstehe nicht warum.
org-mode
und (meiner Meinung nach) nicht einfach geändert werden kann - es gibt sogar einen Beachten Sie in der Dokumentzeichenfolge die Zeitstempelvariable, die davon abrät, sie zu optimieren.