Lancer emacsclient dans un mode spécifique
Le
Denis Bitouzé

Bonjour,
je souhaiterais, en ligne de commandes, lancer emacsclient dans un mode
spécifique (en l'occurrence mail-mode). J'ai trouvé sur Internet
l'option :
--execute '(mail-mode)'
mais elle ne semble valable que pour emacs (serveur) et en tous cas pas
pour emacsclient.
Merci d'avance pour toute piste.
--
Denis
je souhaiterais, en ligne de commandes, lancer emacsclient dans un mode
spécifique (en l'occurrence mail-mode). J'ai trouvé sur Internet
l'option :
--execute '(mail-mode)'
mais elle ne semble valable que pour emacs (serveur) et en tous cas pas
pour emacsclient.
Merci d'avance pour toute piste.
--
Denis
emacsclient --eval '(mail-mode)'
Mais attention: ça évalue dans un tampon " *server*:
emacsclient --eval '(current-buffer)'
--> #<buffer *server*>
Donc, faire plutôt quelque chose comme:
emacsclient --eval '(with-current-buffer (switch-to-buffer (get-buffer-create "mon-buffer")) (mail-mode))'
(switch-to-buffer si tu veux le voir apparaître, sinon tu peux
l'éliminer).
--
__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
"Pascal J. Bourguignon"
Snif car :
$ emacsclient --eval '(mail-mode)'
nil
$ emacsclient --eval '(with-current-buffer (switch-to-buffer
(get-buffer-create "mon-buffer")) (mail-mode))'
nil
Merci en tous cas.
--
Denis
Denis Bitouzé
Oups, je n'ai rien dit : ça marche en ligne de commandes.
Mais, en fait, ma question vient de ce que je veux utiliser donc
emacsclient en mode mail-mode comme éditeur par défaut de mon
client mail claws-mail. Il y a un champ spécifique pour ce faire
mais y mettre, en plus de ce que tu m'as indiqué, ce que j'avais vu
conseillé pour cette action spécifique, à savoir :
--no-wait '%s'
conduit à l'erreur :
*ERROR*: Symbol's value as variable is void: /home/bitouze/.claws-mail/t mp/tmpmsg.0x8ba4d48
--
Denis
Quand on passe une option --eval, tous les arguments sont pris comme des
expressions lisp à évaluer, au lieu de les considérer comme des fichiers
à éditer.
Donc si on veut utiliser emacsclient pour éditer des fichiers pour un
autre programme, ça va être plus difficile. En général dans ce cas, on
veut qu'emacsclient attende la fin de l'édition de ces fichier pour
continuer, afin que le programme puisse reprendre avce les fichiers
finis d'éditer. Donc normalement, on ne veut pas passer --no-wait, et
pas non plus --eval.
Il reste donc seulement les mécanismes des variables locale de fichier,
de répertoire, ou la liste associative de mode automatique.
Dans le cas d'un programme comme claws-mail, le contenu du fichier
initial est généralement établi par le programme, alors pour y insérer
des variables locales de fichier, il faudrait faire intervenir un script
intermédiaire. De même, le répertoire où se trouve ces fichiers est
souvent différent et créé dynamiquement (avec une partie aléatoire ou
dépendant de l'utilisateur), ce qui rend difficule la configuration de
variables locale de répertoire. D'un autre côté, les fichiers que ces
programmes passent à l'éditeur ont on général une partie du nom ou du
chemin fixe. On peut alors envisager d'utiliser la liste associative de
mode automatique.
D'après l'exemple que tu donnes :
"/home/bitouze/.claws-mail/tmp/tmpmsg.0x8ba4d48"
on peut envisager l'expression régulière suivante:
"^.*/\.claws-mail/tmp/tmpmsg..*$"
Donc, mettre quelque chose comme:
(add-to-list 'auto-mode-alist
'("^.*/\.claws-mail/tmp/tmpmsg..*$" . mail-mode))
dans ~/.emacs devrait faire l'affaire, avec comme editeur externe pour
claws-mail simplement emacsclient.
--
__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
"Pascal J. Bourguignon"
OK.
OK.
Argh !
OK.
Merci pour ces explications détaillées.
« emacsclient » ne suffit pas, mais avec « emacsclient '%s' », ça
marche du tonnerre : la preuve, c'est avec ça que j'écris le
présent message.
Merci beaucoup !
--
Denis
"Pascal J. Bourguignon"
J'aimerais cumuler mail-mode avec org-mode. J'ai tenté :
(add-to-list 'auto-mode-alist
'("^.*/\.claws-mail/tmp/tmpmsg..*$" . mail-mode org-mode))
mais seul le dernier est pris en compte. Dois-je nécessairement
recourir à mmm-mode pour ce faire ?
Merci d'avance.
--
Denis
Quel est le but ? Ces deux modes sont des "major modes", ce qui empêche
de les activer en même temps.
Et en plus ça a provoqué des erreurs ;)
Diverses solutions sont envisageables selon ce qui t'intéresse dans
chaque mode. Plus précisément, quel est l'intérêt de mail-mode dans ce
cas-ci ? Peut être qu'ajouter quelque "keybindings" serait suffisant ?
--
N.
Essaie ça : (info "(org) Orgstruct mode")
[...]
--
Jérémie Courrèges-Anglas
Empreinte PGP : 61DB D9A0 00A4 67CF 2A90 8961 6191 8FBF 06A1 1494
"Nicolas Richard"
Mais argh-euh !
À dire vrai, je ne sais pas trop : j'imaginais, peut-être à tort,
que ce mode proposait des facilités d'édition propre aux mails, par
exemple par une gestion particulière des citations (c-à-d de ce qui
est précédé de « > »).
Peut-être : je navigue à vue :)
Merci.
--
Denis
jca+ (Jérémie Courrèges-Anglas) a écrit :
1. J'ai lu.
2. J'ai adapté : (add-hook 'mail-mode-hook 'turn-on-orgstruct++).
3. J'ai adopté : la preuve, la présente liste a été construite avec
les facilités d'édition de Org-mode :)
Merci !
--
Denis