From: Richard Lawrence <rwl@recursewithless.net>
To: Adam Porter <adam@alphapapa.net>
Cc: emacs-devel@gnu.org
Subject: Re: Improving Emacs' iCalendar support
Date: Sat, 19 Oct 2024 10:39:59 +0200 [thread overview]
Message-ID: <87r08cqye8.fsf@ohm.mail-host-address-is-not-set> (raw)
In-Reply-To: <0bacd69a-7941-44d2-ac5e-3ae3f256481a@alphapapa.net>
Hi Adam,
Adam Porter <adam@alphapapa.net> writes:
> I don't have much to add to what's been said, but my first thought is
> that a robust iCal library would probably be most useful for importing
> and exporting between the iCal format, obviously. So I'd suggest that
> its API should help with transforming iCal data into other formats,
> probably by converting it into a simple Lisp data structure that other
> libraries could work with. And then, it should also provide a function
> to transform that data structure back into an iCal file.
>
> Also, it would be good if it were designed to be extensible in case the
> standards receive updates, or in case vendor-specific functionality is
> needed by users.
Yep, that's exactly the plan! Thanks for confirming that this is a good
idea.
> So I'd suggest looking at the existing Emacs/Org applications that use
> iCal, and designing your API so that such applications would find it
> easy to use (not that it should directly imitate what already exists,
> unless such APIs are already ideal).
Yes, I was hoping especially to hear from Org/Gnus/diary developers if
they have any thoughts about what would make such a library easy (or
-ier) for them to use. Perhaps I should ask on their respective
lists...does Gnus have a separate mailing list? I will also grep through
the code to see if anything else in Emacs is using the icalendar--*
internal functions.
> Finally, I'd suggest that you consider using structs as the primary
> internal data structure, because they provide setter and accessor
> functions, which are helpful to developers (e.g. they help catch some
> mistakes at compilation time). If you do, I've found it helpful to
> define an "etc" slot in various structs to which an alist or plist can
> be attached, which provides the ability for the structs to carry
> additional data that wasn't foreseen during its design.
Thanks, that's useful advice. I've been toying with the idea of using
EIEIO classes to represent at least the "component"-level data
structures (events, to-dos, journals, timezones, whole calendars), which
if I understand correctly use structs under the hood. But I don't really
have any experience with EIEIO and I'm not sure if the added complexity
of the object system will buy much over using plain structs. Do you have
any thoughts about this?
Best,
Richard
next prev parent reply other threads:[~2024-10-19 8:39 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-18 9:01 Improving Emacs' iCalendar support Richard Lawrence
2024-10-18 9:24 ` Eli Zaretskii
2024-10-19 8:22 ` Richard Lawrence
2024-10-19 10:11 ` Eli Zaretskii
2024-10-20 5:08 ` Richard Lawrence
2024-10-20 5:21 ` Eli Zaretskii
2024-10-18 12:58 ` Sebastián Monía
2024-10-19 8:28 ` Richard Lawrence
2024-10-19 5:44 ` Adam Porter
2024-10-19 8:39 ` Richard Lawrence [this message]
2024-10-20 3:09 ` Adam Porter
2024-10-22 18:40 ` Ihor Radchenko
2024-10-23 7:29 ` Björn Bidar
2024-10-23 9:01 ` Richard Lawrence
2024-10-23 20:24 ` Ferdinand Pieper
2024-10-24 14:52 ` Richard Lawrence
2024-10-24 17:45 ` Ihor Radchenko
2024-10-25 12:53 ` Richard Lawrence
2024-10-25 18:59 ` Ihor Radchenko
[not found] ` <87plnr6zvk.fsf@>
2024-10-23 8:09 ` Ihor Radchenko
2024-10-23 9:05 ` Richard Lawrence
2024-10-23 10:03 ` Björn Bidar
2024-10-21 6:10 ` Björn Bidar
2024-10-21 6:22 ` Visuwesh
2024-10-23 9:15 ` Richard Lawrence
2024-10-23 9:45 ` Visuwesh
[not found] ` <87wmi29eaf.fsf@>
2024-10-26 17:49 ` Ihor Radchenko
2024-10-28 10:44 ` Björn Bidar
[not found] ` <87r080tslf.fsf@>
2024-10-28 19:09 ` Ihor Radchenko
Reply instructions:
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:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87r08cqye8.fsf@ohm.mail-host-address-is-not-set \
--to=rwl@recursewithless.net \
--cc=adam@alphapapa.net \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* 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
https://git.savannah.gnu.org/cgit/emacs.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).