Hi,
While hacking around I read the doc for org-properties-postprocess-alist and I think it doesn't align with what the implementation of org-set-property does.
The example in the docstring says:
(("Remaining" (lambda(value)
(let ((clocksum (org-clock-sum-current-item))
(effort (org-duration-string-to-minutes
(org-entry-get (point) "Effort"))))
(org-minutes-to-hh:mm-string (- effort clocksum))))))
But in order for this to work with the implementation I think it would need to be :
(("Remaining" ((lambda(value)
(let ((clocksum (org-clock-sum-current-item))
(effort (org-duration-string-to-minutes
(org-entry-get (point) "Effort"))))
(org-minutes-to-hh:mm-string (- effort clocksum)))))))
Adding extra parens around the lambda expression in the example to make it a list. Either that or the implementation of org-set-property should change to :
$ diff org.el org.el.new
14593c14593
< (fn (assoc property org-properties-postprocess-alist)))
---
> (fn (cdr (assoc property org-properties-postprocess-alist))))
14596c14596
< (when fn (setq value (funcall (cadr fn) value)))
---
> (when fn (setq value (funcall fn value)))
What do you think?
~>Bill