瀏覽代碼

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 年之前
父節點
當前提交
32b1aebb37
共有 4 個文件被更改,包括 30 次插入3 次删除
  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))