Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Demande de confirmation à la fermeture d'emacs

13 réponses
Avatar
Denis Bitouzé
Bonjour,

il n'est pas rare que, alors que je m'appr=EAte =E0 saisir un C-x C-f
(entre autres), mon index gauche fourche et presse successivement les
touches =AB x =BB et =AB c =BB. Dans ce cas, plaf : tous mes beaux buffers
ouverts sont =E0 r=E9ouvrir !

Que puis-je ajouter dans mon .emacs de sorte qu'une confirmation soit
exig=E9e apr=E8s C-x C-f et avant la fermeture effective d'emacs ?

Tant qu'on y est, est-il possible de faire rouvrir automatiquement les
buffers de la session pr=E9c=E9dente ?

Merci d'avance.
--=20
Denis

10 réponses

1 2
Avatar
Jacques L'helgoualc'h
Le 25-04-2008, Denis Bitouzé a écrit :
Bonjour,



bonjour.

il n'est pas rare que, alors que je m'apprête à saisir un C-x C-f
(entre autres), mon index gauche fourche et presse successivement les
touches « x » et « c ». Dans ce cas, plaf : tous mes beaux buffers
ouverts sont à réouvrir !



:/

Que puis-je ajouter dans mon .emacs de sorte qu'une confirmation soit
exigée après C-x C-f et avant la fermeture effective d'emacs ?



J'ai ça dans mon ~/.emacs :

(defun adieu ()
(unless (y-or-n-p "Fermer cette instance d'Emacs ?")
(keyboard-quit)))

(add-hook 'kill-emacs-hook
'adieu)

mais je me sers surtout de gnuclient, pour lequel mon emacs en attente a
exécuté son server.el contenant (entre autres)

(when window-system
(when (fboundp 'gnuserv-start)
(gnuserv-start)
(defun adieu ()
(unless (y-or-n-p "Ça va pas, la tête... ?! ")
(keyboard-quit)))))

Si ce n'est pas assez dissuasif, ajoute la freesoftwaresong interprétée
par RMS ?

Tant qu'on y est, est-il possible de faire rouvrir automatiquement les
buffers de la session précédente ?



Oui, on peut le faire©.

Merci d'avance.



de rien...
--
Jacques L'helgoualc'h
Avatar
Damien Wyart
> Que puis-je ajouter dans mon .emacs de sorte qu'une confirmation
> soit exigée après C-x C-f et avant la fermeture effective d'emacs ?



* Jacques L'helgoualc'h <lhh+ in fr.comp.applications.emacs:

(defun adieu ()
(unless (y-or-n-p "Fermer cette instance d'Emacs ?")
(keyboard-quit)))

(add-hook 'kill-emacs-hook
'adieu)



En fait, la doc recommande plutôt d'utiliser kill-emacs-query-functions
et non kill-emacs-hook :

,----
| Since `kill-emacs' may be invoked when the terminal is disconnected
| (or in other similar situations), functions placed on this hook should
| not expect to be able to interact with the user. To ask for
| confirmation, see `kill-emacs-query-functions' instead.
`----

--
DW
Avatar
Denis Bitouzé
Le Fri, 25 Apr 2008 15:39:54 +0200 (CEST)
Jacques L'helgoualc'h <lhh+ a écrit :

J'ai ça dans mon ~/.emacs :

(defun adieu ()
(unless (y-or-n-p "Fermer cette instance d'Emacs ?")
(keyboard-quit)))

(add-hook 'kill-emacs-hook
'adieu)



OK. Je vais tester ça.

mais je me sers surtout de gnuclient,



Qu'est-ce à dire ?

pour lequel mon emacs en
attente a exécuté son server.el contenant (entre autres)

(when window-system
(when (fboundp 'gnuserv-start)
(gnuserv-start)
(defun adieu ()
(unless (y-or-n-p "Ça va pas, la tête... ?! ")
(keyboard-quit)))))

Si ce n'est pas assez dissuasif, ajoute la freesoftwaresong
interprétée par RMS ?



Sadique !

> Tant qu'on y est, est-il possible de faire rouvrir automatiquement
> les buffers de la session précédente ?

Oui, on peut le faire©.



Chouette ! Mais je m'aperçois que je me suis fait avoir comme un
bleu... La question suivante est donc : « Comment ? »

Merci !
--
Denis
Avatar
Denis Bitouzé
Le Fri, 25 Apr 2008 16:36:18 +0200
Damien Wyart a écrit :

En fait, la doc recommande plutôt d'utiliser
kill-emacs-query-functions et non kill-emacs-hook :



OK, merci.
--
Denis
Avatar
Jacques L'helgoualc'h
Le 25-04-2008, Damien Wyart a écrit :
[...]
* Jacques L'helgoualc'h :


[...]
(add-hook 'kill-emacs-hook
'adieu)



En fait, la doc recommande plutôt d'utiliser kill-emacs-query-functions
et non kill-emacs-hook : [...]



Merci --- mais il faut sans doute que je passe d'abord à emacs 22, C-h a
kill-emacs-query-functions ne trouve rien...
--
Jacques L'helgoualc'h
Avatar
Erwan David
Denis Bitouzé écrivait :

> Tant qu'on y est, est-il possible de faire rouvrir automatiquement
> les buffers de la session précédente ?

Oui, on peut le faire©.



Chouette ! Mais je m'aperçois que je me suis fait avoir comme un
bleu... La question suivante est donc : « Comment ? »

Merci !



Dans mon .xemacs/init.el j'ai

; desktop
(load "desktop")
(desktop-load-default)
(desktop-read)

Nul doute que quelque chose de semblable existe pour FSF Emacs.

--
Le travail n'est pas une bonne chose. Si ça l'était,
les riches l'auraient accaparé
Avatar
Damien Wyart
> En fait, la doc recommande plutôt d'utiliser
> kill-emacs-query-functions et non kill-emacs-hook : [...]



* Jacques L'helgoualc'h <lhh+ in fr.comp.applications.emacs:

Merci --- mais il faut sans doute que je passe d'abord à emacs 22, C-h
a kill-emacs-query-functions ne trouve rien...



D'après le ChangeLog, la variable a été introduite en 1994... Donc c'est
juste le fait que C-h a ne la remonte pas (mais je ne sais pas
pourquoi). Si vous ouvrez la doc pour kill-emacs-hook, vous devriez voir
la citation que j'ai donnée.

--
DW
Avatar
Damien Wyart
* Denis Bitouzé in fr.comp.applications.emacs:
Chouette ! Mais je m'aperçois que je me suis fait avoir comme un
bleu... La question suivante est donc : « Comment ? »



Quelques pistes :

http://emacs-session.sourceforge.net/related.html" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://emacs-session.sourceforge.net/related.html
http://emacs-session.sourceforge.net/

Certains de ces mécanismes sont inclus dans Emacs, d'autres sont des
paquets additionnels.

--
DW
Avatar
Damien Wyart
En fait, la doc recommande plutôt d'utiliser kill-emacs-query-functions
et non kill-emacs-hook :



Tant que j'y suis, un exemple fonctionnel :

(setq kill-emacs-query-functions
(cons (lambda() (yes-or-no-p "Quitter Emacs ?"))
kill-emacs-query-functions))

(qu'on doit pouvoir écrire un peu plus joliment avec add-to-list, mais
j'ai la flemme :)

--
DW
Avatar
Jacques L'helgoualc'h
Le 25-04-2008, Denis Bitouzé a écrit :
Le Fri, 25 Apr 2008 15:39:54 +0200 (CEST)
Jacques L'helgoualc'h a écrit :
[...]
mais je me sers surtout de gnuclient,



Qu'est-ce à dire ?



Dans mon ~/.xsession, je lance

emacs -iconic -l ~/.elisp21/server.el &

pour lequel mon emacs en
attente a exécuté son server.el contenant (entre autres)

(when window-system
(when (fboundp 'gnuserv-start)
(gnuserv-start)
(defun adieu ()
(unless (y-or-n-p "Ça va pas, la tête... ?! ")
(keyboard-quit)))))





et mon éditeur est alors ~/.bin/myeditor (perfectible) :

#!/bin/bash
function usage () {
gnuclient --help 2>&1 |sed -n "2 s,gnuclient,$0,p"
}
# il faut au moins un paramètre
[ $# -eq 0 ] && { usage ; exit 1 ; }

if [ -z "$DISPLAY" ]; then
# en console
emacs $@
else
# Sous X, on lance un serveur si besoin
gnudoit "(eval t)" &> /dev/null || {
emacs -l ~/.elisp21/server.el -iconic &
# on attend que le serveur ait démarré
until gnudoit "(eval t)" &> /dev/null
do
sleep 1
done
}
# et on édite le fichier
gnuclient $@ &
# L'esperluète finale est discutable...
fi


Bien entendu, il est aliassé par « e », et évite d'attendre qu'une
nouvelle instance d'Emacs digère tout mon fatras ~/.elisp21/.


Si ce n'est pas assez dissuasif, ajoute la freesoftwaresong
interprétée par RMS ?



Sadique !



Bah, pas tant que ça, je n'ai pas suggéré Florence Foster-Jenkins...

> Tant qu'on y est, est-il possible de faire rouvrir automatiquement
> les buffers de la session précédente ?

Oui, on peut le faire©.



Chouette ! Mais je m'aperçois que je me suis fait avoir comme un
bleu... La question suivante est donc : « Comment ? »



C'est vendredi, hein --- en fait, je me souviens seulement de l'avoir vu
passer, ici ou sur gnu.emacs.help ; j'utilise (un peu) recentf, c'est
tout.
--
Jacques L'helgoualc'h
1 2