OVH Cloud OVH Cloud

MML sans multi-part

78 réponses
Avatar
drkm
Bonsoir

Certains se souviennent peut-être d'une discussion d'il y a
quelques mois, concernant MML. Ce package de Gnus permet
d'ajouter des parties dans un certain type à un message, juste en
utilisant 'C-c <RET> p' dans un buffer en Message Mode.

Cette partie du message, à la lecture, est alors font lockée en
fonction du type. Par exemple selon le mode Emacs Lisp pour les
partie de type "application/emacs-lisp", etc.

Ce qui apparaissait comme une fonctionalité intéressante s'est
révélé inutilisable, car Gnus génère alors un article en
multi-part, illisible par certains, en particulier Google Groups.

Je viens d'écrire un petit package utilisant la même idée, mais
ne générant pas de multi-part. Il laisse les balises telles
quelles à l'envoit, et les décode à la lecture.

Si l'on utilise le package à la lecture, on se retrouve alors
bien avec des parties de texte font lockées selon le type, sinon
on voit simplement les balises. C'est ÀMHA un bon compromis.

Voici par exemple des screenshots de Gnus montrant un tel
article font locké pour l'un, et raw pour l'autre :

<URL:http://drkm-lib.sf.net/tmp/mml-with.png>
<URL:http://drkm-lib.sf.net/tmp/mml-without.png>

Que pensez-vous du principe ? Le fichier, sur le CVS du
projet, contient les infos nécessaires à l'utilisation.

Je suis bien sûr ouvert à toute remarque, suggestion, ou
critique.

--drkm

8 réponses

4 5 6 7 8
Avatar
drkm
drkm writes:

Je vais voir cela de plus près (peut-être y a-t-il des
modifications dans le CVS ?).



Effectivement. J'ai fait une mise à jour de la routine de font
locking. Elle marche toujours pour moi (No Gnus 0.3), et devrait
logiquement fonctionner pour ceux qui utilisent le dernier CVS
(dont tu fais je pense partie). Cette modification change-t-elle
quelque chose chez toi ?

--drkm
Avatar
Sébastien Kirche
Le 31 octobre 2005 à 17:10, drkm s'est exprimé ainsi :

Cette modification change-t-elle quelque chose chez toi ?



Ben...

J'ai toujours un doute quand je reprends le fichier, car la version cvs
ne semble pas changer. Tu le modifies en local chez toi pour le moment ?

Sur un autre message voilà ce que ça donne (je ne vois encore pas de
colorisation) :

[**] BEFORE DECODE PART: [1,1,nil,nil,1631]
nntp+news.cuq.org:fr.comp.applications.emacs:<FIXME: Message-ID>
[**] DECODE PART: (1222)
drkm writes:

ecrit par ... moi-meme. Il me reste encore trois jours pour tenir
promesse :-)



J'ai écrit un petit quelque chose, vite fait-bien fait :
<URL:http://www.fgeorges.org/tmp/drkm-mml.el>. Pour l'installer,
le placer dans un répertoire du 'load-path', et :

(autoload 'drkm-mml:decode-parts "drkm-mml")
(add-hook 'gnus-part-display-hook 'drkm-mml:decode-parts)

Pour ajouter des groupes par regexp :

(push '("group-re" (drkm-mml:default-mode . the-mode))
gnus-parameters)

et par chaîne :

(eval-after-load "drkm-mml"
'(push '("group" . the-mode) drkm-mml:part-group-mode-alist))

Les valeurs par défaut de cette alist sont :

fr.comp.applications.emacs -> emacs-lisp-mode
fr.comp.text.xml -> nxml-mode

Ça semble fonctionner avec le premier, mais pas le second. Je
ne sais pas si c'est dû à la manière de nXML de gérer le font
locking, ou à ma config de celui-ci.

Les parties à font locker sont simplement identifiées par une
ligne blanche, une ou plusieurs lignes commençant par 4 espaces,
et une ligne blanche. Par ligne blanche, j'entends ligne
exactement vide (un 'n' en 1ère colonne).

N'hésitez pas à le tester, et à me communiquer vos avis.
Notamment comment étendre la manière de repérer les blocs à font
locker, ou comment identifier le mode à utiliser. Pour l'instant
donc, le mode dépend directement et uniquement du groupe que l'on
est en train de lire. Il y aurait moyen aussi d'écrire une
fonction que l'on renseigne à la place d'un mode, et qui active
le bon mode en fonction du contenu du bloc.

J'attend vos réactions,

--drkm

[**] DISPLAY: 275->386 (1497->1608), nil:
(autoload 'drkm-mml:decode-parts "drkm-mml")
(add-hook 'gnus-part-display-hook 'drkm-mml:decode-parts)

[**] DISPLAY: 428->514 (1650->1736), nil:
(push '("group-re" (drkm-mml:default-mode . the-mode))
gnus-parameters)

[**] DISPLAY: 532->632 (1754->1854), nil:
(eval-after-load "drkm-mml"
'(push '("group" . the-mode) drkm-mml:part-group-mode-alist))

[**] DISPLAY: 681->775 (1903->1997), nil:
fr.comp.applications.emacs -> emacs-lisp-mode
fr.comp.text.xml -> nxml-mode

[**] BEFORE DECODE PART: [nil,nil,nil,head,1221]
nntp+news.cuq.org:fr.comp.applications.emacs:<FIXME: Message-ID>


--
Sébastien Kirche
Avatar
Xavier Maillard
On 28 oct 2005, Xavier Maillard wrote:

J'utilise désormais les paquets fournis par Debian (n'ayant pas
assez de temps pour bidouiller).



Bon et bien je n'ai pas pu résister :) Donc j'ai testé. Marrant
ce truc.

A+
--
In Gruuik we trust
Avatar
Xavier Maillard
On 28 oct 2005, Xavier Maillard wrote:

J'utilise désormais les paquets fournis par Debian (n'ayant pas
assez de temps pour bidouiller).



Bon et bien je n'ai pas pu résister :) Donc j'ai testé. Marrant
ce truc.

A+
--
In Gruuik we trust
Avatar
Xavier Maillard
On 28 oct 2005, Xavier Maillard wrote:

J'utilise désormais les paquets fournis par Debian (n'ayant pas
assez de temps pour bidouiller).



Bon et bien je n'ai pas pu résister :) Donc j'ai testé. Marrant
ce truc.

A+

[EDIT : j'ai cafouillé un truc, j'espère qu'il n'y aura pas de doublon]
--
In Gruuik we trust
Avatar
drkm
Sébastien Kirche writes:

J'ai toujours un doute quand je reprends le fichier, car la version cvs
ne semble pas changer. Tu le modifies en local chez toi pour le moment ?



Oops, désolé, je n'ai pas précisé. Je n'ai pas pour l'instant
mis le CVS à jour. Juste le fichier sur mon site :

<URL:http://www.fgeorges.org/tmp/drkm-mml.el>

Ceci expliquerait-il cela ?-)

--drkm
Avatar
Sébastien Kirche
Le 1 novembre 2005 à 21:11, drkm vraute :

Ceci expliquerait-il cela ?-)



Non, mais j'ai fini par trouver : je n'ai pas (plus) de
gnus-select-method (je l'ai passée à nnnil) et les groupes sont donc
accédés via un serveur secondaire.

Ce qui fait que fcae ne s'appelle pas fr.comp.applications.emacs chez
moi mais nntp+news.cuq.org:fr.comp.applications.emacs...

Voilà c'est vraiment con mais je n'ai compris que ce matin en
re-relisant ton message de dimanche qui explique comment rajouter des
groupes et des langages par regexp ou par chaîne...

Avec
(push '("nntp+news.cuq.org:fr.comp.applications.emacs" .
emacs-lisp-mode) drkm-mml:part-group-mode-alist)

Ça marche parfaitement maintenant :)

--
Sébastien Kirche
Avatar
Sébastien Kirche
Le 2 novembre 2005 à 11:11, Sébastien Kirche a formulé :

Ça marche parfaitement maintenant :)



Mais bizarrement pas sur l'expression push que j'indique dans ce
message ?

--
Sébastien Kirche
4 5 6 7 8