[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

graceful shutdown of non-interactive Elisp program

From: Paul Pogonyshev
Subject: graceful shutdown of non-interactive Elisp program
Date: Sat, 13 Jun 2020 23:42:51 +0200


I'm trying to make a Elisp program that is run in a non-interactive mode, i.e. essentially as `emacs --batch --load myfile.el'. A normal way to shutdown terminal programs is with C-c, which is expected to be "graceful" shutdown, e.g. the program still has a chance to save files etc.

However, with Elisp I'm not sure how to achieve that except for constantly modifying `kill-emacs-hook', which would be a nightmare from coding perspective.

Naively I would expect this print "GOING DOWN" when aborted with C-c:

    $ emacs --batch --eval "(unwind-protect (while t) (message \"GOING DOWN\"))"

For example, Python's handler of SIGINT raises an exception within the program, which unwinds the stack as usual and, unless caught, cause program termination after cleaning up as expected (e.g. running all `finally' clauses and closing all `with' context managers). However, in Elisp, as I understand, there is no way to have a say in handling SIGINT other than adding a function to `kill-emacs-hook'.

Is that correct, or am I missing something here?


reply via email to

[Prev in Thread] Current Thread [Next in Thread]