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

terminal Emacs en UTF-8

6 réponses
Avatar
Vincent Lefevre
Bonjour,

J'aimerais savoir comment lancer un terminal Emacs en UTF-8, sans
toucher aux locales avant qu'Emacs ne soit lancé.

Par exemple,

LC_ALL=en_US.UTF-8 emacs -eval '(progn
(prefer-coding-system ''utf-8)
(set-buffer (make-term "zsh" "zsh"))
(term-mode) (term-char-mode) (switch-to-buffer "*zsh*"))'

fonctionne bien. Mais ce que je veux, c'est faire la même chose
sans avoir à modifier les locales avant de lancer Emacs (c'est à
cause de Mac OS X, qui ne peut pas le faire quand je clique sur
un lien "mailto:"). En gros, que faut-il ajouter à ceci dans le
-eval?

emacs -eval '(progn
(prefer-coding-system ''utf-8)
(set-buffer (make-term "zsh" "zsh"))
(term-mode) (term-char-mode) (switch-to-buffer "*zsh*"))'

Avec juste ce qui se trouve ci-dessus, Emacs affiche les séquences
UTF-8 comme de l'ISO-8859-1.

--
Vincent Lefèvre <vincent@vinc17.org> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)

6 réponses

Avatar
lhabert
Vincent Lefevre :

En gros, que faut-il ajouter à ceci dans le eval?

emacs -eval '(progn
(prefer-coding-system ''utf-8)
(set-buffer (make-term "zsh" "zsh"))
(term-mode) (term-char-mode) (switch-to-buffer "*zsh*"))'

Avec juste ce qui se trouve ci-dessus, Emacs affiche les séquences
UTF-8 comme de l'ISO-8859-1.



Et il doit aussi interpréter ce que tu tapes au clavier comme du latin-1. Si
je me rappelle bien, il faut faire un set-keyboard-coding-system et un
set-terminal-coding-system.
Avatar
Pascal Bourguignon
Vincent Lefevre <vincent+ writes:
Mais ce que je veux, c'est faire la même chose
sans avoir à modifier les locales avant de lancer Emacs (c'est à
cause de Mac OS X, qui ne peut pas le faire quand je clique sur
un lien "mailto:"). En gros, que faut-il ajouter à ceci dans le
-eval?

emacs -eval '(progn



(require (quote cl))
(setf (getenv "LC_ALL") "en_US.UTF-8")

(prefer-coding-system ''utf-8)
(set-buffer (make-term "zsh" "zsh"))
(term-mode) (term-char-mode) (switch-to-buffer "*zsh*"))'



--
__Pascal Bourguignon__ http://www.informatimago.com/

"Remember, Information is not knowledge; Knowledge is not Wisdom;
Wisdom is not truth; Truth is not beauty; Beauty is not love;
Love is not music; Music is the best." -- Frank Zappa
Avatar
Romain Francoise
Pascal Bourguignon writes:

(require (quote cl))
(setf (getenv "LC_ALL") "en_US.UTF-8")



Le Common Lisp c'est bien, mais faut pas abuser non plus... :-)

(setenv "LC_ALL" "en_US.UTF-8")

(Mais je ne suis pas certain que ça résolve le problème de Vincent, de
toute façon.)

--
Romain Francoise | The sea! the sea! the open
it's a miracle -- http://orebokech.com/ | sea! The blue, the fresh, the
| ever free! --Bryan W. Procter
Avatar
lhabert
Pascal Bourguignon :

(require (quote cl))
(setf (getenv "LC_ALL") "en_US.UTF-8")



Hum, ça risque d'être évalué beaucoup trop tard.
Avatar
Vincent Lefevre
Dans l'article <ehkuv3$2q1p$,
Luc Habert écrit:

Vincent Lefevre :

> En gros, que faut-il ajouter à ceci dans le eval?
>
> emacs -eval '(progn
> (prefer-coding-system ''utf-8)
> (set-buffer (make-term "zsh" "zsh"))
> (term-mode) (term-char-mode) (switch-to-buffer "*zsh*"))'
>
> Avec juste ce qui se trouve ci-dessus, Emacs affiche les séquences
> UTF-8 comme de l'ISO-8859-1.

Et il doit aussi interpréter ce que tu tapes au clavier comme du latin-1.



Non, pas seulement ce que je tape au clavier: si je "cat" un fichier
en UTF-8, j'obtiens les séquences non décodées, i.e. le fichier est
interprété en ISO-8859-1.

Si je me rappelle bien, il faut faire un set-keyboard-coding-system
et un set-terminal-coding-system.



J'avais essayé d'ajouter

(set-keyboard-coding-system ''utf-8)
(set-terminal-coding-system ''utf-8)

mais ça ne changeait rien.

D'autre part, pour ce que je tape au clavier, j'obtiens bien des
séquences UTF-8 (donc le set-keyboard-coding-system ne serait pas
nécessaire). Le seul problème, c'est l'affichage.

Note: je n'avais pas précisé, mais Emacs utilise sa propre interface
(dans le cas contraire, il me serait inutile de lancer un terminal
dedans, pouvant utiliser le terminal existant).

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)
Avatar
Vincent Lefevre
Dans l'article ,
Pascal Bourguignon écrit:

Vincent Lefevre <vincent+ writes:
> emacs -eval '(progn

(require (quote cl))
(setf (getenv "LC_ALL") "en_US.UTF-8")

> (prefer-coding-system ''utf-8)
> (set-buffer (make-term "zsh" "zsh"))
> (term-mode) (term-char-mode) (switch-to-buffer "*zsh*"))'



Ça ne change rien. Note: j'avais également essayé

(setenv "LC_ALL" "en_US.UTF-8")

juste après le progn (de toute façon, il me le faudra). Mais cela
ne changeait rien concernant l'affichage.

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)