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

Simplifier la fin d'une session emacsclient

19 réponses
Avatar
Denis Bitouzé
Bonjour,

(Je ne sais pas si le sujet exprime bien ce que je cherche =E0 faire.)

Ce message fait suite au fil de discussion concernant l'usage d'emacs
comme =E9diteur des messages g=E9r=E9s par un client mail externe (en
l'occurrence claws-mail).

Gr=E2ce aux conseils de Pascal, tout fonctionne =E0 merveille mais reste un
peu lourd : pour passer la main =E0 claws-mail quand le message est
achev=E9, je dois :

1. sauver le buffer (C-x C-s) ;
2. tuer le buffer (C-x k) ;
3. confirmer que le buffer doit =EAtre tu=E9 (<Enter>) ;
4. confirmer =E0 nouveau que le buffer doit =EAtre tu=E9 du fait de la
question =AB Buffer `...' still has clients; kill it? (y or n) =BB (y).

Quels moyens voyez-vous pour simplifier cette proc=E9dure ?

Merci d'avance.
--
Denis

10 réponses

1 2
Avatar
Denis Bitouzé
Le lundi 01/07/13 à 09h21,
Denis Bitouzé a écrit :

1. sauver le buffer (C-x C-s) ;
2. tuer le buffer (C-x k) ;
3. confirmer que le buffer doit être tué (<Enter>) ;
4. confirmer à nouveau que le buffer doit être tué du fait de la
question « Buffer `...' still has clients; kill it? (y or n) » (y).



Oups, je me réponds à moi-même : je viens à l'instant de constater
que les étapes 1 à 3 peuvent être remplacées par C-x #. Reste la 4e
que j'aimerais éviter, peut-être pas pour toute session emacsclient,
mais au moins dans le cadre de cet usage conjoint avec claws-mail.
--
Denis
Avatar
Nicolas Richard
Denis Bitouzé writes:

Le lundi 01/07/13 à 09h21,
Denis Bitouzé a écrit :

1. sauver le buffer (C-x C-s) ;
2. tuer le buffer (C-x k) ;
3. confirmer que le buffer doit être tué (<Enter>) ;
4. confirmer à nouveau que le buffer doit être tué du fait de la
question « Buffer `...' still has clients; kill it? (y or n) » (y).



Oups, je me réponds à moi-même : je viens à l'instant de constater
que les étapes 1 à 3 peuvent être remplacées par C-x #. Reste la 4e
que j'aimerais éviter, peut-être pas pour toute session emacsclient,
mais au moins dans le cadre de cet usage conjoint avec claws-mail.



De mon côté, j'utilise Thunderbird pour les mails (et Gnus pour les
news) et je fonctionne comme suit :
- lorsque j'écris un message, emacs s'ouvre grâce à l'extension
"External Editor" qui lance: "emacsclient -c"
- emacs me dit: "When done with a buffer, type C-x #"
- je tapote mon message
- je sauve (C-x C-s) (ton étape 1)
- je confirme avec C-x # (étapes 2->4)
- me voilà de retour dans thunderbird

Donc je suis surpris qu'après C-x # tu ais la question "still has
clients; kill it ?" -- j'aurais imaginé que c'est plutôt "Save file
/whatever/foo/bar? (y or n)" ?

Si j'ai raison, tu peux toujours faire en sorte que C-x # fasse à la
fois sauver + quitter:

(defadvice server-edit (before save-buffer-if-needed activate)
"Save current buffer before marking it as done."
(when server-buffer-clients (save-buffer)))

--
N.
Avatar
Denis Bitouzé
Le lundi 01/07/13 à 10h30,
"Nicolas Richard" a écrit :

De mon côté, j'utilise Thunderbird pour les mails (et Gnus pour les
news) et je fonctionne comme suit :
- lorsque j'écris un message, emacs s'ouvre grâce à l'extension
"External Editor" qui lance: "emacsclient -c"
- emacs me dit: "When done with a buffer, type C-x #"
- je tapote mon message
- je sauve (C-x C-s) (ton étape 1)
- je confirme avec C-x # (étapes 2->4)
- me voilà de retour dans thunderbird



Les grands esprits se rencontrent :)

Donc je suis surpris qu'après C-x # tu ais la question "still has
clients; kill it ?" -- j'aurais imaginé que c'est plutôt "Save file
/whatever/foo/bar? (y or n)" ?



Oups...

Si j'ai raison,



Tu as...

tu peux toujours faire en sorte que C-x # fasse à la fois sauver +
quitter:

(defadvice server-edit (before save-buffer-if-needed activate)
"Save current buffer before marking it as done."
(when server-buffer-clients (save-buffer)))



Ça me dit :

Warning (initialization): An error occurred while loading
`/home/bitouze/.emacs':

Invalid read syntax: . in wrong context

Merci !
--
Denis
Avatar
Nicolas Richard
Warning (initialization): An error occurred while loading
`/home/bitouze/.emacs':

Invalid read syntax: . in wrong context



Ça me parait bizarre. Quel est le contenu de /home/bitouze/.emacs ?

--
N.
Avatar
Denis Bitouzé
Le lundi 01/07/13 à 11h27,
"Nicolas Richard" a écrit :

Quel est le contenu de /home/bitouze/.emacs ?



Le mien, ci-dessous, est assez court, mais il charge celui de mon ami Fabri ce Niessen :

https://www.assembla.com/code/emacs-leuven/git/nodes/master/emacs-leuven. txt

légèrement ;) plus long...

########################################################################### ###############
(add-to-list 'load-path "/home/bitouze/Public/Repositories/emacs-leuven")
;; Emacs leuven
(require 'emacs-leuven)

(setq user-full-name "Denis Bitouzé")

;; Masquer la toolbar (qui provoque le bug
;;(tool-bar-mode -1)
;; ;; Inhiber l'affichage du message d'accueil
(setq inhibit-startup-message t ;Emacs
gnus-inhibit-startup-message t) ;Gnus

;; ;; C'est fastidieux de taper « yes » pour confirmer, raccourcissons
;; ;; cela à « y » (idem pour « no », désormais « n »).
(fset 'yes-or-no-p 'y-or-n-p)

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

;; ;; Naviguer simplement entre les fichiers ouverts
(require 'iswitchb)
(iswitchb-mode 1)

;; ; pour retrouver les fichiers ouverts lors de la précédente session
;; (desktop-load-default)
;; (desktop-read)
(desktop-save-mode 1)

(add-hook 'LaTeX-mode-hook
(lambda ()
(local-set-key (kbd "C-c d") ; <-- combinaison de touches
(lambda ()
(interactive)
;; Comme `C-c RET dots RET':
;; (TeX-insert-macro "dots")
;; Version simple:
(insert "[]")
(backward-char 2)
(newline 2)
(backward-char)
))))

;; cycle through buffers, ignoring uninteresting ones
(defun backward-buffer ()
"Switch to previously selected buffer."
(interactive)
(let* ((list (cdr (buffer-list)))
(buffer (car list)))
(while (and (cdr list) (string-match "^ ?*" (buffer-name buffer)))
(progn
(setq list (cdr list))
(setq buffer (car list))))
(bury-buffer)
(switch-to-buffer buffer)))

(defun forward-buffer ()
"Opposite of `backward-buffer'."
(interactive)
(let* ((list (reverse (buffer-list)))
(buffer (car list)))
(while (and (cdr list) (string-match "*" (buffer-name buffer)))
(progn
(setq list (cdr list))
(setq buffer (car list))))
(switch-to-buffer buffer)))

(global-set-key [(control return)] 'forward-buffer)
(global-set-key [(shift return)] 'backward-buffer)

;; commenter une ligne en étant dessus
(defun my-?comment-region ()
(save-excursion
(let ((r-b (region-beginning))
(r-e (region-end)))
(funcall
(if (progn
(goto-char r-b)
(beginning-of-line)
(looking-at (format "s-*%s" (regexp-quote comment-start))))
(function uncomment-region)
(function comment-region))
r-b r-e))))

(defun my-?comment ()
(interactive)
(save-excursion
(if mark-active
(my-?comment-region)
(funcall
(if (progn
(beginning-of-line)
(looking-at (format "s-*%s" (regexp-quote comment-start) )))
(function uncomment-region)
(function comment-region))
(progn (beginning-of-line) (point))
(progn (end-of-line) (point))))))

(global-set-key [(control %)] 'my-?comment)
;; Gardons l'originale sous la main:
(global-set-key (kbd "C-ù") 'comment-region)

; traduit ² en
(keyboard-translate #xb2 ? )

(defun insert-french-quotes () "insert quotes and go between them"
(interactive)
(insert "og fg{}")
(backward-char 5))
(global-set-key "M-"" 'insert-french-quotes)

;; Changement de fenetre moins fatigant que Ctrl-x o (EmacsFR)
(global-set-key [(control tab)] `other-window)

(delete-selection-mode t)
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(TeX-PDF-mode t)
'(TeX-macro-private (quote ("/home/bitouze/Images/" "/home/bitouze/texmf/" )))
'(TeX-style-path (quote ("/home/bitouze/.emacs.d/elpa/auctex-11.86/style" "/home/bitouze/.emacs.d/auctex/auto" "/home/bitouze/.emacs.d/auctex/style" "auto" "style" "/usr/local/var/auctex")))
'(column-number-mode t)
'(save-place t nil (saveplace))
'(show-paren-mode t)
'(text-mode-hook (quote (turn-on-auto-fill text-mode-hook-identify)))
'(tool-bar-mode nil)
'(uniquify-buffer-name-style (quote forward) nil (uniquify)))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)
(put 'downcase-region 'disabled nil)

;;automatically close brackets, quotes, etc when typing
(defun insert-parentheses () "insert parentheses and go between them" (inte ractive)
(insert "()")
(backward-char 1))
(defun insert-brackets () "insert brackets and go between them" (interactiv e)
(insert "[]")
(backward-char 1))
(defun insert-braces () "insert curly braces and go between them" (interact ive)
(insert "{}")
(backward-char 1))
(defun insert-quotes () "insert quotes and go between them" (interactive)
(insert """")
(backward-char 1))
(global-set-key "(" 'insert-parentheses) ;;inserts "()"
(global-set-key "[" 'insert-brackets)
(global-set-key "{" 'insert-braces)
(global-set-key """ 'insert-quotes)

;; Activation de la correction orthographique à la volée
(dolist (hook '(text-mode-hook))
(add-hook hook (lambda () (flyspell-mode 1))))

(put 'upcase-region 'disabled nil)

;; Mise à jour automatique du PDF visualisé dans Emacs
(visualisateur lancé au moyen de C-x 4 C-f) (add-hook
'doc-view-mode-hook 'auto-revert-mode)

;; Chargement de RefTeX
(add-hook 'LaTeX-mode-hook 'turn-on-reftex) ; with AUCTeX LaTeX mode
(add-hook 'latex-mode-hook 'turn-on-reftex) ; with Emacs latex mode

;; Parsage des packages LaTeX pour la complétion
(setq TeX-auto-save t)
(setq TeX-parse-self t)
(setq-default TeX-master nil)

;; Longueur des paragraphes
(setq-default fill-column 68)

(add-to-list 'auto-mode-alist
'("^.*/.claws-mail/tmp/tmpmsg..*$" . mail-mode org-mode))

;; Activation de yasnippet
;;(yas-global-mode 1)
;;(add-to-list 'yas/root-directory "~/yas")
(add-to-list 'load-path
"~/.emacs.d/plugins/yasnippet")
(require 'yasnippet)
(yas-global-mode 1)

(defadvice server-edit (before save-buffer-if-needed activate)
"Save current buffer before marking it as done."
(when server-buffer-clients (save-buffer)))
########################################################################### ###############
--
Denis
Avatar
Nicolas Richard
Denis Bitouzé writes:
"Nicolas Richard" a écrit :

Quel est le contenu de /home/bitouze/.emacs ?



Le mien, ci-dessous, est assez court, mais il charge celui de mon ami
Fabrice Niessen :



Heureusement, inutile d'aller chercher aussi loin que Leuven car le
problème est juste ici :

(add-to-list 'auto-mode-alist
'("^.*/.claws-mail/tmp/tmpmsg..*$" . mail-mode org-mode))



Il faut choisir: mail-mode ou org-mode ?

--
N.
Avatar
Denis Bitouzé
Le lundi 01/07/13 à 11h44,
"Nicolas Richard" a écrit :

Heureusement, inutile d'aller chercher aussi loin que Leuven car le
problème est juste ici :

> (add-to-list 'auto-mode-alist
> '("^.*/.claws-mail/tmp/tmpmsg..*$" . mail-mode
> org-mode))



Oups. Décidément... désolé. Et ce que tu as proposé fonctionne à
merveille :)

Il faut choisir: mail-mode ou org-mode ?



Les deux mon capitaine ! ;) C'est l'objet de mon message de ce matin
dans le fil « Lancer emacsclient dans un mode spécifique ».

Merci.
--
Denis
Avatar
Olivier
Le 01/07/2013 10:30, Nicolas Richard a écrit :
[SNIP]
De mon côté, j'utilise Thunderbird pour les mails (et Gnus pour les
news) et je fonctionne comme suit :
- lorsque j'écris un message, emacs s'ouvre grâce à l'extension
"External Editor" qui lance: "emacsclient -c"


Intéressant, malheureusement je ne trouve pas trace de cette extension
parmi les extensions de Thunderbird. J'ai bien trouvé un fichier .xpi
qui correspond, mais je ne sais quoi en faire. Des pistes ?


- emacs me dit: "When done with a buffer, type C-x #"
- je tapote mon message
- je sauve (C-x C-s) (ton étape 1)
- je confirme avec C-x # (étapes 2->4)
- me voilà de retour dans thunderbird




[SNIP]

Cordialement

Olivier Reboux
Avatar
Denis Bitouzé
Le lundi 01/07/13 à 18h40,
Olivier a écrit :

Thunderbird


Claws-mail rulez !
--
Denis
Avatar
Pascal J. Bourguignon
"Nicolas Richard" writes:

De mon côté, j'utilise Thunderbird pour les mails



J'ai récement aussi installé Thunderbird sur l'ordinateur du travail, et
quelle daube! N'y a-t'il pas moyen de composer un message en texte pur
avec Thunderbird? Bah, souvent j'édite dans emacs *scratch*, et je
copie-colle dans Firefox ou Thunderbird…


--
__Pascal Bourguignon__ http://www.informatimago.com/
A bad day in () is better than a good day in {}.
You know you've been lisping too long when you see a recent picture of George
Lucas and think "Wait, I thought John McCarthy was dead!" -- Dalek_Baldwin
1 2