Selaa lähdekoodia

Add drawer and keyword lists to index file for MobileOrg

MobileOrg needs to know the possible TODO keywords and DRAWERS that
can appear in Org files it receives.
Carsten Dominik 15 vuotta sitten
vanhempi
commit
32b1aebb37
4 muutettua tiedostoa jossa 30 lisäystä ja 3 poistoa
  1. 10 0
      lisp/ChangeLog
  2. 2 0
      lisp/org-agenda.el
  3. 14 3
      lisp/org-mobile.el
  4. 4 0
      lisp/org.el

+ 10 - 0
lisp/ChangeLog

@@ -1,8 +1,18 @@
 2009-09-19  Carsten Dominik  <carsten.dominik@gmail.com>
 
+	* org-mobile.el (org-mobile-create-index-file): Add the list of
+	TODO keywords, and the list of drawers to the index file.
+
+	* org-agenda.el (org-prepare-agenda): Reset
+	`org-drawers-for-agenda'.
+	(org-prepare-agenda): Uniquify list of drawers.
+
 	* org.el (org-complex-heading-regexp-format): New variable.
 	(org-set-regexps-and-options): Define
 	`org-complex-heading-regexp-format'.
+	(org-drawers-for-agenda): New variable.
+	(org-map-entries): Bind `org-drawers-for-agenda'.
+	(org-prepare-agenda-buffers): Add to `org-drawers-for-agenda'.
 
 	* org-remember.el (org-go-to-remember-target)
 	(org-remember-handler): Use `org-complex-heading-regexp-format'.

+ 2 - 0
lisp/org-agenda.el

@@ -2554,6 +2554,7 @@ bind it in the options section.")
 (defun org-prepare-agenda (&optional name)
   (setq org-todo-keywords-for-agenda nil)
   (setq org-done-keywords-for-agenda nil)
+  (setq org-drawers-for-agenda nil)
   (setq org-agenda-filter nil)
   (put 'org-agenda-filter :preset-filter org-agenda-filter-preset)
   (if org-agenda-multi
@@ -2575,6 +2576,7 @@ bind it in the options section.")
 	  (org-uniquify org-todo-keywords-for-agenda))
     (setq org-done-keywords-for-agenda
 	  (org-uniquify org-done-keywords-for-agenda))
+    (setq org-drawers-for-agenda (org-uniquify org-drawers-for-agenda))
     (let* ((abuf (get-buffer-create org-agenda-buffer-name))
 	   (awin (get-buffer-window abuf)))
       (cond

+ 14 - 3
lisp/org-mobile.el

@@ -173,9 +173,20 @@ agenda view showing the flagged items."
 (defun org-mobile-create-index-file ()
   "Write the index file in the WebDAV directory."
   (interactive)
-  (with-temp-file (expand-file-name org-mobile-index-file org-mobile-directory)
-    (insert "* [[file:agendas.org][Agenda Views]]\n")
-    (let ((files (org-agenda-files t)) file)
+  (let ((files (org-agenda-files t))
+	file todo-kwds done-kwds drawers)
+    (org-prepare-agenda-buffers (org-agenda-files t))
+    (setq done-kwds (org-uniquify org-done-keywords-for-agenda))
+    (setq todo-kwds (org-delete-all
+		     done-kwds
+		     (org-uniquify org-todo-keywords-for-agenda)))
+    (setq drawers (org-uniquify org-drawers-for-agenda))
+    (with-temp-file
+	(expand-file-name org-mobile-index-file org-mobile-directory)
+      (insert "#+TODO: " (mapconcat 'identity todo-kwds " ") " | "
+	      (mapconcat 'identity done-kwds " ") "\n"
+	      "#+DRAWERS: " (mapconcat 'identity drawers " ") "\n")
+      (insert "* [[file:agendas.org][Agenda Views]]\n")
       (while (setq file (pop files))
 	(insert (format "* [[file:%s][%s]]\n"
 			(file-name-nondirectory file)

+ 4 - 0
lisp/org.el

@@ -1705,6 +1705,7 @@ taken from the (otherwise obsolete) variable `org-todo-interpretation'."
 (make-variable-buffer-local 'org-todo-keywords-1)
 (defvar org-todo-keywords-for-agenda nil)
 (defvar org-done-keywords-for-agenda nil)
+(defvar org-drawers-for-agenda nil)
 (defvar org-todo-keyword-alist-for-agenda nil)
 (defvar org-tag-alist-for-agenda nil)
 (defvar org-agenda-contributing-files nil)
@@ -11685,6 +11686,7 @@ a *different* entry, you cannot use these techniques."
 	 org-todo-keywords-for-agenda
 	 org-done-keywords-for-agenda
 	 org-todo-keyword-alist-for-agenda
+	 org-drawers-for-agenda
 	 org-tag-alist-for-agenda)
 
     (cond
@@ -13908,6 +13910,8 @@ When a buffer is unmodified, it is just killed.  When modified, it is saved
 		  (append org-done-keywords-for-agenda org-done-keywords))
 	    (setq org-todo-keyword-alist-for-agenda
 		  (append org-todo-keyword-alist-for-agenda org-todo-key-alist))
+	    (setq org-drawers-for-agenda
+		  (append org-drawers-for-agenda org-drawers))
 	    (setq org-tag-alist-for-agenda
 		  (append org-tag-alist-for-agenda org-tag-alist))