Faça o emacs não remover o BOM dos arquivos XML

8

Eu uso o Emacs para editar um arquivo XML que também é lido por outro aplicativo. O outro aplicativo requer que o arquivo comece com um marcador de ordem de byte (BOM). No entanto, o Emacs parece remover a BOM toda vez que eu edito o arquivo. Existe uma maneira de fazer o Emacs deixar o BOM sozinho?

    
por Vebjorn Ljosa 14.09.2009 / 23:06

3 respostas

9

O Emacs irá escrever uma lista de materiais ou não, dependendo de qual sistema de codificação está usando. O Emacs escolhe automaticamente o sistema de codificação que usa ao visitar um arquivo.

Você pode alterar o sistema de codificação para utf-8-with-signature, que irá dizer ao Emacs para escrever a lista de materiais.

Para alterar o sistema de codificação de um arquivo visitado, 'C-x RETr utf-8-with-signature RET'.

Você pode definir o sistema de codificação que o Emacs usa para um determinado arquivo, definindo uma variável de arquivo . Consulte a seção do manual de instruções do 57.3.4 Variáveis locais nos arquivos para aprender como fazer isso.

    
por 15.09.2009 / 18:06
5

Acompanhamento da resposta de Richard Hoskins: se você nunca quiser que a lista de materiais seja ocultada pelo emacs, é possível desativar as codificações * -with-signature com este snippet:

(setq auto-coding-regexp-alist
  (delete (rassoc 'utf-16be-with-signature auto-coding-regexp-alist)
  (delete (rassoc 'utf-16le-with-signature auto-coding-regexp-alist)
  (delete (rassoc 'utf-8-with-signature auto-coding-regexp-alist)
          auto-coding-regexp-alist))))

A lista de materiais é U + FEFF, o “espaço sem quebra de largura zero”, e não aparece como uma caixa no meu emacs 23.1.1 - em vez disso, a linha superior do arquivo é movida um pouco para baixo e Às vezes, aparece uma caixa ao redor da primeira linha, mas você pode ver que a lista de materiais está lá e excluí-la, se necessário.

    
por 13.05.2010 / 04:20
1

Emacs "propriamente dito" não deve mexer com o BOM; se estiver realmente fazendo isso, então deve ser o código que implementa o "modo" do Emacs que você está usando para editar seus arquivos XML, o que remove a BOM. Como você não diz qual deles é, só posso encaminhá-lo à documentação desse modo ou abrir os arquivos em fundamental-mode (ou modo não destrutivo semelhante). Ou tente M-x find-file-literally se tudo mais falhar.

    
por 15.09.2009 / 14:19

Tags