Thanks for org-collector.el, now I have read it and tried it out.

It is very nice to have the possibility to evaluate lisp expressions as
values, that is something missing in org-columns!

But it was only a few seconds faster than column-view and column dblock
and therefore not fast enough for my slow computer ;-). I timed it to 62
seconds to insert exercise data table for one year (83 headings) with 4
columns and no calculations.

* ELP Profiling Results 

|---------------------------+-------+--------------+--------------|
| org-dblock-write:propview |     1 |    62.158395 |    62.158395 |
| org-propview-collect      |     1 |    60.578724 |    60.578724 |
| org-map-entries           |     1 |    60.519551 |    60.519551 |
| org-scan-tags             |     1 |    60.267157 |    60.267157 |
| org-entry-properties      |    94 | 57.451918999 | 0.6111906276 |
| org-get-tags-at           |    94 | 54.069399999 | 0.5752063829 |
| org-up-heading-all        |   365 | 53.664638999 | 0.1470264082 |
| outline-up-heading        |   365 |    53.647627 |    0.1469798 |
| outline-previous-heading  | 29751 | 39.418412999 | 0.0013249441 |
| org-outline-level         | 30306 | 6.0971540000 | 0.0002011863 |
| org-split-string          |   555 | 2.0629750000 | 0.0037170720 |
|---------------------------+-------+--------------+--------------|

It is clear from above who is the time thief.

* Comment

It did not work at first because sometimes I have properties without
values, they then gets the empty string assigned, "".

I had to adjust function org-read-prop because in my emacs (GNU Emacs
23.0.60.5):

(stringp "")           -> t

and

(string-to-number "")  -> 0
(string-to-number "0") -> 0

and then at line 34 it tries to take substring out of "".

Attaches diff if interested :-)
*** /home/mfo/org/org-collector.el~	2008-11-07 17:19:12.000000000 +0100
--- /home/mfo/org/org-collector.el	2008-11-07 18:14:23.000000000 +0100
***************
*** 27,45 ****
  Otherwise if prop looks like a list (meaning it starts with a
  '(') then read it as lisp, otherwise return it unmodified as a
  string."
!   (if (stringp prop)
!       (if prop
! 	  (let ((out (string-to-number prop)))
! 	    (if (equal out 0)
! 		(if (or (equal "(" (substring prop 0 1)) (equal "'" (substring prop 0 1)))
! 		    (read prop)
! 		    (if (string-match "^\\(+0\\|-0\\|0\\)$" prop)
! 			0
! 			(progn (set-text-properties 0 (length prop) nil prop)
! 			       prop)))
! 		out))
! 	  nil)
!       prop))
  
  (defun org-dblock-write:propview (params)
    "collect the column specification from the #+cols line
--- 27,43 ----
  Otherwise if prop looks like a list (meaning it starts with a
  '(') then read it as lisp, otherwise return it unmodified as a
  string."
!   (if (and (stringp prop) (not (equal prop "")))
!       (let ((out (string-to-number prop)))
! 	(if (equal out 0)
! 	    (if (or (equal "(" (substring prop 0 1)) (equal "'" (substring prop 0 1)))
! 		(read prop)
! 	      (if (string-match "^\\(+0\\|-0\\|0\\)$" prop)
! 		  0
! 		(progn (set-text-properties 0 (length prop) nil prop)
! 		       prop)))
! 	  out))
!     prop))
  
  (defun org-dblock-write:propview (params)
    "collect the column specification from the #+cols line
/Mikael Fornius
_______________________________________________
Emacs-orgmode mailing list
Remember: use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode

Reply via email to