unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Spencer Baugh <sbaugh@janestreet.com>
Cc: emacs-devel@gnu.org
Subject: Re: unwind-protect within while-no-input
Date: Wed, 08 May 2024 18:06:00 +0300	[thread overview]
Message-ID: <861q6c9wdj.fsf@gnu.org> (raw)
In-Reply-To: <ierle4kqsh8.fsf@janestreet.com> (message from Spencer Baugh on Wed, 08 May 2024 10:38:11 -0400)

> From: Spencer Baugh <sbaugh@janestreet.com>
> Date: Wed, 08 May 2024 10:38:11 -0400
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> >> Your code does not run the unwind forms when run inside a
> >> while-no-input.
> >
> > Why should it?  When while-no-input is interrupted by input, it
> > conceptually is not "quitting"; the fact that it uses quit-flag is an
> > internal implementation detail.
> 
> Because there might be something I want to clean up.
> 
> For example, my code might create a process or temporary directory which
> should be deleted even if interrupted by input.
> 
> > If you want the unwind forms to run when while-no-input is interrupted
> > by input, simply do it: while-no-input provides a clear documented
> > indication that it was interrupted by input, and you can use that to
> > decide whether to run the unwind forms in that case.
> 
> What concretely are you suggesting?  Could you give an example in code?

I cannot give a concrete example, because even now you describe more
and more details of your code that you haven't disclosed previously.
So any code I will show will most probably not work for you because of
those undisclosed details.

I can only say what I mean generally: the unwind forms are just code,
so when you detect that while-no-input was interrupted by some input,
simply call those unwind forms "by hand".  What exactly that means and
how exactly to do that is something the depends on those details and
on what exactly your unwind forms need to do.

> Note that my code doesn't require while-no-input or always run inside
> while-no-input - it's just that whenever my code happens to be inside a
> while-no-input, my code should still do the cleanup.

As I said, while-no-input provides an indication whether it was
interrupted, so you can easily do whatever you need to do in that
case.



  reply	other threads:[~2024-05-08 15:06 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-03 12:45 unwind-protect within while-no-input Spencer Baugh
2024-05-07 18:05 ` Spencer Baugh
2024-05-07 18:49   ` Eli Zaretskii
2024-05-07 19:43     ` Spencer Baugh
2024-05-08  3:59       ` Po Lu
2024-05-08 11:42         ` Michael Heerdegen via Emacs development discussions.
2024-05-08 11:47           ` Michael Heerdegen via Emacs development discussions.
2024-05-08 13:44             ` Spencer Baugh
2024-05-08 16:13               ` Michael Heerdegen via Emacs development discussions.
2024-05-08 17:18                 ` Spencer Baugh
2024-05-08 20:43                   ` Michael Heerdegen via Emacs development discussions.
2024-05-09 12:57                     ` Spencer Baugh
2024-05-09 14:13                       ` Michael Heerdegen via Emacs development discussions.
2024-05-08 12:12           ` Eli Zaretskii
2024-05-08 12:36             ` Michael Heerdegen via Emacs development discussions.
2024-05-08 11:52       ` Eli Zaretskii
2024-05-08 13:57         ` Spencer Baugh
2024-05-08 14:18           ` Eli Zaretskii
2024-05-08 14:38             ` Spencer Baugh
2024-05-08 15:06               ` Eli Zaretskii [this message]
2024-05-08 15:14                 ` Spencer Baugh
2024-05-08 18:51                   ` Eli Zaretskii
2024-05-08 19:28                     ` Spencer Baugh
2024-05-09  5:46                       ` Eli Zaretskii
2024-05-09 13:07                         ` Spencer Baugh
2024-05-09 17:41                           ` Dmitry Gutov
2024-05-11  9:48                           ` Eli Zaretskii
2024-05-11 10:37                             ` Eshel Yaron
2024-05-11 10:42                           ` Zhengyi Fu
2024-05-11 21:45                             ` Dmitry Gutov
2024-05-11 22:08                               ` Daniel Mendler via Emacs development discussions.
2024-05-12  1:59                                 ` Dmitry Gutov
2024-05-12  8:50                                   ` Daniel Mendler via Emacs development discussions.
2024-05-12 11:49                                     ` Dmitry Gutov
2024-05-14 21:30                           ` Dmitry Gutov
2024-05-26  2:49                             ` Stefan Monnier via Emacs development discussions.
2024-05-26 15:36                               ` Dmitry Gutov
2024-05-26 18:00                                 ` Stefan Monnier
2024-05-26 22:56                                   ` Dmitry Gutov
2024-05-29  0:39                                     ` Stefan Monnier
2024-05-29  1:17                                       ` Dmitry Gutov
2024-05-08 20:34                     ` Michael Heerdegen via Emacs development discussions.
2024-05-08 16:17               ` Michael Heerdegen via Emacs development discussions.
2024-05-26  2:47   ` Stefan Monnier via Emacs development discussions.
2024-05-26  4:36     ` Stefan Monnier
2024-05-26  4:55     ` Eli Zaretskii
2024-05-26 18:12       ` Stefan Monnier

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=861q6c9wdj.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=sbaugh@janestreet.com \
    /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).