Re: [O] [feature request] More flexible repeats
Dave Abrahams d...@boostpro.com writes: I have habits that I need to perform, e.g., every weekday, or four times a week. I don't see a way to express that. If I could schedule a task for +1.4d or +1.75d (respectively), I'd be happy. Habits aren't really for scheduling, they're for monitoring a simple kind of consistency. So, if you *actually* need to do something four times a week, habits aren't the best way to express that need. If I had something that I wanted to do around four times a week, I'd use this: .+1d/2d Which means, I could do it 7 times a week, or I should do it 3 times a week, but I'm likely going to fall somewhere in between. Habits were never meant as a precise way to keep you on a schedule. The closest way I can think of to do that within Org's current framework is to schedule four different instances of your task, each with its own 1 week repeating interval. That way, you'd see the item appearing in your agenda four times. However, if you start slipping, things get very messy, very fast. Lastly, even if you did have a 1.4d repeating interval for a habit, Habits would only show you if you'd been consistent at doing the task every 1.4 days. It would never be able to tell you if you'd been consistent at doing it 4 times within any given week. John
Re: [O] Dimming ancestors in the agenda (relevant to indenting nested TODOs in agenda views)
Okay, here's an attempt at indicating nested todos in the todo agenda view. The more I futzed with comparing consecutive TODOs the hackier it seemed, so I went with something more fundamental. Right now I think this is a bigger solution than the problem warranted, but it might also open the way to other interesting features, so I'm floating it here. With the attached patch, and the variable `org-agenda-todo-list-sublevels' set to anything but nil, `org-agenda-get-todos' will put todos into nested lists, rather than a flat list. While that's happening, TODOs can be formatted differently to indicate their depth within TODO subtrees. Currently that's hardcoded to the venerable leading dots, but symbol values for `org-agenda-todo-list-sublevels' could provide for a wider variety of formatting options, or a custom function. Then `org-finalize-agenda-entries' unwinds the nested lists back into a flat list (using a flatten pattern straight out of Paul Graham), applying the necessary filtering, highlighting and sorting functions along the way. One bonus is that each level of TODO subtrees gets sorted distinctly. Two questions: 1. Is this buggy or broken or unnecessarily slow? 2. Is this justified? Can we do other cool stuff with this? That's all. Hope it works! Eric diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el index b1fa5f5..417566d 100644 --- a/lisp/org-agenda.el +++ b/lisp/org-agenda.el @@ -587,12 +587,19 @@ When nil, these trees are also scanned by agenda commands. :type 'boolean) (defcustom org-agenda-todo-list-sublevels t - Non-nil means check also the sublevels of a TODO entry for TODO entries. -When nil, the sublevels of a TODO entry are not checked, resulting in -potentially much shorter TODO lists. + How to display TODO entries that are sublevels of a TODO entry. +When nil, the sublevels of a TODO entry are not returned, +resulting in potentially much shorter TODO lists. When t, the +default, show all TODO entries as a flat list. 'indent and 'fade +change the way TODO entries that follow a parent TODO are +displayed. :group 'org-agenda-skip :group 'org-agenda-todo-list - :type 'boolean) + :type '(choice + (const :tag Create a flat list of sublevels t) + (const :tag Do not list sublevel todos nil) + (const :tag Indent sublevel todos indent) + (const :tag Fade out sublevel todos fade))) (defcustom org-agenda-todo-ignore-with-date nil Non-nil means don't show entries with a date in the global todo list. @@ -4582,40 +4590,57 @@ the documentation of `org-diary'. (mapconcat 'identity (org-split-string org-select-this-todo-keyword |) \\|) -\\)\\)) + \\)\\)) org-not-done-regexp) [^\n\r]*\\))) -marker priority category category-pos tags todo-state ee txt beg end) -(goto-char (point-min)) -(while (re-search-forward regexp nil t) - (catch :skip - (save-match-data - (beginning-of-line) - (org-agenda-skip) - (setq beg (point) end (save-excursion (outline-next-heading) (point))) - (when (org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item end) - (goto-char (1+ beg)) - (or org-agenda-todo-list-sublevels (org-end-of-subtree 'invisible)) - (throw :skip nil))) - (goto-char (match-beginning 1)) - (setq marker (org-agenda-new-marker (match-beginning 0)) - category (org-get-category) - category-pos (get-text-property (point) 'org-category-position) - txt (match-string 1) - tags (org-get-tags-at (point)) - txt (org-format-agenda-item txt category tags) - priority (1+ (org-get-priority txt)) - todo-state (org-get-todo-state)) - (org-add-props txt props - 'org-marker marker 'org-hd-marker marker - 'priority priority 'org-category category - 'org-category-position category-pos - 'type todo 'todo-state todo-state) - (push txt ee) - (if org-agenda-todo-list-sublevels - (goto-char (match-end 1)) - (org-end-of-subtree 'invisible -(nreverse ee))) +(depth 0)) + +(flet ((mk-td (start finish) + (goto-char start) + (let (marker priority category category-pos tags todo-state ee txt beg end) + (while (re-search-forward regexp finish t) + (catch :skip + (save-match-data + (beginning-of-line) + (org-agenda-skip) + (setq beg (point) end (save-excursion (outline-next-heading) (point))) + (when
Re: [O] Dimming ancestors in the agenda (relevant to indenting nested TODOs in agenda views)
On Sat, Sep 24 2011, Eric Abrahamsen wrote: Okay, here's an attempt at indicating nested todos in the todo agenda view. That might not have been the most useful way to attach the diff, sorry. diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el index b1fa5f5..417566d 100644 --- a/lisp/org-agenda.el +++ b/lisp/org-agenda.el @@ -587,12 +587,19 @@ When nil, these trees are also scanned by agenda commands. :type 'boolean) (defcustom org-agenda-todo-list-sublevels t - Non-nil means check also the sublevels of a TODO entry for TODO entries. -When nil, the sublevels of a TODO entry are not checked, resulting in -potentially much shorter TODO lists. + How to display TODO entries that are sublevels of a TODO entry. +When nil, the sublevels of a TODO entry are not returned, +resulting in potentially much shorter TODO lists. When t, the +default, show all TODO entries as a flat list. 'indent and 'fade +change the way TODO entries that follow a parent TODO are +displayed. :group 'org-agenda-skip :group 'org-agenda-todo-list - :type 'boolean) + :type '(choice + (const :tag Create a flat list of sublevels t) + (const :tag Do not list sublevel todos nil) + (const :tag Indent sublevel todos indent) + (const :tag Fade out sublevel todos fade))) (defcustom org-agenda-todo-ignore-with-date nil Non-nil means don't show entries with a date in the global todo list. @@ -4563,6 +4570,7 @@ the documentation of `org-diary'. (setq results (append results rtn results + (defun org-agenda-get-todos () Return the TODO information for agenda display. (let* ((props (list 'face nil @@ -4582,40 +4590,57 @@ the documentation of `org-diary'. (mapconcat 'identity (org-split-string org-select-this-todo-keyword |) \\|) - \\)\\)) + \\)\\)) org-not-done-regexp) [^\n\r]*\\))) - marker priority category category-pos tags todo-state ee txt beg end) -(goto-char (point-min)) -(while (re-search-forward regexp nil t) - (catch :skip - (save-match-data - (beginning-of-line) - (org-agenda-skip) - (setq beg (point) end (save-excursion (outline-next-heading) (point))) - (when (org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item end) - (goto-char (1+ beg)) - (or org-agenda-todo-list-sublevels (org-end-of-subtree 'invisible)) - (throw :skip nil))) - (goto-char (match-beginning 1)) - (setq marker (org-agenda-new-marker (match-beginning 0)) - category (org-get-category) - category-pos (get-text-property (point) 'org-category-position) - txt (match-string 1) - tags (org-get-tags-at (point)) - txt (org-format-agenda-item txt category tags) - priority (1+ (org-get-priority txt)) - todo-state (org-get-todo-state)) - (org-add-props txt props - 'org-marker marker 'org-hd-marker marker - 'priority priority 'org-category category - 'org-category-position category-pos - 'type todo 'todo-state todo-state) - (push txt ee) - (if org-agenda-todo-list-sublevels - (goto-char (match-end 1)) - (org-end-of-subtree 'invisible -(nreverse ee))) + (depth 0)) + +(flet ((mk-td (start finish) + (goto-char start) + (let (marker priority category category-pos tags todo-state ee txt beg end) + (while (re-search-forward regexp finish t) + (catch :skip + (save-match-data + (beginning-of-line) + (org-agenda-skip) + (setq beg (point) end (save-excursion (outline-next-heading) (point))) + (when (org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item end) + (goto-char (1+ beg)) + (or org-agenda-todo-list-sublevels (org-end-of-subtree 'invisible)) + (throw :skip nil))) + (goto-char (match-beginning 1)) + (setq marker (org-agenda-new-marker (match-beginning 0)) + category (org-get-category) + category-pos (get-text-property (point) 'org-category-position) + txt (concat (if + ( depth 0) + (make-string (* 2 depth) ?.) + ) (match-string 1)) + tags (org-get-tags-at (point)) + txt (org-format-agenda-item txt category tags depth) + priority (1+ (org-get-priority txt)) + todo-state (org-get-todo-state)) + (org-add-props txt props + 'org-marker marker 'org-hd-marker marker + 'priority priority 'org-category category + 'org-category-position category-pos + 'type todo 'todo-state todo-state) + (if (not org-agenda-todo-list-sublevels) + (progn + (push txt ee) + (org-end-of-subtree 'invisible)) + (goto-char (match-end 0)) + (let* ((depth (1+ depth)) + (subtree-todos + (mk-td (point) + (save-excursion (org-end-of-subtree 'invisible) (point) + (when subtree-todos + (setq txt (cons txt (nreverse subtree-todos + (push txt ee) + ee))) + (goto-char (point-min)) + (nreverse (mk-td (point) (point-max)) + (defun
Re: [O] [feature request] More flexible repeats
on Sat Sep 24 2011, John Wiegley jwiegley-AT-gmail.com wrote: Dave Abrahams d...@boostpro.com writes: I have habits that I need to perform, e.g., every weekday, or four times a week. I don't see a way to express that. If I could schedule a task for +1.4d or +1.75d (respectively), I'd be happy. Habits aren't really for scheduling, they're for monitoring a simple kind of consistency. Understood. So, if you *actually* need to do something four times a week, habits aren't the best way to express that need. Exactly. They don't have the expressiveness I want, as currently designed. If I had something that I wanted to do around four times a week, I'd use this: .+1d/2d Which means, I could do it 7 times a week, or I should do it 3 times a week, but I'm likely going to fall somewhere in between. I think I see. That means, literally, at most every day, but at least every two days? So, a couple of questions: - what would it change if I just wrote .+2d? - how would I express something that I want to do 5 times a week? Habits were never meant as a precise way to keep you on a schedule. I'm not thinking of them that way. I admit that every weekday is pretty precise, but that's merely at the extreme end of a spectrum of consistency. It's still a goal with respect to which I'd reasonably like to be able to monitor my success rate. The closest way I can think of to do that within Org's current framework is to schedule four different instances of your task, each with its own 1 week repeating interval. That way, you'd see the item appearing in your agenda four times. However, if you start slipping, things get very messy, very fast. Yes. Regular repeating events and habits both have this problem of no easy way to express interesting repetitions. Even my phone lets me schedule something that happens on weekdays or on two particular days each week. I think the basic parts of such a language might be: - predicates, e.g. Mon,Wed,Fri; the first week of each month; the first tuesday of the month - periods, e.g. 1 month - repetitions, e.g. 5 times General predicates are all you need to express repeating events. I think you need periods and repetitions for habits. Lastly, even if you did have a 1.4d repeating interval for a habit, Habits would only show you if you'd been consistent at doing the task every 1.4 days. It would never be able to tell you if you'd been consistent at doing it 4 times within any given week. Then 1.4d is clearly *not* the expressive tool I need :-) -- Dave Abrahams BoostPro Computing http://www.boostpro.com
Re: [O] [feature request] More flexible repeats
On Sat, Sep 24 2011, Dave Abrahams wrote: [...] I think the basic parts of such a language might be: - predicates, e.g. Mon,Wed,Fri; the first week of each month; the first tuesday of the month - periods, e.g. 1 month - repetitions, e.g. 5 times Looks like you're coming up on the crontab syntax :) -- GNU Emacs 23.2.1 (i686-pc-linux-gnu, GTK+ Version 2.24.4) of 2011-04-04 on rothera, modified by Debian Org-mode version 7.7 (release_7.7.324.ge5d88)
Re: [O] [feature request] More flexible repeats
on Sat Sep 24 2011, Eric Abrahamsen eric-AT-ericabrahamsen.net wrote: On Sat, Sep 24 2011, Dave Abrahams wrote: [...] I think the basic parts of such a language might be: - predicates, e.g. Mon,Wed,Fri; the first week of each month; the first tuesday of the month - periods, e.g. 1 month - repetitions, e.g. 5 times Looks like you're coming up on the crontab syntax :) Good point. I don't need a fancy syntax if I can express it with elisp, of course. Maybe enabling that would be a good first step. -- Dave Abrahams BoostPro Computing http://www.boostpro.com
[O] Bug: [feature request] org-indirect-buffer-follow [7.7 (release_7.7.350.g9a179e)]
Remember to cover the basics, that is, what you expected to happen and what in fact did happen. You don't know how to make a good report? See http://orgmode.org/manual/Feedback.html#Feedback Your bug report will be posted to the Org-mode mailing list. In org-agenda-follow-mode, it scrolls me around a big, messy Org file that has way more information than I'm actually interested in. What I really want is the effect of hitting `SPC' automatically whenever I visit an agenda item. Emacs : GNU Emacs 23.3.1 (x86_64-apple-darwin10.8.0, Carbon Version 1.6.0 AppKit 1038.36) of 2011-09-12 on pluto.luannocracy.com Package: Org-mode version 7.7 (release_7.7.350.g9a179e) -- Dave Abrahams BoostPro Computing http://www.boostpro.com
[O] org-enforce-todo-dependencies and mobile agendas
Hi, I'm using org-mobile-push to generate my mobile agendas file. Everything is working fine, except the org-enforce-todo-dependencies option. The output I obtain in my generated agendas.org file is same as I would see in my agenda without org-enforce-todo-dependencies set to t. As far as I understood, the agenda uses the org-agenda-dim-blocked-tasks to decide on what to do with blocked tasks. I have set it to invisible, thereby hiding the tasks in the agenda. I would like to have similar behavior for my mobile agendas. Is there some way of achieving the hiding of blocked tasks in the mobile agendas? Henning Weiss
[O] [patch] (was: [feature request] org-indirect-buffer-follow [7.7 (release_7.7.350.g9a179e)])
From 81ab272ab709c45e898831e5e019e02cfc6617fe Mon Sep 17 00:00:00 2001 From: Dave Abrahams d...@boostpro.com Date: Sat, 24 Sep 2011 15:21:53 -0400 Subject: [PATCH] Add indirect agenda follow mode By setting `org-agenda-follow-indirect' to a non-nil value, `org-agenda-follow-mode' will use an indirect buffer to display only the current item, rather than the whole agenda file in which it lives --- lisp/org-agenda.el | 13 ++--- 1 files changed, 10 insertions(+), 3 deletions(-) diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el index b1fa5f5..1b67153 100644 --- a/lisp/org-agenda.el +++ b/lisp/org-agenda.el @@ -872,6 +872,12 @@ Needs to be set before org.el is loaded. :group 'org-agenda-startup :type 'boolean) +(defcustom org-agenda-follow-indirect nil + Non-nil means `org-agenda-follow-mode' displays only the +current item's tree, in an indirect buffer. + :group 'org-agenda + :type 'boolean) + (defcustom org-agenda-show-outline-path t Non-nil means show outline path in echo area after line motion. :group 'org-agenda-startup @@ -6608,8 +6614,7 @@ so that the date SD will be in that range. (interactive) (setq org-agenda-follow-mode (not org-agenda-follow-mode)) (org-agenda-set-mode-name) - (if (and org-agenda-follow-mode (org-get-at-bol 'org-marker)) - (org-agenda-show)) + (org-agenda-do-context-action) (message Follow mode is %s (if org-agenda-follow-mode on off))) @@ -6771,7 +6776,9 @@ When called with a prefix argument, include all archive files as well. Show outline path and, maybe, follow mode window. (let ((m (org-get-at-bol 'org-marker))) (if (and org-agenda-follow-mode m) - (org-agenda-show)) + (if org-agenda-follow-indirect + (org-agenda-tree-to-indirect-buffer) + (org-agenda-show))) (if (and m org-agenda-show-outline-path) (org-with-point-at m (org-display-outline-path t) -- 1.7.3.4 -- Dave Abrahams BoostPro Computing http://www.boostpro.com
Re: [O] [feature request] More flexible repeats
On 9/24/11 7:16 AM, John Wiegley wrote: Dave Abrahamsd...@boostpro.com writes: I have habits that I need to perform, e.g., every weekday, or four times a week. I don't see a way to express that. If I could schedule a task for +1.4d or +1.75d (respectively), I'd be happy. Habits aren't really for scheduling, they're for monitoring a simple kind of consistency. So, if you *actually* need to do something four times a week, habits aren't the best way to express that need. It's funny that this topic came up on the mailing list just now -- I've been working on integrating org-mode more into my daily workflow, and am starting to put some habits in and was trying to figure out how to make the habits repeat in the way I want them to. If I have something that I want to track in terms of consistency, and want to do it during the weekdays, is there a way I could express that other then having a series of 5 habits, one for each day of the week, each one of which would repeat every week? -Mike -- Michael Steeves (stee...@raingods.net)
Re: [O] [babel] BUG in :session
Martyn Jago martyn.j...@btinternet.com writes: Hi Eric Eric Schulte schulte.e...@gmail.com writes: Martyn Jago martyn.j...@btinternet.com writes: Hi Eric Eric Schulte schulte.e...@gmail.com writes: Hi Martyn, I've just pushed up what will hopefully be a more general solution. Basically, language-specific test files can now signal errors if they have unmet dependencies. These are then intercepted by `org-test-load' and the file is not added to the test suite. Hopefully this will allow language-specific tests to be written without breaking the config-less test suite. See the top of test-ob-R.el for an example usage. Cheers -- Eric Unfortunately this is still broken for me. Given the exe exists but the feature doesn't (ie no personal config), the following line causes the error `peculiar error' ! (signal 'org-test-lib-not-found ess)) Oh, I forgot to update the types of errors that I am catching after adding a new error type for missing libraries (e.g., ess). This should now be fixed. There still seems to be a problem with test-ob-R - same error peculiar error. OK, I see this error as well. I've switched from using errors to signal a missing dependency to using catch/throw blocks. This seems to actually work, hopefully the test suite should now run w/o error. Is there a way to see the output of the test run, all I can find is the command which is executed. Yes - just click on the org-mode_Emacs_24 (title) link and then on the build log link. There isn't much of a log on the failing tests since the entire test run is broken by the signal. You can checkout the build log for my-org-mode-dev to see what you should get. Great, doing this I can see that everything is now running successfully http://martynjago.com:/builds/org-mode_Emacs_24/4446e50/build.log Very nice system, I wonder if we could run something like this on the Org-mode server. Cheers -- Eric -- Eric Schulte http://cs.unm.edu/~eschulte/
Re: [O] [babel] BUG in :session
Sebastien Vauban wxhgmqzgw...@spammotel.com writes: Hi Martyn and Eric, Martyn Jago wrote: Eric Schulte schulte.e...@gmail.com writes: Martyn Jago martyn.j...@btinternet.com writes: Eric Schulte schulte.e...@gmail.com writes: I've just pushed up what will hopefully be a more general solution. Basically, language-specific test files can now signal errors if they have unmet dependencies. These are then intercepted by `org-test-load' and the file is not added to the test suite. Hopefully this will allow language-specific tests to be written without breaking the config-less test suite. See the top of test-ob-R.el for an example usage. Cheers -- Eric Unfortunately this is still broken for me. Given the exe exists but the feature doesn't (ie no personal config), the following line causes the error `peculiar error' ! (signal 'org-test-lib-not-found ess)) FYI, same for me, with the batch tests, on a git update'd copy done 2 mins ago. Thanks for the supporting info. I've just pushed up a fix which should resolve this issue. Cheers -- Eric -- Eric Schulte http://cs.unm.edu/~eschulte/
[O] Testing org-export-as-odt-and-open
Hello I'm testing org-export-as-odt-and-open on Jambunathan's test.org file. I get error message Unable to create odt file (53). Is this caused by the fact that files are created in different directories? a) org-export-as-odt-and-open creates the file e:/User/home/pub_html/test.odt wheras b) the xml files are written in directory c:/Documents and Settings/GCVD3476/Local Settings/Temp/odt-4928fzB/ The debugger is entered when: Creating odt file using zip -rmTq test.odt . Did I forget to configure some variable or should I configure variable org-export-publishing-directory (currently: e:/User/home/pub_html/) differently? Below an extract from *Messages* and *Backtrace* buffers. Cordially, Eric Export buffer: Exporting to ODT using org-lparse... Using vacuous schema [3 times] c:/DOCUME~1/User/LOCALS~1/Temp/odt-4928fzB/content.xml and c:/Documents and Settings/User/Local Settings/Temp/odt-4928fzB/content.xml are the same file org-babel-exp processing... [3 times] Position saved to mark ring, go back with C-c . executing Org code block... * Some Appointment SCHEDULED: 2010-11-17 Wed org-babel-exp processing... Use of MathJax is incompatible with ODT exporter. Using verbatim instead. Exporting... Embedding ./org-mode-unicorn.png as Pictures/691b2c669141aa68f784d83e5c853f2b350b445f.png ... [5 times] Found table.el-type table in the source org file. table.el doesn't support ODT backend. Skipping ahead ... [2 times] Using schema ~/.emacs.d/elpa/org-odt-20110702/contrib/odt/etc/schema/od-schema-v1.2-cs01.rnc ODT export done, pushed to kill ring and clipboard Using schema ~/.emacs.d/elpa/org-odt-20110702/contrib/odt/etc/schema/od-schema-v1.2-cs01.rnc (No changes need to be saved) Switching to directory c:/Documents and Settings/User/Local Settings/Temp/odt-4928fzB/ Saving file c:/Documents and Settings/User/Local Settings/Temp/odt-4928fzB/META-INF/manifest.xml... Wrote c:/Documents and Settings/User/Local Settings/Temp/odt-4928fzB/META-INF/manifest.xml Saving file c:/Documents and Settings/User/Local Settings/Temp/odt-4928fzB/content.xml... Wrote c:/Documents and Settings/User/Local Settings/Temp/odt-4928fzB/content.xml Saving file c:/Documents and Settings/User/Local Settings/Temp/odt-4928fzB/meta.xml... Wrote c:/Documents and Settings/User/Local Settings/Temp/odt-4928fzB/meta.xml Saving file c:/Documents and Settings/User/Local Settings/Temp/odt-4928fzB/styles.xml... Wrote c:/Documents and Settings/User/Local Settings/Temp/odt-4928fzB/styles.xml Creating odt file using zip -rmTq test.odt . Entering debugger... Debugger entered--Lisp error: (error Unable to create odt file (53)) signal(error (Unable to create odt file (53))) error(Unable to create odt file (%S) 53) org-odt-save-as-outfile(e:/User/home/pub_html/test.odt (:latex-image-options nil :exclude-tags (noexport) :select-tags (export) :publishing-directory ~/pub_html :timestamp nil :expand-quoted-html t :html-table-tag tableborder=\2\ cellspacing=\0\ cellpadding=\6\ rules=\groups\ frame=\hsides\ :xml-declaration ((html . ?xml version=\1.0\ encoding=\%s\?) (php . ?php echo \?xml version=\\\1.0\\\ encoding=\\\%s\\\ ?\; ?)) :html-postamble auto :html-preamble t :html-extension html :inline-images maybe :convert-org-links t :agenda-style :style-extra :style :style-include-scripts t :style-include-default t :table-auto-headline t :tables t :time-stamp-file t :creator-info t :email-info nil :author-info t :email kjambunat...@gmail.com ...)) org-do-lparse(nil hidden nil nil nil nil) org-lparse(odt odt nil hidden) org-lparse-and-open(odt odt nil) org-export-as-odt-and-open(nil) call-interactively(org-export-as-odt-and-open) org-export(nil) call-interactively(org-export nil nil)
Re: [O] Dimming ancestors in the agenda (relevant to indenting nested TODOs in agenda views)
Hi Eric, Looks like you put a lot of work into this. Some comments: On 2011-09-24, Eric Abrahamsen e...@ericabrahamsen.net wrote: along the way. One bonus is that each level of TODO subtrees gets sorted distinctly. My goal (which might be different from yours) is as stated in the subject header; it's merely to dim any agenda entry that has any descendent of it anywhere in the same agenda. There would be no other differences, so sorting would be the same. (defcustom org-agenda-todo-list-sublevels t - Non-nil means check also the sublevels of a TODO entry for TODO entries. This looks like it only works for the agenda command(s) that list(s) todos, not for tags, text search, or daily/weekly agenda. Is that correct? I reviewed the manual and http://orgmode.org/worg/org-tutorials/advanced-searching.html#combining-metadata-and-full-text-queries . I've actually never understood the usefulness of the c-c a t view, given that all todo searches (IIUC) can in principle be implemented with a tags search and c-c a t would take forever with a large set of agenda files. Also, I rarely use T (and only interactively) and never use M. So your patch would actually not be useful to me, as I essentially don't use the todo searches. + How to display TODO entries that are sublevels of a TODO entry. +When nil, the sublevels of a TODO entry are not returned, +resulting in potentially much shorter TODO lists. When t, the This seems to allow you to dim sublevels, not ancestors. So it is actually the opposite of this thread's subject. Also, it seems to merge the concept of skipping sublevels with dimming. My guess is that they should be separated. Of course, it is your code and you know it best. Dimming of ancestors can be done after the entire agenda is created. So it need not be involved in the initial scanning of the outline at all, unless that is needed for efficiency. === It is probable that I do not understand what your goal is, as it is different from mine. The two goals might or might not be advisable to implement with the same approach. My goal is simply to dim anything in the agenda that has any descendant that is also showing in the agenda, efficiently. That way, if you have a project and a NEXT underneath it, the project will be dimmed and the NEXT will not, without any manual manipulation of metadata necessary. Hope it helps. Samuel -- The Kafka Pandemic: http://thekafkapandemic.blogspot.com I support the Whittemore-Peterson Institute (WPI) === Bigotry against people with serious diseases is still bigotry.
[O] shortcuts to hide nearest heading or sparse tree
Reposting due to no replies: I have been studying extensively and have not found a quick way to hide the nearest heading (which contains point) as well as the entire sparse tree. I often have two or more sparse trees open as I go look for information elsewhere and then want to return to the place I was at. So, can I be lazy and do these operations with a few keys?
Re: [O] Dimming ancestors in the agenda (relevant to indenting nested TODOs in agenda views)
On Sun, Sep 25 2011, Samuel Wales wrote: Hi Eric, Looks like you put a lot of work into this. Not that much work, in the end -- most of the effort was figuring out how the existing code works. Some comments: On 2011-09-24, Eric Abrahamsen e...@ericabrahamsen.net wrote: along the way. One bonus is that each level of TODO subtrees gets sorted distinctly. My goal (which might be different from yours) is as stated in the subject header; it's merely to dim any agenda entry that has any descendent of it anywhere in the same agenda. There would be no other differences, so sorting would be the same. Ha! No kidding, I guess I lost track of that in all the confusion. It makes little difference, though: all the current setup does is put TODOs into trees -- how you format what is wide open. To be honest I'm not sure how one would go about dimming a TODO (I don't think font properties support something like reduce the opacity of the current foreground color by 50%), but that's something to look into next. Anyway, doing it the way you want would not be hard. Sorting is actually still an issue for you: if you ever asked for TODOs to be sorted by effort, say, or priority, a child TODO could end up in a different part of the list than an ancestor, and you'd never see that they were related. This way, TODO subtrees always stay together. (defcustom org-agenda-todo-list-sublevels t - Non-nil means check also the sublevels of a TODO entry for TODO entries. This looks like it only works for the agenda command(s) that list(s) todos, not for tags, text search, or daily/weekly agenda. Is that correct? I reviewed the manual and http://orgmode.org/worg/org-tutorials/advanced-searching.html#combining-metadata-and-full-text-queries . I've actually never understood the usefulness of the c-c a t view, given that all todo searches (IIUC) can in principle be implemented with a tags search and c-c a t would take forever with a large set of agenda files. Also, I rarely use T (and only interactively) and never use M. So your patch would actually not be useful to me, as I essentially don't use the todo searches. This is a real problem. There seem to be four or five places in the codebase that do something like use a regexp to search for matching dingbats in all org files and put them in a list. More than one of those places produces something that looks like a plain TODO list. If the general approach here appeals, the next step would be to make it work for todo-tags as well. I think implementing it for the daily/weekly agenda is a bad idea (headlines and TODOs are meant to be formatted according to time-based attributes there), and doing it for text search would take some serious chin-scratching. But it would at least need to be expanded into todo-tags. What agenda commands do you use most often? Do you use multi-block custom agenda commands? + How to display TODO entries that are sublevels of a TODO entry. +When nil, the sublevels of a TODO entry are not returned, +resulting in potentially much shorter TODO lists. When t, the This seems to allow you to dim sublevels, not ancestors. So it is actually the opposite of this thread's subject. Also, it seems to merge the concept of skipping sublevels with dimming. My guess is that they should be separated. Of course, it is your code and you know it best. Dimming of ancestors can be done after the entire agenda is created. So it need not be involved in the initial scanning of the outline at all, unless that is needed for efficiency. === It is probable that I do not understand what your goal is, as it is different from mine. The two goals might or might not be advisable to implement with the same approach. My goal is simply to dim anything in the agenda that has any descendant that is also showing in the agenda, efficiently. That way, if you have a project and a NEXT underneath it, the project will be dimmed and the NEXT will not, without any manual manipulation of metadata necessary. I think we have similar goals, I just ended up with something a little more far-reaching than what you were proposing. As I mentioned above, I haven't implemented any dimming yet, and it would be just as easy to dim ancestors as children (both options could be provided). You're right, I merged the concept of dimming with skipping sublevels (actually, with collecting TODO subtrees), because it seemed the only way of knowing for certain what to dim was to know what belonged to what tree. It's a little overkill just for indicating ancestors, but it works perfectly well, and if people find it generally worthwhile it could open the door to other tricks… E -- GNU Emacs 23.2.1 (i686-pc-linux-gnu, GTK+ Version 2.24.4) of 2011-04-04 on rothera, modified by Debian Org-mode version 7.7 (release_7.7.320.gc8c8)
Re: [O] Dimming ancestors in the agenda (relevant to indenting nested TODOs in agenda views)
On 2011-09-24, Eric Abrahamsen e...@ericabrahamsen.net wrote: into trees -- how you format what is wide open. To be honest I'm not sure how one would go about dimming a TODO (I don't think font properties support something like reduce the opacity of the current foreground color by 50%), but that's something to look into next. Just a face. Simple. Sorting is actually still an issue for you: if you ever asked for TODOs to be sorted by effort, say, or priority, a child TODO could end up in a different part of the list than an ancestor, and you'd never see that they were related. This way, TODO subtrees always stay together. Nope, moving entries from their current sort order into an order that addresses hierarchy is not a requirement at this time (for me). Sorting does not need to change. My goal is simple: go through entries in the already-built agenda and dim anything that has a descendent in the same agenda. Hierarchical sorting is for the future. And it is undesirable if you do not have the horizontal real estate to indent. Note: I say entry meaning a headline in the agenda; todo entries are only a subset of those and I don't want to limit to todo entries. This is a real problem. There seem to be four or five places in the codebase that do something like use a regexp to search for matching dingbats in all org files and put them in a list. More than one of those places produces something that looks like a plain TODO list. IMO ideally any feature should work for all agenda views that the user might want to use it for. We want to reduce features that only work in special cases, or that don't work in special cases. Ideally. Again, what I am talking about (your case might be different) is not todo entries, but entries in general. If the general approach here appeals, the next step would be to make it work for todo-tags as well. I think implementing it for the daily/weekly agenda is a bad idea (headlines and TODOs are meant to be formatted according to time-based attributes there), and doing it for text search IMO the user sets the sort for the daily/weekly agenda just as much as for the others, and it is not always just by time, so it should be possible to meet the user's expectations with any new feature there as much as for other agenda views. would take some serious chin-scratching. But it would at least need to I'm not sure why any agenda view can't use these features. Certainly for my goal, but presumably for yours also? What agenda commands do you use most often? Do you use multi-block custom agenda commands? Usually not, but I'd want it to be an option for any new feature, for the sake of people who do. Otherwise they would wonder why it isn't working, post to the ml, etc. I think we have similar goals, I just ended up with something a little I'm reaching the opposite conclusion :). But I agree that if things are similar, they should be made the same with parameters. So if they are similar, go for it! haven't implemented any dimming yet, and it would be just as easy to dim ancestors as children (both options could be provided). OK, understood. You're right, I merged the concept of dimming with skipping sublevels (actually, with collecting TODO subtrees), because it seemed the only way of knowing for certain what to dim was to know what belonged to what tree. It's a little overkill just for indicating ancestors, but it works olpaths are another way. You might be able to collect them and put them on the entries in the agenda as a text property for efficiency. Or something. Then skipping can do its own thing without being mixed up with this stuff. Just stuff to possibly consider. Samuel -- The Kafka Pandemic: http://thekafkapandemic.blogspot.com I support the Whittemore-Peterson Institute (WPI) === Bigotry against people with serious diseases is still bigotry.
Re: [O] Dimming ancestors in the agenda (relevant to indenting nested TODOs in agenda views)
On Sun, Sep 25 2011, Samuel Wales wrote: [...] My goal is simple: go through entries in the already-built agenda and dim anything that has a descendent in the same agenda. Hierarchical sorting is for the future. And it is undesirable if you do not have the horizontal real estate to indent. Okay, what you want is simpler than I had assumed. My goal isn't really to make something that dims ancestors, though: it's to give users a number of choices for indicating hierarchical relationships between entries in agenda views. That ought to encompass your needs, but it probably will end up being a little more complicated. [...] I'm not sure why any agenda view can't use these features. Certainly for my goal, but presumably for yours also? The main problem is that the codebase is very scattered, and there are a large number of different functions that produce and display agenda-like entries. To make this (for whatever value of this) work for all agenda views, it will take quite a bit of poking about, and making little design decisions. I want to make sure that the general strategy is acceptable before I put that work in. Eric -- GNU Emacs 23.2.1 (i686-pc-linux-gnu, GTK+ Version 2.24.4) of 2011-04-04 on rothera, modified by Debian Org-mode version 7.7 (release_7.7.320.gc8c8)