Demande de confirmation à la fermeture d'emacs

Le
Denis Bitouzé
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 ?

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

Merci d'avance.
--
Denis
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacques L'helgoualc'h
Le #21778071
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
Damien Wyart
Le #21778061
> 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
(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
Denis Bitouzé
Le #21778051
Le Fri, 25 Apr 2008 15:39:54 +0200 (CEST)
Jacques L'helgoualc'h
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
Denis Bitouzé
Le #21778041
Le Fri, 25 Apr 2008 16:36:18 +0200
Damien Wyart
En fait, la doc recommande plutôt d'utiliser
kill-emacs-query-functions et non kill-emacs-hook :



OK, merci.
--
Denis
Jacques L'helgoualc'h
Le #21778031
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
Erwan David
Le #21778021
Denis Bitouzé
> 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é
Damien Wyart
Le #21778011
> En fait, la doc recommande plutôt d'utiliser
> kill-emacs-query-functions et non kill-emacs-hook : [...]



* Jacques L'helgoualc'h
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
Damien Wyart
Le #21778001
* Denis Bitouzé
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
http://emacs-session.sourceforge.net/

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

--
DW
Damien Wyart
Le #21777991
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
Jacques L'helgoualc'h
Le #21777981
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
Publicité
Poster une réponse
Anonyme