* Build agenda asynchronously @ 2021-08-16 22:52 dalanicolai 2021-08-16 23:59 ` Tim Cross 2021-08-18 15:28 ` Ihor Radchenko 0 siblings, 2 replies; 9+ messages in thread From: dalanicolai @ 2021-08-16 22:52 UTC (permalink / raw) To: emacs-orgmode [-- Attachment #1: Type: text/plain, Size: 435 bytes --] There was a question on Stack-Exchange if it would be possible to build *org-agenda* asynchronously. I could not quickly find any good answers neither in the mailing lists nor anywhere else. As I assume this will be a quite helpful feature for some more users, I am notifying you about it here. The question with its answer can be found at https://emacs.stackexchange.com/questions/68123/async-org-agenda/68136#68136 Cheers, Daniel [-- Attachment #2: Type: text/html, Size: 649 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Build agenda asynchronously 2021-08-16 22:52 Build agenda asynchronously dalanicolai @ 2021-08-16 23:59 ` Tim Cross 2021-08-17 6:52 ` Dr. Arne Babenhauserheide 2021-08-18 15:28 ` Ihor Radchenko 1 sibling, 1 reply; 9+ messages in thread From: Tim Cross @ 2021-08-16 23:59 UTC (permalink / raw) To: emacs-orgmode Emacs' support for asynchronous operations is at best primitive. There is built-in support for calling processes asynchonously and there is some other development work to set the stage for adding threads, but I think general asynchronous processing inside Emacs is a long way off. A lot of how Emacs lisp works fundamentally lacks the low level control structures necessary to make data structures and operations on those structures thread safe. This means you have to work at a very low level in order to ensure code is thread safe and that simply isn't practical. Even defining the basic model for an asynchronous emacs lisp is non-trivial and once you have the model, you ahve to implement it. At this time, this is a non-starter. It would be a mistake to expect asynchronous processing within Emacs lisp any time soon. Best we can hope for now is asynchronous execution of external processes and even that falls apart as soon as user input needs to be factored in. dalanicolai <dalanicolai@gmail.com> writes: > There was a question on Stack-Exchange if it would be possible to build *org-agenda* asynchronously. I could not quickly find > any good answers neither in the mailing lists nor anywhere else. > > As I assume this will be a quite helpful feature for some more users, I am notifying you about it here. > > The question with its answer can be found at > https://emacs.stackexchange.com/questions/68123/async-org-agenda/68136#68136 > > Cheers, > Daniel ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Build agenda asynchronously 2021-08-16 23:59 ` Tim Cross @ 2021-08-17 6:52 ` Dr. Arne Babenhauserheide 2021-08-17 7:28 ` Tim Cross 2021-08-18 5:41 ` Henrik Frisk 0 siblings, 2 replies; 9+ messages in thread From: Dr. Arne Babenhauserheide @ 2021-08-17 6:52 UTC (permalink / raw) To: Tim Cross; +Cc: emacs-orgmode [-- Attachment #1: Type: text/plain, Size: 950 bytes --] Tim Cross <theophilusx@gmail.com> writes: > Emacs' support for asynchronous operations is at best primitive. There > is built-in support for calling processes asynchonously and > there is some other development work to set the stage for adding threads, > but I think general asynchronous processing inside Emacs is a long way > off. A lot of how Emacs lisp works fundamentally lacks the low level > control structures necessary to make data structures and operations on > those structures thread safe. This means you have to work at a very low > level in order to ensure code is thread safe and that simply isn't > practical. Even defining the basic model for an asynchronous emacs lisp > is non-trivial and once you have the model, you ahve to implement it. Maybe it could be possible to fire up a second Emacs and retrieve the agenda-buffer? Best wishes, Arne -- Unpolitisch sein heißt politisch sein ohne es zu merken [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 1125 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Build agenda asynchronously 2021-08-17 6:52 ` Dr. Arne Babenhauserheide @ 2021-08-17 7:28 ` Tim Cross 2021-08-17 18:10 ` Milan Zamazal 2021-08-18 5:41 ` Henrik Frisk 1 sibling, 1 reply; 9+ messages in thread From: Tim Cross @ 2021-08-17 7:28 UTC (permalink / raw) To: Dr. Arne Babenhauserheide; +Cc: emacs-orgmode "Dr. Arne Babenhauserheide" <arne_bab@web.de> writes: > [[PGP Signed Part:Undecided]] > > Tim Cross <theophilusx@gmail.com> writes: > >> Emacs' support for asynchronous operations is at best primitive. There >> is built-in support for calling processes asynchonously and >> there is some other development work to set the stage for adding threads, >> but I think general asynchronous processing inside Emacs is a long way >> off. A lot of how Emacs lisp works fundamentally lacks the low level >> control structures necessary to make data structures and operations on >> those structures thread safe. This means you have to work at a very low >> level in order to ensure code is thread safe and that simply isn't >> practical. Even defining the basic model for an asynchronous emacs lisp >> is non-trivial and once you have the model, you ahve to implement it. > > Maybe it could be possible to fire up a second Emacs and retrieve the > agenda-buffer? > Yes, I've seen people who have done things like that. They have their 'main' emacs instance running where they 'do stuff' and another instance running where they read mail, check their agenda/calendar or run other things which tend to 'block'. There are some issues with this approach though. Some of which are not obvious. - Emacs can consume a fair amount of memory. Running multiple instances can use a fair amount of memory. - Startup times make it less appealing as a 'run it up when you need it' solution. - You need to have an understanding of the interaction with various cache and other disk files Emacs uses to ensure each instance doesn't tread on the toes of the other. - A 'strategy' with regards to reverting buffers to file contents. Consider adding a todo in your agenda while at the same time, working on a related org file in the other instance. Provided you know the rules, can operate in an understood disciplined manner and have a system with sufficient resources, it certainly can be a viable approach. Personally, I took a different route. I keep the number of files which contribute to my agenda to a minimum and have an easy way to update/change that list. I can quickly switch agenda contexts depending on what I'm doing. For example, when I'm at work, I'm not interested in any of my 'home' tasks, events, etc. As a result, generation of various agenda views is fast and I don't need to wait. I do have an 'everything' context, so when I do need that, I can get a complete overview. It does take longer to generate and will block, but I rarely need it. My calendar.org file, which contains all my meetings is shared across all views so that I avoid 'double booking'. I do tend to put all meetings in Google calendar because it makes it easy to share them with other devices (tablet, phone, laptop, other people), but I use my icsorg script to import that into my calendar.org file. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Build agenda asynchronously 2021-08-17 7:28 ` Tim Cross @ 2021-08-17 18:10 ` Milan Zamazal 2021-08-18 0:13 ` Tim Cross 0 siblings, 1 reply; 9+ messages in thread From: Milan Zamazal @ 2021-08-17 18:10 UTC (permalink / raw) To: emacs-orgmode >>>>> "TC" == Tim Cross <theophilusx@gmail.com> writes: TC> Personally, I took a different route. I keep the number of files TC> which contribute to my agenda to a minimum and have an easy way TC> to update/change that list. I can quickly switch agenda contexts TC> depending on what I'm doing. It’s always advisable to restrict agenda sources to what’s actually relevant. But besides that, all my problems with agenda slowness were resolved once I started to use org-super-agenda (https://github.com/alphapapa/org-super-agenda). It’s both more powerful and much faster than the standard Org agenda. Regards, Milan ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Build agenda asynchronously 2021-08-17 18:10 ` Milan Zamazal @ 2021-08-18 0:13 ` Tim Cross 2021-08-18 5:47 ` Henrik Frisk 0 siblings, 1 reply; 9+ messages in thread From: Tim Cross @ 2021-08-18 0:13 UTC (permalink / raw) To: emacs-orgmode Milan Zamazal <pdm@zamazal.org> writes: >>>>>> "TC" == Tim Cross <theophilusx@gmail.com> writes: > > TC> Personally, I took a different route. I keep the number of files > TC> which contribute to my agenda to a minimum and have an easy way > TC> to update/change that list. I can quickly switch agenda contexts > TC> depending on what I'm doing. > > It’s always advisable to restrict agenda sources to what’s actually > relevant. But besides that, all my problems with agenda slowness were > resolved once I started to use org-super-agenda > (https://github.com/alphapapa/org-super-agenda). It’s both more > powerful and much faster than the standard Org agenda. > Actually, that one has been on my todo list to cehck out for a while. Might be time to bump the priority a bit! ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Build agenda asynchronously 2021-08-18 0:13 ` Tim Cross @ 2021-08-18 5:47 ` Henrik Frisk 0 siblings, 0 replies; 9+ messages in thread From: Henrik Frisk @ 2021-08-18 5:47 UTC (permalink / raw) To: Tim Cross; +Cc: org-mode-email [-- Attachment #1: Type: text/plain, Size: 295 bytes --] Den ons 18 aug. 2021 kl 02:17 skrev Tim Cross <theophilusx@gmail.com>: > > Milan Zamazal <pdm@zamazal.org> writes: > > Actually, that one has been on my todo list to cehck out for a while. > Might be time to bump the priority a bit! > > I just started using it and it works really well so far! [-- Attachment #2: Type: text/html, Size: 704 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Build agenda asynchronously 2021-08-17 6:52 ` Dr. Arne Babenhauserheide 2021-08-17 7:28 ` Tim Cross @ 2021-08-18 5:41 ` Henrik Frisk 1 sibling, 0 replies; 9+ messages in thread From: Henrik Frisk @ 2021-08-18 5:41 UTC (permalink / raw) To: Dr. Arne Babenhauserheide; +Cc: Tim Cross, org-mode-email [-- Attachment #1: Type: text/plain, Size: 1128 bytes --] Den tis 17 aug. 2021 kl 08:54 skrev Dr. Arne Babenhauserheide < arne_bab@web.de>: > > Tim Cross <theophilusx@gmail.com> writes: > > > Emacs' support for asynchronous operations is at best primitive. There > > is built-in support for calling processes asynchonously and > > there is some other development work to set the stage for adding threads, > > but I think general asynchronous processing inside Emacs is a long way > > off. A lot of how Emacs lisp works fundamentally lacks the low level > > control structures necessary to make data structures and operations on > > those structures thread safe. This means you have to work at a very low > > level in order to ensure code is thread safe and that simply isn't > > practical. Even defining the basic model for an asynchronous emacs lisp > > is non-trivial and once you have the model, you ahve to implement it. > > Maybe it could be possible to fire up a second Emacs and retrieve the > agenda-buffer? > > This is what I do for commands like exporting the agenda which can take a while with the -nw flag, but that is of course unsatisfactory for most use cases. /Henrik [-- Attachment #2: Type: text/html, Size: 1573 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Build agenda asynchronously 2021-08-16 22:52 Build agenda asynchronously dalanicolai 2021-08-16 23:59 ` Tim Cross @ 2021-08-18 15:28 ` Ihor Radchenko 1 sibling, 0 replies; 9+ messages in thread From: Ihor Radchenko @ 2021-08-18 15:28 UTC (permalink / raw) To: dalanicolai; +Cc: emacs-orgmode dalanicolai <dalanicolai@gmail.com> writes: > There was a question on Stack-Exchange if it would be possible to build > *org-agenda* asynchronously. I could not quickly find any good answers > neither in the mailing lists nor anywhere else. There was a proof-of-concept code building agenda using Emacs threads: https://orgmode.org/list/87k172ot2m.fsf@yantar92-laptop.i-did-not-set--mail-host-address--so-tickle-me/ However, if your agenda is blocking Emacs it will only get worse over time. Async will not be good enough eventually. I recommend using org-ql. It should be enough unless your agenda it taking really a lot of time to build (10s of seconds). Best, Ihor ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2021-08-18 15:28 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-08-16 22:52 Build agenda asynchronously dalanicolai 2021-08-16 23:59 ` Tim Cross 2021-08-17 6:52 ` Dr. Arne Babenhauserheide 2021-08-17 7:28 ` Tim Cross 2021-08-17 18:10 ` Milan Zamazal 2021-08-18 0:13 ` Tim Cross 2021-08-18 5:47 ` Henrik Frisk 2021-08-18 5:41 ` Henrik Frisk 2021-08-18 15:28 ` Ihor Radchenko
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).