OVH Cloud OVH Cloud

gnuserv done hook

9 réponses
Avatar
MONROUX philippe
'jour,

Utilisant screen j'aimerais améliorer l'édition des messages sous mutt
(ou slrn) avec gnuclient.emacs en swtichant les fenêtres de screen
automatiquement. Pour cela j'ai besoin de mettre "screen -X select 0",
qui n'est pas une command emacs mais une commande screen, dans
Gnuserv-Done-Hook.

Comment m'y prendre pour faire reconnaitre cette commande (screen -X
select 0) par Gnuserv-Done-Hook ?

'ci

--
Philippe Monroux
Ile de la Reunion
55.3W -21.5S

9 réponses

Avatar
MONROUX philippe
Le 29 Oct 2004 14:21:01 GMT,
Dans le forum fr.comp.applications.emacs,
MONROUX philippe a écrit :

Utilisant screen j'aimerais améliorer l'édition des messages sous
mutt (ou slrn) avec gnuclient.emacs en swtichant les fenêtres de
screen automatiquement. Pour cela j'ai besoin de mettre "screen -X
select 0", qui n'est pas une command emacs mais une commande screen,
dans Gnuserv-Done-Hook.

Comment m'y prendre pour faire reconnaitre cette commande (screen -X
select 0) par Gnuserv-Done-Hook ?



j'ai essayé ça pour Gnuserv-Done-Hook :

(shell-command "screen -X select 0")

mais cela n'execute pas la commande (c-a-d ça ne bascule pas sous la
fenêtre 0 de screen) :o(

--
Philippe Monroux
Avatar
MONROUX philippe
Le 30 Oct 2004 01:30:26 GMT,
Dans le forum fr.comp.applications.emacs,
MONROUX philippe a écrit :

j'ai essayé ça pour Gnuserv-Done-Hook :
(shell-command "screen -X select 0")
mais cela n'execute pas la commande (c-a-d ça ne bascule pas sous la
fenêtre 0 de screen) :o(



par contre dans un buffer en mode lisp une évaluation de la fonction
(shell-command "screen -X select 0") (ou (shell-command "screen -X
select 1") ou autre) marche c-a-d qu'elle me bascule sur la fenêtre
screen souhaitée.

pourquoi cela ne marche-t-il pas dans Gnuserv-Done-Hook ?


--
Philippe Monroux
Avatar
MONROUX philippe
Le 29 Oct 2004 14:21:01 GMT,
Dans le forum fr.comp.applications.emacs,
MONROUX philippe a écrit :

Utilisant screen j'aimerais améliorer l'édition des messages sous mutt
(ou slrn) avec gnuclient.emacs en swtichant les fenêtres de screen
automatiquement. Pour cela j'ai besoin de mettre "screen -X select 0",
qui n'est pas une command emacs mais une commande screen, dans
Gnuserv-Done-Hook.
Comment m'y prendre pour faire reconnaitre cette commande (screen -X
select 0) par Gnuserv-Done-Hook ?



bon j'ai trouvé ça. Mais je ne sais pas pourquoi ça marche :

Gnuserv Done Hook:
(lambda nil
(shell-command "screen -X select mu"))

au lieu de :
Gnuserv Done Hook:
(shell-command "screen -X select mu")

qqun peut m'expliquer ?

merci
--
ph
Avatar
Xavier Maillard
On 30 oct 2004, MONROUX philippe wrote:

Le 29 Oct 2004 14:21:01 GMT,
Dans le forum fr.comp.applications.emacs,
MONROUX philippe a écrit :

> Utilisant screen j'aimerais améliorer l'édition des messages
> sous mutt (ou slrn) avec gnuclient.emacs en swtichant les
> fenêtres de screen automatiquement. Pour cela j'ai besoin de
> mettre "screen -X select 0", qui n'est pas une command emacs
> mais une commande screen, dans Gnuserv-Done-Hook. Comment m'y
> prendre pour faire reconnaitre cette commande (screen -X
> select 0) par Gnuserv-Done-Hook ?

bon j'ai trouvé ça. Mais je ne sais pas pourquoi ça marche :



Le secret est dans la docstring de `lambda':

,----[ C-h f lambda RET ]
| lambda is a Lisp macro in `subr'.
| (lambda args [docstring] [interactive] body)
|
| Return a lambda expression.
| A call of the form (lambda args docstring interactive body) is
| self-quoting; the result of evaluating the lambda expression is the
| expression itself. The lambda expression may then be treated as a
| function, i.e., stored as the function value of a symbol, passed to
| funcall or mapcar, etc.
|
| args should take the same form as an argument list for a `defun'.
| docstring is an optional documentation string.
| If present, it should describe how to call the function.
| But documentation strings are usually not useful in nameless functions.
| interactive should be a call to the function `interactive', which see.
| It may also be omitted.
| body should be a list of Lisp expressions.
|
| [back]
`----

Gnuserv Done Hook:
(lambda nil
(shell-command "screen -X select mu"))

au lieu de :
Gnuserv Done Hook:
(shell-command "screen -X select mu")

qqun peut m'expliquer ?



Heu en fait je reviens dessus, comment faisais tu le "binding"
sur le hook ?

(add-hook 'gnuserv-done-hook (shell-command "....")) ?

A ton service pour plus d'informations.
--
.o. | zedek (at) gnu-rox.org
..o Hacker Wonderland |
ooo |
Avatar
drkm
MONROUX philippe writes:

Le 29 Oct 2004 14:21:01 GMT,
Dans le forum fr.comp.applications.emacs,
MONROUX philippe a écrit :

Utilisant screen j'aimerais améliorer l'édition des messages sous mutt
(ou slrn) avec gnuclient.emacs en swtichant les fenêtres de screen
automatiquement. Pour cela j'ai besoin de mettre "screen -X select 0",
qui n'est pas une command emacs mais une commande screen, dans
Gnuserv-Done-Hook.
Comment m'y prendre pour faire reconnaitre cette commande (screen -X
select 0) par Gnuserv-Done-Hook ?



bon j'ai trouvé ça. Mais je ne sais pas pourquoi ça marche :

Gnuserv Done Hook:
(lambda nil
(shell-command "screen -X select mu"))

au lieu de :
Gnuserv Done Hook:
(shell-command "screen -X select mu")

qqun peut m'expliquer ?



Un hook contient une liste de fonctions à exécuter à certains
moments clefs. Les fonctions sont appelées sans argument (sauf cas
particuliers). Tu peux y ajouter des symboles de fonction, ou des
fonctions lambda. Par exemple :

(add-hook 'some-hook 'some-function)
(add-hook 'some-hook (lambda ()
(some-function)))

sont équivalents.

Mais si tu écris :

(add-hook 'some-hook (shell-command "screen -X select mu"))

tu évalues `shell-command()', et ajoutes sa valeur de retour au hook
`some-hook'. Par contre, avec :

(add-hook 'some-hook (lambda ()
(shell-command "screen -X select mu")))

tu y ajoutes une fonction lambda, qui lorsqu'elle est exécutée,
exécute « (shell-command "screen -X select mu") ».

Il faut voir comment tu ajoutes un élément au hook.

--drkm
Avatar
MONROUX philippe
Le Sat, 30 Oct 2004 16:54:33 +0200,
Dans le forum fr.comp.applications.emacs,
drkm a écrit :

Mais si tu écris :

(add-hook 'some-hook (shell-command "screen -X select mu"))

tu évalues `shell-command()', et ajoutes sa valeur de retour au hook
`some-hook'. Par contre, avec :

(add-hook 'some-hook (lambda ()
(shell-command "screen -X select mu")))

tu y ajoutes une fonction lambda, qui lorsqu'elle est exécutée,
exécute « (shell-command "screen -X select mu") ».



Ok. Merci. Cela répond à ma question.

--
ph
Avatar
MONROUX philippe
Le Sat, 30 Oct 2004 16:54:33 +0200,
Dans le forum fr.comp.applications.emacs,
drkm a écrit :

Il faut voir comment tu ajoutes un élément au hook.



Ahem. J'ai oublié de répondre à cette question posée par Xavier M
également :

je mets ça ds .emacs :

(add-hook 'gnuserv-done-hook
(lambda ()
(shell-command "screen -X select mu")))

voilà

--
Ce matin, l'aventure !
Je sors sans ma carte bleue.
Ni mon portable.
ph
Avatar
Xavier Maillard
On 31 oct 2004, MONROUX philippe wrote:

Le Sat, 30 Oct 2004 16:54:33 +0200,
Dans le forum fr.comp.applications.emacs,
drkm a écrit :

> Il faut voir comment tu ajoutes un élément au hook.

Ahem. J'ai oublié de répondre à cette question posée par Xavier
M également :

je mets ça ds .emacs :

(add-hook 'gnuserv-done-hook
(lambda ()
(shell-command "screen -X select mu")))

voilà



Ok, donc ça c'est la version corrigée mais originellement, ça
ressemblait à quoi ? Enfin de toute façon, la solution que tu as
toi-même fournie est la seule ensisageable dans ce cas de figure
(cf. réponse de drkm).

--
No e-patents, pas de brevets logiciels
Pétition contre les brevets logiciels : http://petition.eurolinux.org
Avatar
MONROUX philippe
Le Sun, 31 Oct 2004 07:20:52 +0100,
Dans le forum fr.comp.applications.emacs,
Xavier Maillard a écrit :

Ok, donc ça c'est la version corrigée mais originellement, ça
ressemblait à quoi ?



(shell-command "screen -X select mu")

autant que je me souvienne...

ph
--
«La réponse est non, mais rappelez-moi la question».
Woody Allen