all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Thomas Fitzsimmons <fitzsim@fitzsim.org>
To: Alexander Adolf <alexander.adolf@condition-alpha.com>
Cc: emacs-devel@gnu.org
Subject: Re: [Proposal] New EUDC backend for macOS address book
Date: Mon, 27 Apr 2020 12:10:01 -0400	[thread overview]
Message-ID: <m35zdk7vvq.fsf@fitzsim.org> (raw)
In-Reply-To: <f1bd89cf6c17dc777f5596c0e2e69172@condition-alpha.com> (Alexander Adolf's message of "Mon, 27 Apr 2020 17:09:07 +0200")

Hi Alexander,

Alexander Adolf <alexander.adolf@condition-alpha.com> writes:

> Dear Emacs Developers,
>
> I am in the process of migrating my email workflow to `notmuch-mode'
> within Emacs. While `notmuch-mode' provides a completion backend for
> `company-mode' to get auto-completion for email addresses from your
> notmuch email archive, I was looking for a way to give me
> auto-completion for email addresses from my macOS address book, too.
>
> My research lead me to EUDC [1], and its `eudcb-mab.el', but which
> didn't work out of the box for me. Looking at the code, it turns out
> that `eudcb-mab.el' accesses the SQLite file used by macOS address book
> to store a local copy of the contacts, and reverse-engineers its
> contents. This is however not documented by Apple as an "official" way
> of accessing that data, and in fact Apple had recently changed the file
> name of the SQLite. This broke `eudcb-mab.el' for me, as it was still
> looking for the old file name. Also, since it is an undocumented file,
> Apple may choose to not only change the file name, but also its inner
> structure at any point.

Thanks for working on this, and for the background information.

It sounds like the AppleScript-based approach is superior and the way
forward.  However, I'd still like to know more about how eudcb-mab.el
failed, so that we can discuss backward compatibility.  Was the
incorrect file path the only issue preventing eudcb-mab.el from working
for you?

> On the other hand, there is an Apple officially documented, and endorsed
> way of accessing the macOS address book contacts, and this is via
> AppleScript [2]. Being a published and documented API, it can probably
> be expected to remain stable, and invariant towards any redesigns of the
> macOS address book app that Apple may choose to undertake in the
> foreseeable future.

OK.

> I hence set out to write a new backend for EUDC to get access to macOS
> address book contacts via AppleScript. The result is
> `eudcb-macos-contacts.el', which is enclosed with this message, and
> which I would kindly like to propose for inclusion as part of EUDC (and
> replacing the existing `eudcb-mab.el').

Do you have a sense for how far back the AppleScript method will work?
i.e., would it work on all systems on which eudcb-mab.el currently
works?  Do you think we should maintain eudcb-mab and
eudcb-macos-contacts in parallel, at least for a few releases, and
recommend eudcb-macos-contacts to existing eudcb-mab users?

> Yes, I have duly signed the copyright assignment (rt.gnu.org #1503473).

Great!

> In my implementation, I found that - interestingly - there is an elisp
> function in Emacs core, cunningly called `do_applescript()', and which
> is intended to execute AppleScript on the macOS platform from within
> Emacs. Unfortunately, I did find some oddities with it (see debbugs
> #39890 [3]), but couldn't discern whether the cause was in
> `do_applescript()' itself (so a fix could have been proposed), or in the
> Apple library code it builds upon. I hence decided to instead use
> `call-process()' to invoke the osascript [4] command line utility, which
> ships as part of every macOS. This does work reliably for me, and yields
> a more graceful overall behaviour of Emacs during large queries (again
> see debbugs #39890 [3]).
>
> [3] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=39890

Thanks for the detailed bug report.  I hope someone with access to a
system to test AppleScript and/or the required expertise will comment
there.

Thomas



  reply	other threads:[~2020-04-27 16:10 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-27 15:09 [Proposal] New EUDC backend for macOS address book Alexander Adolf
2020-04-27 16:10 ` Thomas Fitzsimmons [this message]
2020-04-27 16:41   ` Jean-Christophe Helary
2020-05-02 16:20     ` Thomas Fitzsimmons
2020-05-06 15:14       ` Alexander Adolf
2020-05-06 17:41         ` Thomas Fitzsimmons
2020-05-07 16:03           ` Alexander Adolf
2020-05-07 18:29             ` Thomas Fitzsimmons
2020-05-08 12:17               ` Alexander Adolf
2020-05-08 13:44                 ` Thomas Fitzsimmons
2020-06-08 20:41                   ` Alexander Adolf
2020-06-10  5:03                     ` Thomas Fitzsimmons
2020-06-29 13:38                     ` Alexander Adolf
2020-07-09 15:12                     ` Alexander Adolf
2020-07-09 20:29                       ` Thomas Fitzsimmons
2020-07-10 13:36                         ` Alexander Adolf
2020-07-10  3:53                       ` Richard Stallman
2020-07-14 14:46                         ` Thomas Fitzsimmons
2020-07-15  3:49                           ` Jean-Christophe Helary
2020-07-17  0:56                             ` Richard Stallman
2020-08-09  1:57                           ` Richard Stallman
2020-09-06  3:00                             ` Thomas Fitzsimmons
2020-05-05 14:47   ` Alexander Adolf
2020-04-27 20:00 ` chad
2020-05-05 13:30   ` Alexander Adolf

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m35zdk7vvq.fsf@fitzsim.org \
    --to=fitzsim@fitzsim.org \
    --cc=alexander.adolf@condition-alpha.com \
    --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 external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.