Re: [O] notifications for todo items
On Sun, Feb 26 2012, Nicolas Goaziou wrote: > I didn't look at the code but you probably mean > (org-element-parse-buffer 'headline) if you're only interested in > headline data. Yes, it's "headline" in the code... :) -- Peter
Re: [O] notifications for todo items
Hello, Peter Münster writes: > On Sat, Feb 25 2012, Nick Dokos wrote: > >> A quick first impression: orgntf-process seems expensive. It seems >> to take 100% of one core (I've got a quad-core processor) for three or >> four seconds every fifty seconds. Unfortunately, the core is the same one >> that's running emacs, so emacs stops responding for those three or four >> seconds. I have disabled org-notify for now. > > How many lines do you have in your org-files? > (I've about 200 and execution time is about 100ms.) > > I call now "(org-element-parse-buffer 'heading)", I hope it's faster for > you. Is it faster, when the file is byte-compiled? I didn't look at the code but you probably mean (org-element-parse-buffer 'headline) if you're only interested in headline data. Regards, -- Nicolas Goaziou
Re: [O] notifications for todo items
Peter Münster wrote: > On Sat, Feb 25 2012, Nick Dokos wrote: > > > A quick first impression: orgntf-process seems expensive. It seems > > to take 100% of one core (I've got a quad-core processor) for three or > > four seconds every fifty seconds. Unfortunately, the core is the same one > > that's running emacs, so emacs stops responding for those three or four > > seconds. I have disabled org-notify for now. > > How many lines do you have in your org-files? > (I've about 200 and execution time is about 100ms.) > > I call now "(org-element-parse-buffer 'heading)", I hope it's faster for > you. Is it faster, when the file is byte-compiled? > > Other ideas: > - I could divide orgntf-process into several tasks, so that things run > more smoothly. > - You could call (org-notify-start -60), so the process will be called, > when idle for one minute. > > The file has a new home: https://github.com/p-m/org-notify > There is now `orgntf-verbose' to see execution time of > `orgntf-todo-list'. > > Thanks for testing! Profiling results after byte compiling both org-notify.el and org-element.el (the rest of org is uncompiled code): , | org-element-parse-elements891 3.846205 0.0043167295 | orgntf-process1 1.594772 1.594772 | orgntf-time-measure 1 1.594763 1.594763 | orgntf-todo-list 1 1.59444 1.59444 | org-element-parse-buffer 15 1.575525 0.1050350666 | org-element-current-element 876 1.512512 0.0017266118 | org-element-headline-parser 876 1.477510 0.0016866552 | org-entry-properties 1752 0.720182 0.0004110627 | org-element-parse-secondary-string876 0.468200 0.0005344748 | org-element-parse-objects 942 0.431715 0.0004582972 | org-element-get-next-object-candidates1151 0.404424 0.0003513683 | org-back-to-heading 3504 0.125123 3.570...e-05 | org-element-time-stamp-successor 969 0.120690 0.0001245521 | org-heading-components876 0.053240 6.077...e-05 | org-element-latex-or-entity-successor 1884 0.046981 2.493...e-05 | org-end-of-subtree876 0.036546 4.171...e-05 | org-match-string-no-properties4167 0.030249 7.259...e-06 | org-element-link-successor998 0.022016 2.206...e-05 | org-get-limited-outline-regexp1676 0.019910 1.187...e-05 | org-element-sub/superscript-successor 953 0.013222 1.387...e-05 | org-truely-invisible-p876 0.012717 1.451...e-05 | org-get-property-block876 0.011843 1.351...e-05 | org-element-map 15 0.010387 0.0006924666 | org-element-inline-src-block-successor942 0.006624 7.031...e-06 | org-element-text-markup-successor 942 0.006122 6.499...e-06 | org-at-heading-p 1767 0.005833 3.301...e-06 | org-element-macro-successor 876 0.005385 6.148...e-06 | org-get-category 1752 0.005148 2.938...e-06 | org-element-link-parser 63 0.004671 7.414...e-05 | org-element-inline-babel-call-successor 942 0.004548 4.829...e-06 | org-element-statistics-cookie-successor 922 0.003133 3.399...e-06 | org-refresh-category-properties 10 0.002967 0.0002967999 | org-element-property 5073 0.002889 5.694...e-07 | org-skip-whitespace 891 0.002762 3.101...e-06 | org-element-radio-target-successor876 0.002672 3.051...e-06 | org-outline-level 876 0.001801 2.055...e-06 | org-element-time-stamp-parser 93 0.001642 1.766...e-05 | orgnt
Re: [O] notifications for todo items
Peter Münster wrote: > On Sat, Feb 25 2012, Nick Dokos wrote: > > > A quick first impression: orgntf-process seems expensive. It seems > > to take 100% of one core (I've got a quad-core processor) for three or > > four seconds every fifty seconds. Unfortunately, the core is the same one > > that's running emacs, so emacs stops responding for those three or four > > seconds. I have disabled org-notify for now. > > How many lines do you have in your org-files? > (I've about 200 and execution time is about 100ms.) > Roughly 7000 - I just added a task to clean things up, so it's now 7002 :-) > I call now "(org-element-parse-buffer 'heading)", I hope it's faster for > you. Is it faster, when the file is byte-compiled? > > Other ideas: > - I could divide orgntf-process into several tasks, so that things run > more smoothly. > - You could call (org-notify-start -60), so the process will be called, > when idle for one minute. > This sounds promising - I'll try this out in the next iteration. > The file has a new home: https://github.com/p-m/org-notify > There is now `orgntf-verbose' to see execution time of > `orgntf-todo-list'. > OK - I'll try it out when I get a chance. Thanks, Nick
Re: [O] notifications for todo items
On Sat, Feb 25 2012, Nick Dokos wrote: > A quick first impression: orgntf-process seems expensive. It seems > to take 100% of one core (I've got a quad-core processor) for three or > four seconds every fifty seconds. Unfortunately, the core is the same one > that's running emacs, so emacs stops responding for those three or four > seconds. I have disabled org-notify for now. How many lines do you have in your org-files? (I've about 200 and execution time is about 100ms.) I call now "(org-element-parse-buffer 'heading)", I hope it's faster for you. Is it faster, when the file is byte-compiled? Other ideas: - I could divide orgntf-process into several tasks, so that things run more smoothly. - You could call (org-notify-start -60), so the process will be called, when idle for one minute. The file has a new home: https://github.com/p-m/org-notify There is now `orgntf-verbose' to see execution time of `orgntf-todo-list'. Thanks for testing! -- Peter
Re: [O] notifications for todo items
=?utf-8?Q?Peter_M=C3=BCnster?= wrote: > On Thu, Feb 23 2012, Nick Dokos wrote: > > > what does this do that appt.el (and its org interface) does not? > > Sorry, I've totally forgotten to write about my motivation, to create > such an org-notify module. > > Here a summary: > - different warning periods for different todo-types > - fine grained warning periods (smallest unit is second) > - continue notifications, when deadline is overdue > - easy modification of timestamps (just one click, to say > "let's do it tomorrow") > - switch from "todo" to "done" by clicking on the notification window > - configurable notification types (email, notifications-notify, beep, > etc.) > - configurable notification period > - configurable notification duration > - crescendo notifications (be more aggressive, when time gets closer to > deadline) > > There was a little thread about this subject: > http://thread.gmane.org/gmane.emacs.orgmode/48832 > > > Example usage: > (org-notify-add 'appt > '(:time "-1s" :period "20s" :duration 10 > :actions (org-notify-action-message > org-notify-action-ding)) > '(:time "15m" :period "2m" :duration 100 > :actions org-notify-action-notify) > '(:time "2h" :period "5m" > :actions org-notify-action-message) > '(:time "1d" :actions org-notify-action-email)) > > This means for todo-items with `notify' property set to `appt': 1 day before > deadline, send a reminder-email, 2 hours before deadline, start to send > messages every 5 minutes, then, 15 minutes before deadline, start to pop up > notification windows every 2 minutes. The timeout of the window is set to > 100 seconds. Finally, when deadline is overdue, send messages and make > noise. > A quick first impression: orgntf-process seems expensive. It seems to take 100% of one core (I've got a quad-core processor) for three or four seconds every fifty seconds. Unfortunately, the core is the same one that's running emacs, so emacs stops responding for those three or four seconds. I have disabled org-notify for now. Nick
Re: [O] notifications for todo items
Peter Münster wrote: > On Thu, Feb 23 2012, Nick Dokos wrote: > > > what does this do that appt.el (and its org interface) does not? > > Sorry, I've totally forgotten to write about my motivation, to create > such an org-notify module. > > Here a summary: > - different warning periods for different todo-types > - fine grained warning periods (smallest unit is second) > - continue notifications, when deadline is overdue > - easy modification of timestamps (just one click, to say > "let's do it tomorrow") > - switch from "todo" to "done" by clicking on the notification window > - configurable notification types (email, notifications-notify, beep, > etc.) > - configurable notification period > - configurable notification duration > - crescendo notifications (be more aggressive, when time gets closer to > deadline) > > There was a little thread about this subject: > http://thread.gmane.org/gmane.emacs.orgmode/48832 > > > Example usage: > (org-notify-add 'appt > '(:time "-1s" :period "20s" :duration 10 > :actions (org-notify-action-message > org-notify-action-ding)) > '(:time "15m" :period "2m" :duration 100 > :actions org-notify-action-notify) > '(:time "2h" :period "5m" > :actions org-notify-action-message) > '(:time "1d" :actions org-notify-action-email)) > > This means for todo-items with `notify' property set to `appt': 1 day before > deadline, send a reminder-email, 2 hours before deadline, start to send > messages every 5 minutes, then, 15 minutes before deadline, start to pop up > notification windows every 2 minutes. The timeout of the window is set to > 100 seconds. Finally, when deadline is overdue, send messages and make > noise. > Thanks! That's very helpful. I'll take a look in my copious (cough!) spare time. Nick
Re: [O] notifications for todo items
On Thu, Feb 23 2012, Nick Dokos wrote: > what does this do that appt.el (and its org interface) does not? Sorry, I've totally forgotten to write about my motivation, to create such an org-notify module. Here a summary: - different warning periods for different todo-types - fine grained warning periods (smallest unit is second) - continue notifications, when deadline is overdue - easy modification of timestamps (just one click, to say "let's do it tomorrow") - switch from "todo" to "done" by clicking on the notification window - configurable notification types (email, notifications-notify, beep, etc.) - configurable notification period - configurable notification duration - crescendo notifications (be more aggressive, when time gets closer to deadline) There was a little thread about this subject: http://thread.gmane.org/gmane.emacs.orgmode/48832 Example usage: (org-notify-add 'appt '(:time "-1s" :period "20s" :duration 10 :actions (org-notify-action-message org-notify-action-ding)) '(:time "15m" :period "2m" :duration 100 :actions org-notify-action-notify) '(:time "2h" :period "5m" :actions org-notify-action-message) '(:time "1d" :actions org-notify-action-email)) This means for todo-items with `notify' property set to `appt': 1 day before deadline, send a reminder-email, 2 hours before deadline, start to send messages every 5 minutes, then, 15 minutes before deadline, start to pop up notification windows every 2 minutes. The timeout of the window is set to 100 seconds. Finally, when deadline is overdue, send messages and make noise. -- Peter
Re: [O] notifications for todo items
Peter Münster wrote: > Hi, > > I've written a module, that allows flexible notifications for todo items > with deadline: http://pmrb.free.fr/work/OS/org-notify.el > > Feedback is welcome! > I've only taken a quick glance, but the question that immediately came to my mind was: what does this do that appt.el (and its org interface) does not? Note that I don't know the answer: I just have the question :-) BTW, there are some FAQs that address such appointment things (check the "Appointments/Diary" section of the FAQ). Maybe you can take a look and then come back and tell us how your package stacks up. Thanks, Nick