unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Adam Porter <adam@alphapapa.net>
To: rwl@recursewithless.net
Cc: emacs-devel@gnu.org
Subject: Re: Improving Emacs' iCalendar support
Date: Sat, 19 Oct 2024 00:44:49 -0500	[thread overview]
Message-ID: <0bacd69a-7941-44d2-ac5e-3ae3f256481a@alphapapa.net> (raw)
In-Reply-To: <87ed4dss2x.fsf@ohm.mail-host-address-is-not-set>

Hi Richard,

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.

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).

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.

--Adam



  parent reply	other threads:[~2024-10-19  5:44 UTC|newest]

Thread overview: 13+ 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 [this message]
2024-10-19  8:39   ` Richard Lawrence
2024-10-20  3:09     ` Adam Porter
2024-10-21  6:10 ` Björn Bidar
2024-10-21  6:22 ` Visuwesh

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=0bacd69a-7941-44d2-ac5e-3ae3f256481a@alphapapa.net \
    --to=adam@alphapapa.net \
    --cc=emacs-devel@gnu.org \
    --cc=rwl@recursewithless.net \
    /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).