all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Tim Landscheidt <tim@tim-landscheidt.de>
To: help-gnu-emacs@gnu.org
Subject: Re: Non file buffers and default-directory
Date: Thu, 27 Apr 2023 12:04:48 +0000	[thread overview]
Message-ID: <87354lwmxr.fsf@vagabond.tim-landscheidt.de> (raw)
In-Reply-To: <83sfclshk0.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 27 Apr 2023 14:14:39 +0300")

Eli Zaretskii <eliz@gnu.org> wrote:

>> Thanks for your support.  I'm reading some code now and I start to
>> realize that *just* having an async SMTP sender in Emacs won't be that
>> easy.

>> An example: I'm using Gnus (and message.el) to send mail.  If you look
>> at 'message-send' (lisp/gnus/message.el#4396), that I guess is calling
>> 'smtpmail-send-it' down the line, you'll see that it is "waiting" for a
>> synchronous 'success' to decide what to do next (for example, renaming
>> the buffer from *unsent...* to *sent...*).  This won't work as is with
>> an async SMTP sender.  I imagine that there are other places with code
>> like that and that it could break many workflow.

> I know it is not easy, right?  Basically, the function(s) that
> actually send the email will have to be broken into two: one that
> prepares the message, the other which actually sends it.  It's the
> latter that needs to run from a separate thread.  in addition, there
> should be some callback that marks the message as sent, and does
> whatever else bookkeeping is needed when the send succeeds or fails,
> like, for example, if this is a response, marking the original message
> as one that was replied-to.

Side note: I would love a well-maintained example of an
"asynchronous" user interface in Emacs.

I have a bunch of shell/Perl/Python scripts that I'd like to
convert to Emacs Lisp for a consistent UI that can also be
used over SSH.

For example, I have a script that plays a podcast's audio
file and afterwards asks me if the associated database entry
selected from a list of suggestions should be marked as
heard (and the file archived).  I also use this as part of
sequences, i. e. "$script file1.mp3 && $script file2.mp3".

Now in Emacs, I obviously would want to continue to work on
something else while the audio is playing in the background.
I also don't want that other work to be interrupted in the
sense of a blocking minibuffer prompt when the playback has
finished.  And I also don't want to accidentally quit Emacs
without me being reminded, "hey, that playback has finished,
should it be marked as heard?"  And I want that "bit" to be
usable as part of a sequence, i. e. after answering the
question, the next statement should be executed.

Probably, one can achieve something like this with promises
(e. g., https://github.com/chuntaro/emacs-promise), but as
they are not part of core Emacs and also rather complex, I
don't feel very comfortable to base my workflows on that.

Tim



  reply	other threads:[~2023-04-27 12:04 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-18 18:29 Non file buffers and default-directory Manuel Giraud via Users list for the GNU Emacs text editor
2023-04-18 19:12 ` Emanuel Berg
2023-04-19  7:02 ` Michael Albinus
2023-04-19  8:14   ` Manuel Giraud via Users list for the GNU Emacs text editor
2023-04-19 10:48     ` Emanuel Berg
2023-04-19 12:32       ` Manuel Giraud via Users list for the GNU Emacs text editor
2023-04-19 12:48         ` Manuel Giraud via Users list for the GNU Emacs text editor
2023-04-19 15:17     ` Michael Albinus
2023-04-20 15:11       ` Manuel Giraud via Users list for the GNU Emacs text editor
2023-04-20 17:12         ` Emanuel Berg
2023-04-21  6:31           ` Manuel Giraud via Users list for the GNU Emacs text editor
2023-04-23 14:33             ` Emanuel Berg
2023-04-24  7:57               ` Michael Albinus
2023-04-25 12:06                 ` Emanuel Berg
2023-04-21  6:39         ` Marcin Borkowski
2023-04-21  7:16           ` Manuel Giraud via Users list for the GNU Emacs text editor
2023-04-21  8:01           ` Michael Albinus
2023-04-21  9:03             ` Marcin Borkowski
2023-04-21 10:29             ` Manuel Giraud via Users list for the GNU Emacs text editor
2023-04-22  7:08               ` Michael Albinus
2023-04-22 13:56                 ` Manuel Giraud via Users list for the GNU Emacs text editor
2023-04-22 16:36                   ` Eli Zaretskii
2023-04-22 17:33                     ` Manuel Giraud
2023-04-23  7:22                       ` Michael Albinus
2023-04-23  7:46                         ` Eli Zaretskii
2023-04-23 11:24                           ` Manuel Giraud
2023-04-23 12:57                             ` Eli Zaretskii
2023-04-23 11:46                           ` Manuel Giraud via Users list for the GNU Emacs text editor
2023-04-23 13:01                             ` Eli Zaretskii
2023-04-23 14:48                               ` Thread for smtpmail-send-it (was: Non file buffers and default-directory) Manuel Giraud via Users list for the GNU Emacs text editor
2023-04-23 15:56                                 ` Eli Zaretskii
2023-04-25 17:00                               ` Non file buffers and default-directory Manuel Giraud via Users list for the GNU Emacs text editor
2023-04-25 17:27                                 ` Eli Zaretskii
2023-04-25 17:54                                   ` Emanuel Berg
2023-04-27  6:05                                     ` Eli Zaretskii
2023-04-27 19:46                                       ` Emanuel Berg
2023-04-28 11:34                                         ` Eli Zaretskii
2023-05-01  2:10                                           ` Emanuel Berg
2023-05-01 11:20                                             ` tomas
2023-05-01 22:15                                               ` Emanuel Berg
2023-05-04 17:49                                                 ` tomas
2023-05-04 23:26                                                   ` Emanuel Berg
2023-05-01 11:55                                             ` Eli Zaretskii
2023-04-27 10:58                                   ` Manuel Giraud via Users list for the GNU Emacs text editor
2023-04-27 11:14                                     ` Eli Zaretskii
2023-04-27 12:04                                       ` Tim Landscheidt [this message]
2023-04-27 12:30                                         ` Eli Zaretskii
2023-04-28  1:08                                           ` Tim Landscheidt
2023-04-27 18:53                                         ` Tomas Hlavaty
2023-04-28  2:03                                           ` Tim Landscheidt
2023-04-27 15:29                                       ` Manuel Giraud via Users list for the GNU Emacs text editor
2023-04-27 18:52                                     ` Tomas Hlavaty
2023-04-22 17:34                     ` Manuel Giraud via Users list for the GNU Emacs text editor
2023-04-22 17:31                   ` Michael Albinus
2023-04-21 12:54           ` Manuel Giraud via Users list for the GNU Emacs text editor
2023-04-26 17:17         ` Michael Albinus
2023-04-27  9:25           ` Manuel Giraud via Users list for the GNU Emacs text editor
2023-04-19 10:39   ` Emanuel Berg

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=87354lwmxr.fsf@vagabond.tim-landscheidt.de \
    --to=tim@tim-landscheidt.de \
    --cc=help-gnu-emacs@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.