emacs-orgmode
[Top][All Lists]
Advanced

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

Re: [O] Conditional summing in column-mode?


From: Nicolas Goaziou
Subject: Re: [O] Conditional summing in column-mode?
Date: Fri, 01 Sep 2017 23:29:11 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux)

Hello,

Stig Brautaset <address@hidden> writes:

> I think I like it. So I could then do something like:
>
>     (defun sb/org-collect-confirmed-days ()
>       "Return `DAYS' for `CONFIRMED' entries, otherwise return 0"
>       (let ((days (org-entry-get nil "DAYS"))
>             (confirmed (org-entry-get nil "CONFIRMED")))
>         (if (and days (string= "[X]" confirmed))
>             days
>           "0")))
>
>     (setq org-columns-summary-types
>           '(("X+" org-columns--summary-sum
>           sb/org-collect-confirmed-days)))

That's the idea, expect it should take one argument, the property being
summarized.

> That seems quite elegant! I guess the COLLECT function would be called
> in `org-agenda-colview-summarize' such that the existing summary
> functions would not need to change?

No, it wouldn't. It would be called in `org-columns--compute-spec' where
`value' is bound. Actually, we could write a getter,
`org-columns--collect', which would return COLLECT, as defined in the
summary, or

  (lambda (p) (org-entry-get (point) p))

Note that COLLECT function is called on a headline. Returning an empty
string means the property has no value (per `value-set' in the function
`org-columns--compute-spec').

> Though, there will then be a tight coupling between the "X+" label and
> the column name, which is not ideal. Perhaps the COLLECT function could
> (optionally?) take the column name

Indeed.

> I don't mind having a go at adding support for this,

Great. Implementation-wise, I think there is not much to do. But it
needs to be documented and tested in "test-org-colview.el".

Thank you!

Regards,

-- 
Nicolas Goaziou



reply via email to

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