* 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
_______________________________________________
Emacs-orgmode mailing list
Remember: use `Reply All' to send replies to the list.
address@hidden
http://lists.gnu.org/mailman/listinfo/emacs-orgmode