From mboxrd@z Thu Jan 1 00:00:00 1970 From: James TD Smith Subject: [misc-new-features 2/5] Bugfixes, documentation and custom options for org-checklist. Date: Mon, 13 Jul 2009 09:27:59 +0100 Message-ID: <1247473682-23338-3-git-send-email-ahktenzero@mohorovi.cc> References: <1247473682-23338-1-git-send-email-ahktenzero@mohorovi.cc> <1247473682-23338-2-git-send-email-ahktenzero@mohorovi.cc> Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MQHaX-0002ou-4Z for emacs-orgmode@gnu.org; Mon, 13 Jul 2009 05:12:45 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MQHaT-0002mq-5Y for emacs-orgmode@gnu.org; Mon, 13 Jul 2009 05:12:44 -0400 Received: from [199.232.76.173] (port=49006 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MQHaS-0002mh-EZ for emacs-orgmode@gnu.org; Mon, 13 Jul 2009 05:12:40 -0400 Received: from 81-86-40-42.dsl.pipex.com ([81.86.40.42]:62600 helo=yog-sothoth.mohorovi.cc) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1MQHaR-0008Sq-II for emacs-orgmode@gnu.org; Mon, 13 Jul 2009 05:12:40 -0400 In-Reply-To: <1247473682-23338-2-git-send-email-ahktenzero@mohorovi.cc> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org * 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 + + * 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 * 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