From: Tim Cross <firstname.lastname@example.org>
To: "Dr. Arne Babenhauserheide" <email@example.com>
Subject: Re: Build agenda asynchronously
Date: Tue, 17 Aug 2021 17:28:37 +1000 [thread overview]
Message-ID: <firstname.lastname@example.org> (raw)
"Dr. Arne Babenhauserheide" <email@example.com> writes:
> [[PGP Signed Part:Undecided]]
> Tim Cross <firstname.lastname@example.org> 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
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
- 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'
- 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.
next prev parent reply other threads:[~2021-08-17 7:50 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
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 [this message]
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
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
List information: https://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
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).