emacs-orgmode
[Top][All Lists]
Advanced

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

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


From: Carsten Dominik
Subject: Re: [Orgmode] [misc-new-features 2/5] Bugfixes, documentation and custom options for org-checklist.
Date: Mon, 3 Aug 2009 16:47:55 +0200

Hi James,

I have applied this patch, with one modification:

I added a 'no-erro argument to the (load "a2ps-print") form,
to make sure that people who have not installed a2ps-print.el can
still use the other functionality in your package.  Please let me
know if this was not the right thing to do.

- Carsten

On Jul 13, 2009, at 10:27 AM, James TD Smith wrote:

* 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





reply via email to

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