emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Orgmode] [misc-new-features 2/5] Bugfixes, documentation and custom opt


From: James TD Smith
Subject: [Orgmode] [misc-new-features 2/5] Bugfixes, documentation and custom options for org-checklist.
Date: Mon, 13 Jul 2009 09:27:59 +0100

* contrib/lisp/org-checklist.el
  - Fix some problems with the print/export feature in org-checklist.
  - Add custom options for this module
  - Fix some interaction with a2ps
  - Only reset checkboxes if TODO state is done.

* doc/org.texi
  - Add documentation for org-checklist

* lisp/org.el
  - Add org-checklist to org-modules
---
 contrib/ChangeLog             |   16 ++++++++++
 contrib/lisp/org-checklist.el |   67 +++++++++++++++++++++++++++++++---------
 lisp/org.el                   |    1 +
 3 files changed, 69 insertions(+), 15 deletions(-)

diff --git a/contrib/ChangeLog b/contrib/ChangeLog
index 7e62df0..6a5c2a2 100644
--- a/contrib/ChangeLog
+++ b/contrib/ChangeLog
@@ -1,3 +1,19 @@
+2009-07-12  James TD Smith  <address@hidden>
+
+       * lisp/org-checklist.el (org-checklist): Add a custom group for
+       org-checklist. The options are all for the unchecked items export
+       function.
+       (org-checklist-export-time-format): Allow customising the
+       timestamp appended to the saved unchecked items list
+       (org-checklist-export-function): Allow customising the output
+       format for the unchecked items list.
+       (org-checklist-export-params): Options for the exporter.
+       (org-checklist-a2ps-params): Printing options.
+       (org-make-checklist-export): Use values from custom vars. Printing
+       is now controlled by the PRINT_EXPORT property in the entry, and
+       the user is only asked if it is missing. Pass the switches to
+       a2ps-buffer properly.
+
 2009-06-20  Carsten Dominik  <address@hidden>
 
        * README: List new file org-export-generic.el
diff --git a/contrib/lisp/org-checklist.el b/contrib/lisp/org-checklist.el
index 26d228f..4ebf91b 100644
--- a/contrib/lisp/org-checklist.el
+++ b/contrib/lisp/org-checklist.el
@@ -42,11 +42,37 @@
 ;;
 ;;; Code:
 (require 'org)
+(load "a2ps-print")
 
-(defvar export-time-format "%Y%m%d%H%M"
-  "format of timestamp appended to export file")
-(defvar export-function 'org-export-as-ascii
-  "function used to prepare the export file for printing")
+(defgroup org-checklist nil
+  "Extended checklist handling for org"
+  :tag "Org-checklist"
+  :group 'org)
+
+(defcustom org-checklist-export-time-format "%Y%m%d%H%M"
+  "The format of timestamp appended to LIST_EXPORT_BASENAME to
+  make the name of the export file."
+  :link '(function-link format-time-string)
+  :group 'org-checklist
+  :type 'string)
+
+(defcustom org-checklist-export-function 'org-export-as-ascii
+  "function used to prepare the export file for printing"
+  :group 'org-checklist
+  :type '(radio (function-item :tag "ascii text" org-export-as-ascii)
+               (function-item :tag "HTML"  org-export-as-html)
+               (function-item :tag "LaTeX" :value org-export-as-latex)
+               (function-item :tag "XOXO" :value org-export-as-xoxo)))
+
+(defcustom org-checklist-export-params nil
+  "options for the export function file for printing"
+  :group 'org-checklist
+  :type '(repeat string))
+
+(defcustom org-checklist-a2ps-params nil
+  "options for a2ps for printing"
+  :group 'org-checklist
+  :type '(repeat string))
 
 (defun org-reset-checkbox-state-maybe ()
   "Reset all checkboxes in an entry if the `RESET_CHECK_BOXES' property is set"
@@ -54,23 +80,30 @@
   (if (org-entry-get (point) "RESET_CHECK_BOXES")
       (org-reset-checkbox-state-subtree)))
 
+
 (defun org-make-checklist-export ()
   "Produce a checklist containing all unchecked items from a list
 of checkbox items"
   (interactive "*")
   (if (org-entry-get (point) "LIST_EXPORT_BASENAME")
-      (let* ((export-file (concat (org-entry-get (point) 
"LIST_EXPORT_BASENAME")
-                                 "-" (format-time-string export-time-format)
+      (let* ((export-file (concat (org-entry-get (point) 
"LIST_EXPORT_BASENAME" nil)
+                                 "-" (format-time-string
+                                      org-checklist-export-time-format)
                                  ".org"))
+            (print (case (org-entry-get (point) "PRINT_EXPORT" nil)
+                     (("" "nil" nil) nil)
+                     (t t)
+                     (nil (y-or-n-p "Print list? "))))
             exported-lines
-            title)
+            title "Checklist export")
        (save-restriction
          (save-excursion
            (org-narrow-to-subtree)
+           (org-update-checkbox-count-maybe)
            (org-show-subtree)
            (goto-char (point-min))
-           (if (looking-at org-complex-heading-regexp)
-               (setq title (match-string 4)))
+           (when (looking-at org-complex-heading-regexp)
+             (setq title (match-string 4)))
            (goto-char (point-min))
            (let ((end (point-max)))
              (while (< (point) end)
@@ -85,14 +118,18 @@ of checkbox items"
            (dolist (entry exported-lines) (insert entry))
            (org-update-checkbox-count-maybe)
            (write-file export-file)
-           (if (y-or-n-p "Print list? ")
-               ((funcall export-function)
-                (a2ps-buffer))))))))
+           (if (print)
+               (progn (funcall org-checklist-export-function
+                               org-checklist-export-params)
+                      (let* ((current-a2ps-switches a2ps-switches)
+                             (a2ps-switches (append current-a2ps-switches
+                                                    
org-checklist-a2ps-params)))
+                        (a2ps-buffer)))))))))
 
 (defun org-checklist ()
-  (if (member state org-done-keywords)
-      (org-make-checklist-export))
-  (org-reset-checkbox-state-maybe))
+  (when (member state org-done-keywords)
+    (org-make-checklist-export)
+    (org-reset-checkbox-state-maybe)))
 
 (add-hook 'org-after-todo-state-change-hook 'org-checklist)
 
diff --git a/lisp/org.el b/lisp/org.el
index 8843486..d08155a 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -184,6 +184,7 @@ to add the symbol `xyz', and the package must have a call to
        (const :tag "C  annotation-helper: Call Remember directly from Browser 
(OBSOLETE, use org-protocol)" org-annotation-helper)
        (const :tag "C  bookmark:          Org links to bookmarks" org-bookmark)
        (const :tag "C  browser-url:       Store link, directly from Browser 
(OBSOLETE, use org-protocol)" org-browser-url)
+       (const :tag "C  checklist:         Extra functions for checklists in 
repeated tasks" org-checklist)
        (const :tag "C  choose:            Use TODO keywords to mark decisions 
states" org-choose)
        (const :tag "C  collector:         Collect properties into tables" 
org-collector)
        (const :tag "C  depend:            TODO dependencies for Org-mode 
(PARTIALLY OBSOLETE, see built-in dependency support))" org-depend)
-- 
1.6.3.3





reply via email to

[Prev in Thread] Current Thread [Next in Thread]