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

10 réponses

1 2 3 4 5
Avatar
Sébastien Kirche
Le 17 juillet 2005 à 16:07, drkm a formulé :

Oops, je n'ai même pas profité de cet exemple, dans ce thread,
pour utiliser MML. Je me répète ici, pour que ceux qui essayent
drkm-mml.el puissent tester le décodage.



Ça fonctionne :)

--
Sébastien Kirche
Avatar
Xavier Maillard
On 17 Jul 2005, Sébastien Kirche wrote:

Le 17 juillet 2005 à 16:07, drkm a formulé :

> Oops, je n'ai même pas profité de cet exemple, dans ce
> thread, pour utiliser MML. Je me répète ici, pour que ceux
> qui essayent drkm-mml.el puissent tester le décodage.

Ça fonctionne :)



Je confirme et je reteste ;)

<!#part type=application/emacs-lisp>

(let ((x 'a) (y 'b)) (list x y))

<!#/part>


--
.o. Xavier Maillard Tel: +33 6 68 04 64 37
..o
ooo
Avatar
Xavier Maillard
On 17 Jul 2005, Xavier Maillard wrote:

On 17 Jul 2005, Sébastien Kirche wrote:

> Le 17 juillet 2005 à 16:07, drkm a formulé :
>
> > Oops, je n'ai même pas profité de cet exemple, dans ce
> > thread, pour utiliser MML. Je me répète ici, pour que ceux
> > qui essayent drkm-mml.el puissent tester le décodage.
>
> Ça fonctionne :)

Je confirme et je reteste ;)

(let ((x 'a) (y 'b)) (list x y))



Pour fêter ta trouvaille et récompenser ton boulot, je pense
qu'il serait souhaitable d'annoncer ça sur le site emacsfr.org
pour la postérité.

Qu'en penses-tu ? Qui peut mieux expliquer ça que toi en tant que
créateur ?

A+
--
Hacker Wonderland Xavier Maillard| "Stand Back! I'm a programmer!"
.0. |
..0 (+33) 326 770 221 | Webmaster, emacsfr.org
000 PGP : 0x1E028EA5 | Membre de l' APRIL
Avatar
Sébastien Kirche
Le 17 juillet 2005 à 16:07, drkm a dit :

Sébastien Kirche writes:

> Le 17 juillet 2005 à 02:07, drkm a dit :

> > Mais le 'cvs(1)' doit fonctionner.

> C'est drkm-lib/file-style/file-style.el qu'il faut reprendre je
> suppose.

Oops. J'ai oublié de préciser : drkm-lib/drkm/drkm-mml.el.



Ah ok. je me suis fais abuser par le commentaire du cvs de ce fichier.

> Est-ce que c'est indépendant ou ça appelle d'autres modules de tes
> libs ?

Normalement non. J'ai juste :

(require 'mailcap)

qui est un module de Gnus, donc normalement disponible si on
utilise drkm MML ;-).



Effectivement ça roule sans souci.

D'ailleurs, ça n'a rien à faire dans
drkm-lib/drkm, ça devrait plutôt être un package indépendant.
Lorsque l'on en avait parlé il y a quelques mois, j'avais créé ce
fichier machinalement dans drkm-lib/drkm.



Vi. Surtout que la note (que j'ai suivi !) sur la page de la racine de
drkm-lib.sf.net indique de ne pas aller dans /drkm... :P

En fait, la structure devrait elle-même changer. De :

drkm-lib/drkm
drkm-lib/file-styles

je devrais passer à :

drkm-lib
file-styles

tout simplement.

Donc pour répondre à ta question, le commentaire au début de
drkm-mml.el doit être suffisant pour l'installer : il doit être
dans le 'load-path', et soit tu charges le 'loaddefs.el' du même
répertoire, soit tu te contentes d'un '(require 'drkm-mml)' (ce
qui est acceptable dans ~/.gnus.el, il est assez petit).



Perso, j'ai mis ceci dans le .gnus :

<!#part type=application/emacs-lisp>

;; décodage des parties mml
;; auteur : drkm de fr.comp.applications.emacs
(when (require 'drkm-mml nil t)
(add-hook 'gnus-part-display-hook 'drkm-mml:decode-parts))


<!#/part>

(C'est voulu l'indentation du bloc ? Je indenté à la main ce que j'ai
rajouté. Il y aurait un truc avec the One True Editor pour indenter
simplement un bloc collé avec une des commandes indent-xx ? Lire :
comment feriez-vous ? Plus simplement si ça existe que sélectionner et
M-x indent-region)

Les File Styles, c'est encore autre chose :-). C'est un peu le
même principe que les styles de CC Mode : tu attribues un style
(un nom) dans les File Local Variables à la fin de ton fichier,
et certaines valeurs et/ou comportement sont sécialisés pour ce
style.
[...]

Plutôt sympa ;-). Mais comme d'hab', le module a besoin d'un
petit nettoyage, et surtout manque de doc' :-(.



Ok, je vois à quoi ça peut servir. Par contre La déclaration avec
defclass dépasse ma maîtrise du lisp :P

Faudra que je creuse.

--
Sébastien Kirche
Avatar
drkm
Sébastien Kirche writes:

Le 17 juillet 2005 à 16:07, drkm a dit :

Sébastien Kirche writes:



Vi. Surtout que la note (que j'ai suivi !) sur la page de la racine de
drkm-lib.sf.net indique de ne pas aller dans /drkm... :P



En fait, cela fait référence au module « top-level ». Tu as
home/, drkm-lib/ et drkm/. Le dernier est à proscrire (je vais
le suprimer dès que j'aurai le temps de jeter un oeil à
cvshome.org). drkm-lib/drkm/ est bien sûr à utiliser sans
modération :-p.

Perso, j'ai mis ceci dans le .gnus :

;; décodage des parties mml
;; auteur : drkm de fr.comp.applications.emacs
(when (require 'drkm-mml nil t)
(add-hook 'gnus-part-display-hook 'drkm-mml:decode-parts))



Ça me semble parfaitement correct (il faut alors un 'require'
ou un chargement du Loaddefs File).

(C'est voulu l'indentation du bloc ? Je indenté à la main ce que j'ai
rajouté. Il y aurait un truc avec the One True Editor pour indenter
simplement un bloc collé avec une des commandes indent-xx ? Lire :
comment feriez-vous ? Plus simplement si ça existe que sélectionner et
M-x indent-region)



Je ne suis pas sûr de comprendre, mais un 'C-u C-x <TAB>'
répond peut-être à ta question.

Plutôt sympa ;-). Mais comme d'hab', le module a besoin d'un
petit nettoyage, et surtout manque de doc' :-(.



Ok, je vois à quoi ça peut servir. Par contre La déclaration avec
defclass dépasse ma maîtrise du lisp :P



C'est une déclaration de classe en CL, comme 'class C {};' en
est une en C++. Mais les possibilités que ça ouvre sont
différentes :-p.

--drkm
Avatar
drkm
Xavier Maillard writes:

Petit test pour voir si je ne suis pas mauvais :)

(setq foo 'bar)



Ça a l'air de fonctionner. Mais c'est plus marrant avec des
'defun' ou des 'error', enfin des trucs en couleur (sauf si
'setq' est en couleur chez toi :-p).

Merci,

--drkm
Avatar
drkm
Xavier Maillard writes:

je pense
qu'il serait souhaitable d'annoncer ça sur le site emacsfr.org



Ok. Mais FireFox me répond « The operation timed out when
attempting to contact emacsfr.org ». Vivement le nouvel
EmacsFr :-).

--drkm
Avatar
drkm
Xavier Maillard writes:

Je confirme et je reteste ;)

(let ((x 'a) (y 'b)) (list x y))



Au fait, si ceux qui n'utilisent pas MML trouvent que le
balisage supplémentaire introduit est dérangeant, j'aimerais un
retour. De manière à ne pas promouvoir une pratique jugée
dérangeante (et donc supprimer ce package).

Merci,

--drkm
Avatar
Sébastien Kirche
Le 18 juillet 2005 à 02:07, drkm s'est exprimé ainsi :

> Perso, j'ai mis ceci dans le .gnus :

> ;; décodage des parties mml
> ;; auteur : drkm de fr.comp.applications.emacs
> (when (require 'drkm-mml nil t)
> (add-hook 'gnus-part-display-hook 'drkm-mml:decode-parts))

Ça me semble parfaitement correct (il faut alors un 'require'
ou un chargement du Loaddefs File).



Gni ? Je ne vois pas de quoi tu veux parler.
Ou alors tu parles du détail du lancement d'Emacs ?

Ici je lance emacs (qui charge son .emacs) puis je M-x gnus (qui charge
son .gnus)

À moins que tu ne parles de ta propre config qui utilise un loaddefs ?

(Perso ma seule expérience de loaddefs c'est qu'il s'agit d'une saleté
de fichier qui ma souvent empêché de compiler emacs il y a quelques mois
car il se retrouvait non-writable après cvs update et qu'à chaque fois
il fallait faire un chmod et redémarrer la compilation (du début lorsque
que c'était sous OSX quand je compile un Emacs carbonisé qui inclut
toutes les ressources nécessaires. Ce problème a disparu il y a
plusieurs mois déjà.).

> (C'est voulu l'indentation du bloc ? Je indenté à la main ce que
> j'ai rajouté. Il y aurait un truc avec the One True Editor pour
> indenter simplement un bloc collé avec une des commandes indent-xx ?
> Lire : comment feriez-vous ? Plus simplement si ça existe que
> sélectionner et M-x indent-region)

Je ne suis pas sûr de comprendre, mais un 'C-u C-x <TAB>'
répond peut-être à ta question.



EN effet, ça y répond :) En me relisant je me dis que je ne n'ai pas été
des plus clairs sur cette question et sa formulation...

> > Plutôt sympa ;-). Mais comme d'hab', le module a besoin d'un
> > petit nettoyage, et surtout manque de doc' :-(.

> Ok, je vois à quoi ça peut servir. Par contre La déclaration avec
> defclass dépasse ma maîtrise du lisp :P

C'est une déclaration de classe en CL, comme 'class C {};' en
est une en C++. Mais les possibilités que ça ouvre sont
différentes :-p.



Il est clair que nous n'avons pas le même niveau de lisp ;)

PS : mais quand dorment donc les gourous d'Emacs ? Ce n'est plus une
heure pour les honnêtes gens là :P
--
Sébastien Kirche
Avatar
Sébastien Kirche
Le 18 juillet 2005 à 02:07, drkm a formulé :

Xavier Maillard writes:

> je pense
> qu'il serait souhaitable d'annoncer ça sur le site emacsfr.org

Ok. Mais FireFox me répond « The operation timed out when
attempting to contact emacsfr.org ». Vivement le nouvel
EmacsFr :-).



Normal : pour le moment l'EmacsFr nouveau se met au point sur
http://emacsfr.etud-orleans.fr/

Grâce aux bons soins de Mihamina Rakotomandimby pour l'hébergement et au
dur travail de Mathieu et de Xavier pour le domptage de CPS :)
--
Sébastien Kirche
1 2 3 4 5