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

Encodage caractères avec emacs pour Windows

5 réponses
Avatar
SL
Bonjour,

J'utilise un emacs sous Windows et il y a souvent des conflits d'encodage :
les fichiers issus d'autres éditeurs sont malmenés dans emacs (des \201
partout), et souvent un fichier créé sous emacs se plein au moment de
l'enregistrement que le jeu d'encodage par défaut ne convient pas (il me
propose en effet alors des utf-dos et autres choses peu rassurante). Sauriez
vous comment paramétrer ces encodages par défaut pour lui mettre un clair et
net latin-1 ou utf-8 ? Y a til un 'customize-group' pour ça ?

Merci !

5 réponses

Avatar
s.jacques
"SL" writes:

Bonjour,

J'utilise un emacs sous Windows et il y a souvent des conflits d'encodage :
les fichiers issus d'autres éditeurs sont malmenés dans emacs (des 201
partout), et souvent un fichier créé sous emacs se plein au moment de
l'enregistrement que le jeu d'encodage par défaut ne convient pas (il me
propose en effet alors des utf-dos et autres choses peu rassurante). Sauriez
vous comment paramétrer ces encodages par défaut pour lui mettre un clair et
net latin-1 ou utf-8 ? Y a til un 'customize-group' pour ça ?

Merci !






J'utilise du Latin-1 avec dans mon .emacs:

;; J'ai un accent... (On passe en ISO 8859 Latin-1)
'(set-language-environment 'latin-1)
'(set-terminal-coding-system 'latin-1)
'(set-keyboard-coding-system 'latin-1)

--
Sebastien Jacques
Avatar
SL
J'utilise du Latin-1 avec dans mon .emacs:

;; J'ai un accent... (On passe en ISO 8859 Latin-1)
'(set-language-environment 'latin-1)
'(set-terminal-coding-system 'latin-1)
'(set-keyboard-coding-system 'latin-1)



Ca semble marcher pour l'instant. Je vois pas très bien la différence entre

'(set-language-environment 'latin-1)
et
'(current-language-environment 'latin-1)

- Au sujet du premier, le manuel dit que "You can override the language
environment chosen at startup with explicit use of the command
set-language-environment, or with customization of
current-language-environment in your init file."

Est-ce que ça veut dire qu'il une (troisième) façon de 'choisir'
l'environment, en amont de set- ou current- language-environment et du
fichier .emacs (qui est le "init file" j'imagine) ?

- Au sujet du second, il est dit que

The command set-language-environment
runs that hook after setting up the new language environment.
The hook functions can test for a specific language environment
by checking the variable current-language-environment.



Donc la fonction 'current-language-environment' est "antérieure" à
'set-language-environment', qui s'y réfère, et a priori il vaut mieux
utiliser 'current-etc' dans .emacs ?

Enfin j'ai une question toute bête, peut être trop : si je comprends bien un
hook est un fichier de paramétrisations, mais je n'en ais encore jamais
croisé et je ne vois pas comment on y accède...

Merci pour vote aide,
SL
Avatar
Georges Ko
"SL" a ecrit :

Enfin j'ai une question toute bête, peut être trop : si je comprends bien un
hook est un fichier de paramétrisations, mais je n'en ais encore jamais
croisé et je ne vois pas comment on y accède...



Un « hook » est une liste de fonctions (ou une fonction anonyme)
qui sont appelées à des moments précis par Emacs et sont, par
convention, sauvegardées dans des variables finissant par « -hook »,
manipulées par « add-hook » et « remove-hook ».

Par exemple, set-language-environment-hook, vaut chez moi:

((lambda nil
(set-coding-priority
'(coding-category-utf-16-le coding-category-utf-16-be
coding-category-utf-8))))

Dans set-language-environment, on trouve :

(defun set-language-environment (language-name)
(interactive (list (read-language-name
nil
"Set language environment (default, English): ")))
.
.
.
(if current-language-environment
(let ((func (get-language-info current-language-environment
'exit-function)))
(run-hooks 'exit-language-environment-hook)
(if (functionp func) (funcall func))))
.
.
.
(run-hooks 'set-language-environment-hook)
(force-mode-line-update t))

Donc: si current-language-environment ne vaut pas nil, alors
toutes les fonctions dans la liste rangée dans
exit-language-environment-hook seront appelées, puis avant de sortir
de set-language-environment, toutes les fonctions dans la liste rangée
dans set-language-environment-hook seront appelées.
--
Georges Ko 2004-09-30
Si vous n'etes pas dans ma liste blanche, ajoutez [m2gko] dans le sujet de
votre courrier.
Avatar
SL
Merci ! c'est dur sans lisp, mais je vois le principe.

"Georges Ko" a écrit dans le message de news:

"SL" a ecrit :

> Enfin j'ai une question toute bête, peut être trop : si je comprends


bien un
> hook est un fichier de paramétrisations, mais je n'en ais encore jamais
> croisé et je ne vois pas comment on y accède...

Un « hook » est une liste de fonctions (ou une fonction anonyme)
qui sont appelées à des moments précis par Emacs et sont, par
convention, sauvegardées dans des variables finissant par « -hook »,
manipulées par « add-hook » et « remove-hook ».

Par exemple, set-language-environment-hook, vaut chez moi:

((lambda nil
(set-coding-priority
'(coding-category-utf-16-le coding-category-utf-16-be
coding-category-utf-8))))

Dans set-language-environment, on trouve :

(defun set-language-environment (language-name)
(interactive (list (read-language-name
nil
"Set language environment (default, English): ")))
.
.
.
(if current-language-environment
(let ((func (get-language-info current-language-environment
'exit-function)))
(run-hooks 'exit-language-environment-hook)
(if (functionp func) (funcall func))))
.
.
.
(run-hooks 'set-language-environment-hook)
(force-mode-line-update t))

Donc: si current-language-environment ne vaut pas nil, alors
toutes les fonctions dans la liste rangée dans
exit-language-environment-hook seront appelées, puis avant de sortir
de set-language-environment, toutes les fonctions dans la liste rangée
dans set-language-environment-hook seront appelées.
--
Georges Ko


2004-09-30
Si vous n'etes pas dans ma liste blanche, ajoutez [m2gko] dans le sujet


de
votre


courrier.
Avatar
SL
;; J'ai un accent... (On passe en ISO 8859 Latin-1)
'(set-language-environment 'latin-1)
'(set-terminal-coding-system 'latin-1)
'(set-keyboard-coding-system 'latin-1)



Emacs continue à vouloir encoder des buffers avec iso-8859-1-dos de mauvais
alois. Je m'en tire en ajoutant dans la foulée :

'(default-buffer-file-coding-system 'iso-latin-1)

Merci de votre aide,
SL