From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bastien Subject: Re: [misc-new-features 2/5] Bugfixes, documentation and custom options for org-checklist. Date: Tue, 14 Jul 2009 14:09:12 +0200 Message-ID: <87ws6btqho.fsf@bzg.ath.cx> References: <1247473682-23338-1-git-send-email-ahktenzero@mohorovi.cc> <1247473682-23338-2-git-send-email-ahktenzero@mohorovi.cc> <1247473682-23338-3-git-send-email-ahktenzero@mohorovi.cc> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MQbDj-00007L-HH for emacs-orgmode@gnu.org; Tue, 14 Jul 2009 02:10:31 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MQbDg-00005t-Gb for emacs-orgmode@gnu.org; Tue, 14 Jul 2009 02:10:30 -0400 Received: from [199.232.76.173] (port=38403 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MQbDf-00005p-LF for emacs-orgmode@gnu.org; Tue, 14 Jul 2009 02:10:27 -0400 Received: from rv-out-0708.google.com ([209.85.198.242]:48941) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MQbDf-00082u-2r for emacs-orgmode@gnu.org; Tue, 14 Jul 2009 02:10:27 -0400 Received: by rv-out-0708.google.com with SMTP id c5so773588rvf.2 for ; Mon, 13 Jul 2009 23:10:26 -0700 (PDT) In-Reply-To: <1247473682-23338-3-git-send-email-ahktenzero@mohorovi.cc> (James TD Smith's message of "Mon, 13 Jul 2009 09:27:59 +0100") 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: James TD Smith Cc: emacs-orgmode@gnu.org I will apply this one tomorrow. Note that your changelog announces changes to org.texi that your patch don't contain. Thanks! James TD Smith writes: > * 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) -- Bastien