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?
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).
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?
emacsclient fait ça par défaut.
Sinon, doit bien y avoir une option de gnuclient, non ?
-- Matthieu
Vincent Lefevre <vincent+news@vinc17.org> writes:
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?
emacsclient fait ça par défaut.
Sinon, doit bien y avoir une option de gnuclient, non ?
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?
emacsclient fait ça par défaut.
Sinon, doit bien y avoir une option de gnuclient, non ?
-- Matthieu
Florent Georges
Vincent Lefevre wrote:
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?
Si j'ai bien compris, tu as besoin de 'emacsclient' : (info "(emacs)Emacs Server").
--drkm
Vincent Lefevre wrote:
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?
Si j'ai bien compris, tu as besoin de 'emacsclient' : (info
"(emacs)Emacs Server").
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?
Si j'ai bien compris, tu as besoin de 'emacsclient' : (info "(emacs)Emacs Server").
--drkm
Vincent Lefevre
Dans l'article , Florent Georges écrit:
Vincent Lefevre wrote:
> Je n'arrive pas à récupérer les arguments à partir du "--".
Je ne comprend pas.
dixsept:~> cat cla.el (message "%s" command-line-args) dixsept:~> emacs -l cla.el -- a b
Dans le buffer *Messages*, j'ai:
(emacs -l cla.el)
et non:
(emacs -l cla.el -- a b)
C'est avec Emacs 22.0.50.1.
> 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.
Comment faire dans cla.el, par exemple avec "emacs -l cla.el + a b" pour enlever tout ce qui se situe à partir du "+"?
Un (setq command-line-args nil) met bien command-line-args à nil, mais les arguments sont tout de même pris en compte. Par exemple, avec cla.el contenant:
Dans l'article <1139574525.732121.16580@f14g2000cwb.googlegroups.com>,
Florent Georges <fgeorges.spam@gmail.com> écrit:
Vincent Lefevre wrote:
> Je n'arrive pas à récupérer les arguments à partir du "--".
Je ne comprend pas.
dixsept:~> cat cla.el
(message "%s" command-line-args)
dixsept:~> emacs -l cla.el -- a b
Dans le buffer *Messages*, j'ai:
(emacs -l cla.el)
et non:
(emacs -l cla.el -- a b)
C'est avec Emacs 22.0.50.1.
> 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.
Comment faire dans cla.el, par exemple avec "emacs -l cla.el + a b"
pour enlever tout ce qui se situe à partir du "+"?
Un (setq command-line-args nil) met bien command-line-args à nil,
mais les arguments sont tout de même pris en compte. Par exemple,
avec cla.el contenant:
> Je n'arrive pas à récupérer les arguments à partir du "--".
Je ne comprend pas.
dixsept:~> cat cla.el (message "%s" command-line-args) dixsept:~> emacs -l cla.el -- a b
Dans le buffer *Messages*, j'ai:
(emacs -l cla.el)
et non:
(emacs -l cla.el -- a b)
C'est avec Emacs 22.0.50.1.
> 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.
Comment faire dans cla.el, par exemple avec "emacs -l cla.el + a b" pour enlever tout ce qui se situe à partir du "+"?
Un (setq command-line-args nil) met bien command-line-args à nil, mais les arguments sont tout de même pris en compte. Par exemple, avec cla.el contenant:
> 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?
emacsclient fait ça par défaut.
Sinon, doit bien y avoir une option de gnuclient, non ?
Je vais essayer de remplacer gnuclient par emacsclient (mais j'avais lu quelque part, peut-être ici, que gnuclient était préférable).
Alors je suis ramené au problème: comment le faire de manière conditionnelle, e.g. seulement si $TERM vaut eterm-color?
Dans l'article <vpqfymr5rdj.fsf@ecrins.imag.fr>,
Matthieu Moy <MatthieuNOSPAM.Moy@imag.fr.invalid> écrit:
Vincent Lefevre <vincent+news@vinc17.org> writes:
> 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?
emacsclient fait ça par défaut.
Sinon, doit bien y avoir une option de gnuclient, non ?
Je vais essayer de remplacer gnuclient par emacsclient (mais j'avais
lu quelque part, peut-être ici, que gnuclient était préférable).
Alors je suis ramené au problème: comment le faire de manière
conditionnelle, e.g. seulement si $TERM vaut eterm-color?
> 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?
emacsclient fait ça par défaut.
Sinon, doit bien y avoir une option de gnuclient, non ?
Je vais essayer de remplacer gnuclient par emacsclient (mais j'avais lu quelque part, peut-être ici, que gnuclient était préférable).
Alors je suis ramené au problème: comment le faire de manière conditionnelle, e.g. seulement si $TERM vaut eterm-color?
Je vais essayer de remplacer gnuclient par emacsclient (mais j'avais lu quelque part, peut-être ici, que gnuclient était préférable).
gnuclient est globalement plus évolué.
Pour ton problème, un gnuclient -batch -eval '(find-file ...)' devrait pouvoir le faire.
Alors je suis ramené au problème: comment le faire de manière conditionnelle, e.g. seulement si $TERM vaut eterm-color?
if [ "x$TERM" = x"eterm-color" ]; then foo else bar fi
?
-- Matthieu
Florent Georges
Vincent Lefevre wrote:
dixsept:~> cat cla.el (message "%s" command-line-args) dixsept:~> emacs -l cla.el -- a b
Dans le buffer *Messages*, j'ai:
(emacs -l cla.el)
et non:
(emacs -l cla.el -- a b)
Typiquement, le '--' a signification speciale : ce qui suit ne doit plus etre pris en tant qu'option, mais par exemple en tant que nom de fichier, meme s'ils commencent par un '-'.
Comment faire dans cla.el, par exemple avec "emacs -l cla.el + a b" pour enlever tout ce qui se situe à partir du "+"?
Je ne connais pas CLA. Mais j'imagine qu'elle utilise 'line-command-args', la parcourt a la recherche d'un '+', puis utilise les arguments se trouvant apres.
Un (setq command-line-args nil) met bien command-line-args à nil, mais les arguments sont tout de même pris en compte. Par exemple, avec cla.el contenant:
Peut-etre que le traitement des arguments de CLA est fait avant ton affectation, ou qu'elle utilise un autre mecanisme.
Que veux-tu exactement ?
--drkm
Vincent Lefevre wrote:
dixsept:~> cat cla.el
(message "%s" command-line-args)
dixsept:~> emacs -l cla.el -- a b
Dans le buffer *Messages*, j'ai:
(emacs -l cla.el)
et non:
(emacs -l cla.el -- a b)
Typiquement, le '--' a signification speciale : ce qui suit ne doit
plus etre pris en tant qu'option, mais par exemple en tant que nom de
fichier, meme s'ils commencent par un '-'.
Comment faire dans cla.el, par exemple avec "emacs -l cla.el + a b"
pour enlever tout ce qui se situe à partir du "+"?
Je ne connais pas CLA. Mais j'imagine qu'elle utilise
'line-command-args', la parcourt a la recherche d'un '+', puis utilise
les arguments se trouvant apres.
Un (setq command-line-args nil) met bien command-line-args à nil,
mais les arguments sont tout de même pris en compte. Par exemple,
avec cla.el contenant:
dixsept:~> cat cla.el (message "%s" command-line-args) dixsept:~> emacs -l cla.el -- a b
Dans le buffer *Messages*, j'ai:
(emacs -l cla.el)
et non:
(emacs -l cla.el -- a b)
Typiquement, le '--' a signification speciale : ce qui suit ne doit plus etre pris en tant qu'option, mais par exemple en tant que nom de fichier, meme s'ils commencent par un '-'.
Comment faire dans cla.el, par exemple avec "emacs -l cla.el + a b" pour enlever tout ce qui se situe à partir du "+"?
Je ne connais pas CLA. Mais j'imagine qu'elle utilise 'line-command-args', la parcourt a la recherche d'un '+', puis utilise les arguments se trouvant apres.
Un (setq command-line-args nil) met bien command-line-args à nil, mais les arguments sont tout de même pris en compte. Par exemple, avec cla.el contenant:
> dixsept:~> cat cla.el > (message "%s" command-line-args) > dixsept:~> emacs -l cla.el -- a b
> Dans le buffer *Messages*, j'ai:
> (emacs -l cla.el)
> et non:
> (emacs -l cla.el -- a b)
Typiquement, le '--' a signification speciale : ce qui suit ne doit plus etre pris en tant qu'option, mais par exemple en tant que nom de fichier, meme s'ils commencent par un '-'.
> Comment faire dans cla.el, par exemple avec "emacs -l cla.el + a b" > pour enlever tout ce qui se situe à partir du "+"?
Je ne connais pas CLA.
Cf tout en haut du message.
Mais j'imagine qu'elle utilise 'line-command-args', la parcourt a la recherche d'un '+', puis utilise les arguments se trouvant apres.
C'était juste un fichier de test pour montrer que tout ce qui se trouve à partir de "--" n'est pas mis dans le command-line-args. C'est pour ça qu'il est nécessaire d'utiliser autre chose comme délimiteur pour les arguments.
> Un (setq command-line-args nil) met bien command-line-args à nil, > mais les arguments sont tout de même pris en compte. Par exemple, > avec cla.el contenant:
Dans l'article <1139578577.390816.270560@g44g2000cwa.googlegroups.com>,
Florent Georges <fgeorges.spam@gmail.com> écrit:
Vincent Lefevre wrote:
> dixsept:~> cat cla.el
> (message "%s" command-line-args)
> dixsept:~> emacs -l cla.el -- a b
> Dans le buffer *Messages*, j'ai:
> (emacs -l cla.el)
> et non:
> (emacs -l cla.el -- a b)
Typiquement, le '--' a signification speciale : ce qui suit ne doit
plus etre pris en tant qu'option, mais par exemple en tant que nom de
fichier, meme s'ils commencent par un '-'.
> Comment faire dans cla.el, par exemple avec "emacs -l cla.el + a b"
> pour enlever tout ce qui se situe à partir du "+"?
Je ne connais pas CLA.
Cf tout en haut du message.
Mais j'imagine qu'elle utilise 'line-command-args', la parcourt a
la recherche d'un '+', puis utilise les arguments se trouvant apres.
C'était juste un fichier de test pour montrer que tout ce qui se
trouve à partir de "--" n'est pas mis dans le command-line-args.
C'est pour ça qu'il est nécessaire d'utiliser autre chose comme
délimiteur pour les arguments.
> Un (setq command-line-args nil) met bien command-line-args à nil,
> mais les arguments sont tout de même pris en compte. Par exemple,
> avec cla.el contenant:
> dixsept:~> cat cla.el > (message "%s" command-line-args) > dixsept:~> emacs -l cla.el -- a b
> Dans le buffer *Messages*, j'ai:
> (emacs -l cla.el)
> et non:
> (emacs -l cla.el -- a b)
Typiquement, le '--' a signification speciale : ce qui suit ne doit plus etre pris en tant qu'option, mais par exemple en tant que nom de fichier, meme s'ils commencent par un '-'.
> Comment faire dans cla.el, par exemple avec "emacs -l cla.el + a b" > pour enlever tout ce qui se situe à partir du "+"?
Je ne connais pas CLA.
Cf tout en haut du message.
Mais j'imagine qu'elle utilise 'line-command-args', la parcourt a la recherche d'un '+', puis utilise les arguments se trouvant apres.
C'était juste un fichier de test pour montrer que tout ce qui se trouve à partir de "--" n'est pas mis dans le command-line-args. C'est pour ça qu'il est nécessaire d'utiliser autre chose comme délimiteur pour les arguments.
> Un (setq command-line-args nil) met bien command-line-args à nil, > mais les arguments sont tout de même pris en compte. Par exemple, > avec cla.el contenant:
> Je vais essayer de remplacer gnuclient par emacsclient (mais j'avais > lu quelque part, peut-être ici, que gnuclient était préférable).
gnuclient est globalement plus évolué.
Pour ton problème, un gnuclient -batch -eval '(find-file ...)' devrait pouvoir le faire.
Ça sera mieux, car j'avais une fonction smart-close qui fonctionnait avec gnuclient, mais qui ne fonctionne plus avec emacsclient (et le manuel d'Emacs ne dit quasiment rien -- c'est peut-être aussi parce qu'emacsclient n'est pas aussi évolué).
Je viens de tester et ça fonctionne, enfin presque.
* Il faut que je modifie ma fonction smart-close pour qu'un C-x C-c tue le buffer (seulement dans ce contexte) au lieu de quitter Emacs.
* Emacs a ajouté une ligne en haut du buffer *Mutt* si bien qu'une fois de retour dans ce buffer, la dernière ligne du terminal n'est pas visible. C'est un bug?
> Alors je suis ramené au problème: comment le faire de manière > conditionnelle, e.g. seulement si $TERM vaut eterm-color?
if [ "x$TERM" = x"eterm-color" ]; then foo else bar fi
?
Euh non, je demandais du code Emacs. Mais voilà où j'en étais:
Dans l'article <vpqfymr4a6i.fsf@ecrins.imag.fr>,
Matthieu Moy <MatthieuNOSPAM.Moy@imag.fr.invalid> écrit:
Vincent Lefevre <vincent+news@vinc17.org> writes:
> Je vais essayer de remplacer gnuclient par emacsclient (mais j'avais
> lu quelque part, peut-être ici, que gnuclient était préférable).
gnuclient est globalement plus évolué.
Pour ton problème, un gnuclient -batch -eval '(find-file ...)' devrait
pouvoir le faire.
Ça sera mieux, car j'avais une fonction smart-close qui fonctionnait
avec gnuclient, mais qui ne fonctionne plus avec emacsclient (et le
manuel d'Emacs ne dit quasiment rien -- c'est peut-être aussi parce
qu'emacsclient n'est pas aussi évolué).
Je viens de tester et ça fonctionne, enfin presque.
* Il faut que je modifie ma fonction smart-close pour qu'un C-x C-c
tue le buffer (seulement dans ce contexte) au lieu de quitter
Emacs.
* Emacs a ajouté une ligne en haut du buffer *Mutt* si bien qu'une
fois de retour dans ce buffer, la dernière ligne du terminal
n'est pas visible. C'est un bug?
> Alors je suis ramené au problème: comment le faire de manière
> conditionnelle, e.g. seulement si $TERM vaut eterm-color?
if [ "x$TERM" = x"eterm-color" ]; then
foo
else
bar
fi
?
Euh non, je demandais du code Emacs. Mais voilà où j'en étais:
> Je vais essayer de remplacer gnuclient par emacsclient (mais j'avais > lu quelque part, peut-être ici, que gnuclient était préférable).
gnuclient est globalement plus évolué.
Pour ton problème, un gnuclient -batch -eval '(find-file ...)' devrait pouvoir le faire.
Ça sera mieux, car j'avais une fonction smart-close qui fonctionnait avec gnuclient, mais qui ne fonctionne plus avec emacsclient (et le manuel d'Emacs ne dit quasiment rien -- c'est peut-être aussi parce qu'emacsclient n'est pas aussi évolué).
Je viens de tester et ça fonctionne, enfin presque.
* Il faut que je modifie ma fonction smart-close pour qu'un C-x C-c tue le buffer (seulement dans ce contexte) au lieu de quitter Emacs.
* Emacs a ajouté une ligne en haut du buffer *Mutt* si bien qu'une fois de retour dans ce buffer, la dernière ligne du terminal n'est pas visible. C'est un bug?
> Alors je suis ramené au problème: comment le faire de manière > conditionnelle, e.g. seulement si $TERM vaut eterm-color?
if [ "x$TERM" = x"eterm-color" ]; then foo else bar fi
?
Euh non, je demandais du code Emacs. Mais voilà où j'en étais:
Dans l'article <20060210135136$, Vincent Lefevre <vincent+ écrit:
* Emacs a ajouté une ligne en haut du buffer *Mutt* si bien qu'une fois de retour dans ce buffer, la dernière ligne du terminal n'est pas visible. C'est un bug?
La solution à ce problème est: gnuclient ... > dev/null
Dans l'article <20060210135136$0da6@prunille.vinc17.org>,
Vincent Lefevre <vincent+news@vinc17.org> écrit:
* Emacs a ajouté une ligne en haut du buffer *Mutt* si bien qu'une
fois de retour dans ce buffer, la dernière ligne du terminal
n'est pas visible. C'est un bug?
La solution à ce problème est: gnuclient ... > dev/null
Dans l'article <20060210135136$, Vincent Lefevre <vincent+ écrit:
* Emacs a ajouté une ligne en haut du buffer *Mutt* si bien qu'une fois de retour dans ce buffer, la dernière ligne du terminal n'est pas visible. C'est un bug?
La solution à ce problème est: gnuclient ... > dev/null