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

slrn, vim et utf 8

7 réponses
Avatar
Hugolino
[X-post: fcul,fcou - fu2: fcul]


Bonsoir,

Je viens d'installer une ubuntu 7.10 (sur une nouvelle partition et avec
un nouvel utilisateur, afin d'éviter les scories qui traineraient dans
mon home).

J'ai décidé de ne plus me battre pour reconfigurer cette gutsy en
iso-8859-15 comme je m'étais battu avec la Edgy qui est encore sur mon
DD, donc je suis en utf-8 par défaut, sauf pour... slrn.

J'ai généré la locate fr_FR@euro avec 'localegen fr_FR@euro', et je
lance slrn avec la commande 'LANG=fr_FR@euro GDM_LANG=fr_FR@euro luit slrn -C'

Tout va bien, je peux lire tous les messages sans caractères
cabalistiques à la place des accents, je peux même rédiger des posts
lisibles par tous.
Les headers concernant l'encodage:
8<-----------8<---------8<----------8<----------8<----------8<----------8<
Content-Type: text/plain; charset=iso-8859-15
Content-Transfer-Encoding: 8bit
8<-----------8<---------8<----------8<----------8<----------8<----------8<

Mais lorsque je réponds à un message avec vim, la quotation de celui-ci
se passe mal, les accents sont mal transcrits. (un "é" devient un "A®"
avec un tilde sur le "A"). Et le même problème se produit quand je
rappelle un arcticle "postponé" (j'ai du rattraper tous les caractères
accentué de ce post)

Des exemples de mes posts et du quotage foireux sont dans fr.test.
Je pense que le problème provient sans doute plus de vim que de slrn.
sauf si slrn appele vim en lui passant de mauvais paramètres.

L'appel de vim est configuré dans le ~/.slrnrc comme suit:
8<-----------8<---------8<----------8<----------8<----------8<----------8<
set post_editor_command "/home/hug1/News/CreeSignatureAl_Sec.sh >
/home/hug1/News/SignatureAl ; vim -c 'set tw=72' -c 'set
encoding=iso-8859-15' -c 'set fileencodings=iso-8859-15' -f %s +%d"
8<-----------8<---------8<----------8<----------8<----------8<----------8<

Je veux que vim soit configuré par défaut en utf8 puisque tout sauf slrn
marche en utf8, donc le ~/.vimrc contient la ligne 'set encoding=utf8'.
Il semble que les paramètres passés à vim par slrn soient corrects,
notamment l'encoding qui est bien "overridé" puisque qu'un <:set> sous
vim affiche:
8<-----------8<---------8<----------8<----------8<----------8<----------8<
fileencoding=iso-8859-15
fileencodings=iso-8859-15
formatoptions=tcql
8<-----------8<---------8<----------8<----------8<----------8<----------8<

Par contre, peut-être y-a-t'il d'autres choses a modifier dans mon
~/.slrnrc concernant l'encodage:
8<-----------8<---------8<----------8<----------8<----------8<----------8<
set charset "isolatin"
%set charset "iso-8859-15"
%set editor_uses_mime_charset 1
set editor_uses_mime_charset 0
set use_mime 5
%set simulate_graphic_chars 1
%set metamail_command "metamail"
%set metamail_command "more"
compatible_charsets "iso-8859-1,iso-8858-15,utf-8"
set mime_charset "iso-8859-1,iso-8859-15,utf-8"
%set mime_charset "utf-8"
8<-----------8<---------8<----------8<----------8<----------8<----------8<

J'ai essayé de passer set charset "iso-8859-15" dans le ~/.slrnrc, mais
slrn refuse de se lancer avec le message:
8<-----------8<---------8<----------8<----------8<----------8<----------8<
Jeu de caractères non reconnu : iso-8859-15
Jeu de caractères par défaut : isolatin
JEUX DE CARACTÈRES RECONNUS :
isolatin ibm850 ibm852 ibm857 ibm737 NeXT koi8
8<-----------8<---------8<----------8<----------8<----------8<----------8<
Sans doute car je ne sais pas exactement ce qu'est un charset.

Si mon term est important, sachez que j'utilise KDE et que j'appelle
slrn depuis une konsole dont l'encodage est réglé à "Par défaut" (la
commande 'locale charmap' renvoie "UTF-8") et la variable $TERM contient
"xterm".

Depuis vim, je peux lancer ça, et ça semble correct:
8<-----------8<---------8<----------8<----------8<----------8<----------8<
set | grep LANG
GDM_LANG='fr_FR@euro'
LANG='fr_FR@euro'
set | grep LC_
<queud'>
locale charmap
ISO-8859-15
locale
LANG=fr_FR@euro
LC_CTYPE="fr_FR@euro"
LC_NUMERIC="fr_FR@euro"
LC_TIME="fr_FR@euro"
LC_COLLATE="fr_FR@euro"
LC_MONETARY="fr_FR@euro"
LC_MESSAGES="fr_FR@euro"
LC_PAPER="fr_FR@euro"
LC_NAME="fr_FR@euro"
LC_ADDRESS="fr_FR@euro"
LC_TELEPHONE="fr_FR@euro"
LC_MEASUREMENT="fr_FR@euro"
LC_IDENTIFICATION="fr_FR@euro"
LC_ALL=
8<-----------8<---------8<----------8<----------8<----------8<----------8<


Pour la signature générée par fortune, je sais pas trop quoi faire...


Comme mon problème concerne sans doute plus vim que slrn, je fais une
publication croisée vers fr.comp.os.unix avec suivi vers
fr.comp.usenet.lecteurs-de-news.


Merci de votre aide. (et mes excuses pour la longueur de ce post)


--
> C'est vrai. FreeBSD pourrait ªtre bien s'il avait une licence correcte.
Oh, mon troll-Ž-meter vient d'exploser...
Hugo (n© il y a 1 375 147 062 secondes)

7 réponses

Avatar
Matthieu Moy
Hugolino writes:

[X-post: fcul,fcou - fu2: fcul]


non respecté puisque ma réponse est de l'unixerie indépendante du
lecteur.

J'ai généré la locate avec 'localegen ', et je
lance slrn avec la commande 'LANG= GDM_LANG= luit slrn -C'


Si tu lances ton slrn dans un « luit », luit va traduire l'UTF-8 de
ton terminal en latin1, et vice versa (car ton terminal reste bien un
UTF-8). Donc, slrn (latin) -> luit -> terminal (utf-8), c'est OK.

Mais vi va aussi s'exécuter dans ce luit, et là, et si ton vi cause
UTF-8, c'est le drame : vim (utf-8) -> luit -> terminal (double
encodage).

8<-----------8<---------8<----------8<----------8<----------8<----------8<
fileencoding=iso-8859-15
fileencodings=iso-8859-15
formatoptions=tcql
8<-----------8<---------8<----------8<----------8<----------8<----------8<


Ton vi va bien lire les fichiers en latin, mais il va ballancer de
l'UTF-8 au luit qui va double-encoder avant de transmettre au
terminal.

À ta place, je tenterais un "LANG= vim" comme éditeur. Ceci
dit, je suis surpris que ce LANG ne soit pas hérité par vim par
défaut, je suis peut-être à côté de la plaque ...

--
Matthieu

Avatar
Hugolino
Le Thu, 22 Nov 2007 08:45:09 +0100, Matthieu Moy a écrit:
Hugolino writes:

[X-post: fcul,fcou - fu2: fcul]


non respecté puisque ma réponse est de l'unixerie indépendante du
lecteur.


OK, je crois que tu as raison, c'est bien un problème de réglages entre
le terminal et vim avec luit entre les deux.
(J'ai laissé les accents mal transcrit de ta phrase pour qu'on voit le
problème. Je corrige les autres.)

J'ai généré la locate avec 'localegen ', et je
lance slrn avec la commande 'LANG= GDM_LANG= luit slrn -C'


Si tu lances ton slrn dans un «luit», luit va traduire l'UTF-8 de
ton terminal en latin1, et vice versa (car ton terminal reste bien un
UTF-8). Donc, slrn (latin) -> luit -> terminal (utf-8), c'est OK.


OK, ça j'ai compris.

Mais vi va aussi s'exécuter dans ce luit, et là, et si ton vi cause
UTF-8, c'est le drame : vim (utf-8) -> luit -> terminal (double
encodage).
8<-----------8<---------8<----------8<----------8<----------8<----------8<
fileencoding=iso-8859-15
fileencodings=iso-8859-15
formatoptions=tcql
8<-----------8<---------8<----------8<----------8<----------8<----------8<



Oops !!!
Tu as raison. Je n'avais pas vu que le "-c 'set encoding=iso-8859-15'"
que je passe à vim depuis le ~/.slrnrc n'était pas respecté.
Ou alors il est overridé par le "set encoding=utf8" du ~/.vimrc. alors
que la page de man de vim dit que c'est l'option "--cmd" qui est
exécutée *avant* de traiter les fichiers vimrc.
J'en avait déduit que l'option "-c" allait corriger le "set
encoding=utf8 du ~/.vimrc". A tort apparemment.

Donc du coup je ne sais plus quoi faire (j'ai fait un peu trop de tests
et je ne sais plus où j'en suis).

Ton vi va bien lire les fichiers en latin, mais il va ballancer de
l'UTF-8 au luit qui va double-encoder avant de transmettre au
terminal.


OK, vi lit bien du latin1 à cause de -c 'set fileencoding=iso-8859-15',
mais comme le "set encoding=utf8" du ~/.vimrc est respecté, il cause au
terminal en utf8 via luit qui croit recevoir du latin1.

À ta place, je tenterais un "LANG= vim" comme éditeur.


J'ai essayé, mais ça ne change rien pour les accents, par contre mon PC
qui dispose de 512 Mo de RAM, s'est mis à swapper comme un fou, un top a
montré ceci:
8<-----------8<---------8<----------8<----------8<----------8<----------8<
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
19802 hug1 20 0 268m 264m 1872 S 0.0 52.5 0:05.40 vi
8<-----------8<---------8<----------8<----------8<----------8<----------8<

et j'ai fini par avoir le message:
8<-----------8<---------8<----------8<----------8<----------8<----------8<
$ vi .slrnrc
E342: Mémoire épuisée ! (allocation de 824183218 octets)
Appuyez sur ENTRÉE ou tapez une commande pour continuer
8<-----------8<---------8<----------8<----------8<----------8<----------8<

dit, je suis surpris que ce LANG ne soit pas hérité par vim par
défaut, je suis peut-être à coté de la plaque ...


Grâce à ton aide, j'ai progressé. Merci à toi.


--
prends du temps, faut litre la doc, bidouiller, etc...
Codez bourrés, postez déchirés!

Que celui qui a déja séché me jette la première biére.

-+- PL in GFA : Attention chute de bières -+-


Avatar
Hugolino
Le Thu, 22 Nov 2007 11:50:34 +0100, Hugolino a écrit:
Le Thu, 22 Nov 2007 08:45:09 +0100, Matthieu Moy a écrit:

Ton vi va bien lire les fichiers en latin, mais il va ballancer de
l'UTF-8 au luit qui va double-encoder avant de transmettre au
terminal.


OK, vi lit bien du latin1 à cause de -c 'set fileencoding=iso-8859-15',
mais comme le "set encoding=utf8" du ~/.vimrc est respecté, il cause au
terminal en utf8 via luit qui croit recevoir du latin1.


Donc j'ai commenté le "set encoding=utf8" du ~/.vimrc. Et là c'est bon,
lancé depuis slrn pour répondre à un post, vim m'affiche les accents
correctement (même dans la signature).
Reste à vérifier que les headers sont corrects et qu'on arrive à me
lire.

Quand j'ouvre vim depuis ma konsole réglée en utf8, c'est bon aussi:
les accents sont correctement affichés et enregistrés et un 'file' sur le
fichier enregistré répond "Test_vim_utf8: UTF-8 Unicode text".

À ta place, je tenterais un "LANG= vim" comme éditeur.


J'ai essayé, mais ça ne change rien pour les accents, par contre mon PC
qui dispose de 512 Mo de RAM, s'est mis à swapper comme un fou, un top a
montré ceci:
8<-----------8<---------8<----------8<----------8<----------8<----------8<
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
19802 hug1 20 0 268m 264m 1872 S 0.0 52.5 0:05.40 vi
8<-----------8<---------8<----------8<----------8<----------8<----------8<

et j'ai fini par avoir le message:
8<-----------8<---------8<----------8<----------8<----------8<----------8<
$ vi .slrnrc
E342: Mémoire épuisée ! (allocation de 824183218 octets)
Appuyez sur ENTRÉE ou tapez une commande pour continuer
8<-----------8<---------8<----------8<----------8<----------8<----------8<


Ça n'est toujours pas réglé. J'ai redemarré ma linuxette et dans une
konsole, j'ai simplement lancé vi: il lui faut 10 secondes pour
s'exécuter...
Pire: si je ne tape rien dans vim, sauf <:q>, il lui faut 22 secondes
pour me rendre la main !
Les temps sont similaires depuis slrn. Même depuis mon K6 à 233 MHz avec
64 Mo de RAM, c'est bien plus rapide.

Qu'est-ce que j'ai cassé ?

8<-----------8<---------8<----------8<----------8<----------8<----------8<
VIM - Vi Amélioré
version 7.1.56

# apt-cache policy vim
vim:
Installé : 1:7.1-056+2ubuntu2
Candidat : 1:7.1-056+2ubuntu2
Table de version :
*** 1:7.1-056+2ubuntu2 0
500 http://fr.archive.ubuntu.com gutsy/main Packages
500 http://archive.ubuntu.com gutsy/main Packages
100 /var/lib/dpkg/status
8<-----------8<---------8<----------8<----------8<----------8<----------8<

Merci de votre attention.

--
Procédons par étapes.
Allons bon. Je sens encore venir une belle explication à destination des

pauvres ploucs qui n'entravent rien à la logique totogonale.
Hugo (né il y a 1 375 185 238 secondes)


Avatar
Matthieu Moy
Hugolino writes:

j'ai simplement lancé vi: il lui faut 10 secondes pour
s'exécuter...
Pire: si je ne tape rien dans vim, sauf <:q>, il lui faut 22 secondes
pour me rendre la main !


Quel lourdingue, ce vi.

Passes à Emacs, ça ira mieux.

;-)

--
Matthieu

Avatar
Cyrille Lefevre
[snip]
L'appel de vim est configuré dans le ~/.slrnrc comme suit:
8<-----------8<---------8<----------8<----------8<----------8<----------8<
set post_editor_command "/home/hug1/News/CreeSignatureAl_Sec.sh >
/home/hug1/News/SignatureAl ; vim -c 'set twr' -c 'set
encoding=iso-8859-15' -c 'set fileencodings=iso-8859-15' -f %s +%d"
8<-----------8<---------8<----------8<----------8<----------8<----------8<

Je veux que vim soit configuré par défaut en utf8 puisque tout sauf slrn
marche en utf8, donc le ~/.vimrc contient la ligne 'set encoding=utf8'.
Il semble que les paramètres passés à vim par slrn soient corrects,
notamment l'encoding qui est bien "overridé" puisque qu'un <:set> sous
vim affiche:
8<-----------8<---------8<----------8<----------8<----------8<----------8<
fileencoding=iso-8859-15
fileencodings=iso-8859-15
formatoptions=tcql
8<-----------8<---------8<----------8<----------8<----------8<----------8<
[snip]


Hi, Bonjour,

plutôt que de faire des -c blah -c blah, pourquoi ne pas simplement
faire un 'EXINIT=~/.vimrc4slrn vim -f %s +%d' qui source le .vimrc
puis positionne ce qui a besoin d'être écrasé.

# cat ~/.vimrc4slrn
so ~/.vimrc
set twr
set encoding=iso-8859-15
" ou set encoding& pour le réinitialiser à sa valeur par défaut.
set fileencodings=iso-8859-15

Regards, Cordialement,

Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%
supprimer "%nospam% et ".invalid" pour me repondre.
remove "%nospam" and ".invalid" to answer me.

Avatar
Hugolino
[En-tête "Followup-To:" positionné à fr.comp.usenet.lecteurs-de-news.]
Le Fri, 23 Nov 2007 00:07:07 +0100, Cyrille Lefevre a écrit:
[snip]
L'appel de vim est configuré dans le ~/.slrnrc comme suit:
8<-----------8<---------8<----------8<----------8<----------8<----------8<
set post_editor_command "/home/hug1/News/CreeSignatureAl_Sec.sh >
/home/hug1/News/SignatureAl ; vim -c 'set twr' -c 'set
encoding=iso-8859-15' -c 'set fileencodings=iso-8859-15' -f %s +%d"
8<-----------8<---------8<----------8<----------8<----------8<----------8<

Je veux que vim soit configuré par défaut en utf8 puisque tout sauf slrn
marche en utf8, donc le ~/.vimrc contient la ligne 'set encoding=utf8'.
Il semble que les paramètres passés à vim par slrn soient corrects,
notamment l'encoding qui est bien "overridé" puisque qu'un <:set> sous
vim affiche:
8<-----------8<---------8<----------8<----------8<----------8<----------8<
fileencoding=iso-8859-15
fileencodings=iso-8859-15
formatoptions=tcql
8<-----------8<---------8<----------8<----------8<----------8<----------8<
[snip]


Hi, Bonjour,

plutôt que de faire des -c blah -c blah, pourquoi ne pas simplement
faire un 'EXINIT=~/.vimrc4slrn vim -f %s +%d' qui source le .vimrc
puis positionne ce qui a besoin d'être écrasé.


Oui, ou utiliser 'vim -u ~/.vimrc4slrn -f %s +%d' (pas testé)

De toute façons, ça marche sans toutes ces options (cf mon autre
message)

--
Dans la soupente de la remise du fond du jardin de la maison de campagne
dont l'adresse est codee sur un plan mis dans une bouteille rangee dans
un ecrin, lui meme dans une boite au fond d'un coffre dont la balise argos
a une panne de pile.


Avatar
Hugolino
Le Thu, 22 Nov 2007 15:03:38 +0100, Matthieu Moy a écrit:
Hugolino writes:

j'ai simplement lancé vi: il lui faut 10 secondes pour
s'exécuter...
Pire: si je ne tape rien dans vim, sauf <:q>, il lui faut 22 secondes
pour me rendre la main !


Quel lourdingue, ce vi.

Passes à Emacs, ça ira mieux.

;-)


... Constantly Swapping justement :)

C'était le ~/.viminfo qui avait explosé en plein vol (260 Mo), je l'ai
supprimé et ça roulaize.

Merci encore pour ton aide sur luit.

--
Vous avez besoin d'une traduction exceptionnelle dans une autre langue ?
Qu'est-ce que tu as en magasin ?

Dernièrement on m'avait proposé du Volapuk, mais mon interlocuteur s'est
déballonné.