Como fazer o emacs aceitar o UTF-8 no teclado


6

Meus amigos me persuadiram a "tentar novamente" (cerca da quinta vez em cerca de 12 anos) com o emacs. Atualmente estou sofrendo um pouco e preciso de ajuda com o emacs + utf-8.

Estou executando o 23.3.1 emacs gui no Windows 7 com o meu próprio layout de teclado personalizado (criado com o MS Keyboard Layout Creator). O layout tem um conjunto completo de caracteres ISO-8859-1 (Latin-1), além de alguns caracteres adicionais de ISO-8859-9 (Latin-5, ğış etc para turco) e ŵ para galês (não sei onde esse vidas).

Em meus .emacs, eu adicionei (cegamente) estas linhas:

(Update: aqui está a última bagunça em evolução :)

;; set up unicode
;; keyboard / input method settings
(setq locale-coding-system 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-selection-coding-system 'utf-8)
(set-language-environment 'UTF-8) ; prefer utf-8 for language settings
(set-default-coding-systems 'utf-8)
(setq default-buffer-file-coding-system 'utf-8)
(setq x-select-request-type '(UTF8_STRING COMPOUND_TEXT TEXT STRING))
(prefer-coding-system       'utf-8)
(setq buffer-file-coding-system 'utf-8-unix)
(setq default-file-name-coding-system 'utf-8-unix)
(setq default-keyboard-coding-system 'utf-8-unix)
(setq default-process-coding-system '(utf-8-unix . utf-8-unix))
(setq default-sendmail-coding-system 'utf-8-unix)
(setq default-terminal-coding-system 'utf-8-unix)

Agora, quando eu insiro caracteres do ISO Latin-1 do teclado, eles são aceitos sem problemas, mas os caracteres de fora do Latin-1 são "traduzidos" para um caractere aproximado no Latin-1. Assim, por exemplo, o Latin-5 "" é convertido em um "g" simples.

Cortar e colar, no entanto, funciona bem.

Alguém pode me dizer o que estou fazendo errado? Eu gostaria de fazer tudo que eu faço com o emacs utf-8 com BOM.


Isso está na interface do Emacs ou na versão do console?
Grawity

@grawity: a GUI. Eu atualizei a questão.
Brent.Longborough

2
Galês é falado dentro e ao redor do País de Gales :)
Der Hochstapler

2
@ OliverSalzburg: Sim, eu moro lá; Eu não sei em qual subpage ISO-8859, se houver, os lives vivem ...
Brent.Longborough

Respostas:


1

Isso parece ser um problema de página de códigos (e, portanto, específico do Windows) porque o Emacs usava internamente APIs antigas do Windows que só podiam retornar caracteres que pertenciam à sua página de código (portanto, o Windows se ğtornava simples gantes de passá-lo para o Emacs).

AFAIK isso não é mais o caso no novo Emacsen (agora usamos APIs mais novas que usam algum tipo de Unicode, provavelmente UTF-16).


Obrigado; Posso confirmar que meus emacs atuais não sofrem com essa aflição!
Brent.Longborough

0

Meu emacs diz que o set-language-environment usa uma string, não um símbolo.

(set-language-environment "UTF-8")

O uso do utf-16 para o sistema de codificação do teclado funciona?


Desculpe, set-language-environment "UTF-8"não tem efeito, enquanto (set-keyboard-coding-system 'utf-16)dá "erro: Sistema de codificação inadequado para teclado: utf-16"
Brent.Longborough

1
Eu acho que você precisaria remendar o emacs para que ele funcionasse. Há uma mensagem do Windows chamada WM_UNICHAR que pode ajudar.
fstx

0

na minha caixa linux, eu posso digitar grego, francês (acentos) e espanhol (ñ) no emacs com apenas estas linhas em meus .emacs:

;; Set encoding
(prefer-coding-system 'utf-8)
(setq coding-system-for-read 'utf-8)
(setq coding-system-for-write 'utf-8)

Apenas tentei. Obrigado por tentar, mas ainda não aceita caracteres não-ISO-8859-1 como ŵ e ş.
Brent.Longborough

Isso é estranho, quero dizer grego não é certamente na ISO-8859-1 certo? Tem certeza de que está usando uma fonte compatível com esses caracteres?
Terdon

Ai sim. Recortar e colar funciona bem; é apenas a entrada direta do teclado que não funciona corretamente. Como você insere seus caracteres gregos?
Brent.Longborough

0

Eu adicionei no começo do meu init.el:

(require 'iso-transl)

E aceita minhas entradas espanholas.


Obrigado pela dica. Infelizmente, minhas entradas em espanhol já estão funcionando OK (como é tudo da ISO-9959-1). Quando eu mudo para turco (ı, İ, ş, Ş, ğ, Ğ) que emacs se comporta mal, com ou sem iso-transl
Brent.Longborough
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.