[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [O] Conditional summing in column-mode?,
Nicolas Goaziou <=