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

lancer Emacs avec un Mutt dedans en mode terminal

28 réponses
Avatar
Vincent Lefevre
Bonjour,

J'aimerais pouvoir lancer Emacs avec un Mutt (ou tout autre
processus) dedans en mode terminal. En gros, un peu l'équivalent
d'un "xterm -e mutt args...", mais avec un Emacs à la place d'un
Xterm (c'est pour les liens mailto...). Comment faire?

Un truc du style

emacs --eval '(progn (set-buffer (make-term "Mutt" "mutt" nil "arg"))
(term-mode) (term-char-mode) (switch-to-buffer "*Mutt*"))'

fonctionne, mais je voudrais que quand Mutt quitte, la fenêtre soit
fermée.

D'autre part, pour la composition du message, Mutt lance un
éditeur externe (configuré par l'utilisateur). Je suppose qu'un
"emacs -nw" fait l'affaire (voire un "gnuclient -nw", mais j'avais
eu des problèmes avec les couleurs dans le passé, si bien que je
n'utilise plus gnuclient).

--
Vincent Lefèvre <vincent@vinc17.org> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA

10 réponses

1 2 3
Avatar
Matthieu Moy
Vincent Lefevre <vincent+ writes:

Un truc du style

emacs --eval '(progn (set-buffer (make-term "Mutt" "mutt" nil "arg"))
(term-mode) (term-char-mode) (switch-to-buffer "*Mutt*"))'



un --eval long comme le bras, ça mérite un emacs-mutt.el (par exemple)
et un truc genre

emacs -l emacs-mutt.el --eval '(la-fonction-qui-lance-mutt)'

fonctionne, mais je voudrais que quand Mutt quitte, la fenêtre soit
fermée.



Si `la-fonction-qui-lance-mutt' met `save-buffers-kill-emacs' dans un
advice (C-h f defadvice RET) sur `term-handle-exit', ça devrait le
faire.

--
Matthieu
Avatar
Florent Georges
Matthieu Moy wrote:

un --eval long comme le bras, ça mérite un emacs-mutt.el (par exemple)
et un truc genre

emacs -l emacs-mutt.el --eval '(la-fonction-qui-lance-mutt)'



Ou :

~> emacs -l emacs-mutt.el -f la-fonction-qui-lance-mutt

Ou si les Autoloads Files sont bien employes :

~> emacs -f la-fonction-qui-lance-mutt

Et enfin avec le script qui va bien :

~> cat ~/bin/emutt
emacs -f la-fonction-qui-lance-mutt
~> emutt

--drkm
Avatar
Vincent Lefevre
Dans l'article ,
Matthieu Moy écrit:

Vincent Lefevre <vincent+ writes:

> Un truc du style
>
> emacs --eval '(progn (set-buffer (make-term "Mutt" "mutt" nil "arg"))
> (term-mode) (term-char-mode) (switch-to-buffer "*Mutt*"))'

un --eval long comme le bras, ça mérite un emacs-mutt.el (par exemple)
et un truc genre

emacs -l emacs-mutt.el --eval '(la-fonction-qui-lance-mutt)'



Ce que je n'ai pas précisé, c'est que ce sera dans un script et "arg"
sera remplacé par la liste des arguments. Sinon, tu as un autre moyen
de passer les arguments? (Attention, ceux-ci peuvent contenir des
caractères comme des espaces ou des newlines.)

> fonctionne, mais je voudrais que quand Mutt quitte, la fenêtre soit
> fermée.

Si `la-fonction-qui-lance-mutt' met `save-buffers-kill-emacs' dans un
advice (C-h f defadvice RET) sur `term-handle-exit', ça devrait le
faire.



Merci, je vais regarder.

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA
Avatar
Matthieu Moy
Vincent Lefevre <vincent+ writes:

emacs -l emacs-mutt.el --eval '(la-fonction-qui-lance-mutt)'



Ce que je n'ai pas précisé, c'est que ce sera dans un script et "arg"
sera remplacé par la liste des arguments. Sinon, tu as un autre moyen
de passer les arguments?



J'ai déjà vu un truc qui permettait de rajouter carrément des
arguments sur la ligne de commande d'Emacs, mais je sais plus ce que
c'était ;-).

Sinon, un truc genre

emacs -l emacs-mutt.el --eval "(la-fonction-qui-lance-mutt $arguments)"

en ayant construit $arguments à coups de "$1" et de shift, en shell,
et en rajoutant les guillemets qui vont bien ?

--
Matthieu
Avatar
Vincent Lefevre
Dans l'article ,
Matthieu Moy écrit:

Sinon, un truc genre

emacs -l emacs-mutt.el --eval "(la-fonction-qui-lance-mutt $arguments)"

en ayant construit $arguments à coups de "$1" et de shift, en shell,
et en rajoutant les guillemets qui vont bien ?



Oui, évidemment...

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA
Avatar
Florent Georges
Matthieu Moy wrote:

J'ai déjà vu un truc qui permettait de rajouter carrément des
arguments sur la ligne de commande d'Emacs, mais je sais plus ce que
c'était ;-).



Tu veux peut-etre parler de 'command-line-args' ? Par exemple, j'ai
chez moi :

(when (member "--drkm-light" command-line-args)
(setq command-line-args (delete "--drkm-light" command-line-args)
drkm-conf:light-loading t)))

Les details dans 'startup.el'.

--drkm
Avatar
Vincent Lefevre
Dans l'article ,
Florent Georges écrit:

(when (member "--drkm-light" command-line-args)
(setq command-line-args (delete "--drkm-light" command-line-args)
drkm-conf:light-loading t)))



C'est une idée. Emacs n'a pas l'air de traiter les arguments après
un argument "--". Donc c'est peut-être là où je pourrai passer les
arguments pour Mutt.

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA
Avatar
Vincent Lefevre
Dans l'article <20060210002449$,
Vincent Lefevre <vincent+ écrit:

Dans l'article ,
Florent Georges écrit:

> (when (member "--drkm-light" command-line-args)
> (setq command-line-args (delete "--drkm-light" command-line-args)
> drkm-conf:light-loading t)))

C'est une idée. Emacs n'a pas l'air de traiter les arguments après
un argument "--". Donc c'est peut-être là où je pourrai passer les
arguments pour Mutt.



Je n'arrive pas à récupérer les arguments à partir du "--".
Et si je ne mets pas de "--", les arguments sont pris en compte
comme des fichiers, même si je fais un (setq command-line-args nil)
dans le "emacs-mutt.el".

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA
Avatar
Vincent Lefevre
Dans l'article <20060209154329$,
Vincent Lefevre <vincent+ écrit:

D'autre part, pour la composition du message, Mutt lance un
éditeur externe (configuré par l'utilisateur). Je suppose qu'un
"emacs -nw" fait l'affaire (voire un "gnuclient -nw", mais j'avais
eu des problèmes avec les couleurs dans le passé, si bien que je
n'utilise plus gnuclient).



En fait, le -nw ne convient pas, car on n'a pas accès à l'interface
graphique. Comment faire pour qu'un processus externe ouvre un buffer
dans la même fenêtre?

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA
Avatar
Florent Georges
Vincent Lefevre wrote:

Je n'arrive pas à récupérer les arguments à partir du "--".



Je ne comprend pas.

Et si je ne mets pas de "--", les arguments sont pris en compte
comme des fichiers, même si je fais un (setq command-line-args nil)
dans le "emacs-mutt.el".



Les arguments de la ligne de commande doivent etre traites au
demarrage. Grosso-modo, tu peux penser que ce doit etre fait avant la
fin de ton ~/.emacs.el, mais plus precisement, c'est ici : (info
"(elisp)Startup Summary"). Typiquement, ce sera fait dans un Autloads
File.

Il faut egalement veiller a ne pas les laisser dans la liste.

--drkm
1 2 3