emacs encoding utf-8

Cambiar el sistema de codificación predeterminado de Emacs



encoding utf-8 (7)

En la raíz de su proyecto, cree un archivo llamado .dir-locals.el con contenido:

((nil . ((buffer-file-coding-system . utf-8))))

Aplicará esta codificación a cualquier modo y archivo. Puede ver más información aquí https://www.gnu.org/software/emacs/manual/html_node/emacs/Directory-Variables.html

Mi problema se debe a que Emacs inserta los encabezados del sistema de codificación en los archivos de origen que contienen caracteres que no son ASCII:

# -*- coding: utf-8 -*-

A mis compañeros de trabajo no les gusta que estos encabezados se registren en nuestros repositorios. No quiero que se inserten en mis archivos porque Emacs detecta automáticamente que el archivo debería ser UTF-8 independientemente, por lo que no parece haber ningún beneficio para nadie.

Me gustaría simplemente configurar Emacs para que use UTF-8 automáticamente para todos los archivos, pero parece estar en desacuerdo con esta idea. En un esfuerzo por solucionar esto, he agregado lo siguiente a mi .emacs:

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

Esto no parece resolver mi problema. Emacs todavía inserta los encabezados del sistema de codificación en mis archivos. ¿Alguien tiene alguna idea?

EDITAR:

Creo que este problema está específicamente relacionado con el modo rubí. Aunque todavía no puedo apagarlo.


Esto funciona para mí:

(setq ruby-insert-encoding-magic-comment nil)

Como se sugiere here

Creo que tienes razón en que solo sucede en modo ruby. Parece que el modo ruby ​​está intentando ser útil al agregar la línea, lo que hace que Ruby detecte la codificación del archivo fuente automáticamente.


Por defecto, Emacs no escribirá variables de archivo en sus archivos. Debes haberle pedido que lo hiciera en algún lugar de tus .emacs. Intente ejecutar emacs -q y vea si las variables de archivo se insertan.


Primero, estoy de acuerdo con la respuesta original, pero también agregaría que si tuviera su problema, usaría algo como lo siguiente:

(defun java-setup () (setq tab-stop-list ''(4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92) indent-tabs-mode nil tab-width 4 fill-column 96 buffer-file-coding-system ''utf-8-unix c-comment-start-regexp "//(@//|///(///|[*][*]?//)//)")) (add-hook ''java-mode-hook ''java-setup)


También puede usar las variables locales del directorio para configurar las variables: http://www.gnu.org/software/emacs/manual/html_node/emacs/Directory-Variables.html

Si coloca un archivo con un nombre especial .dir-locals.el en un directorio, Emacs lo leerá cuando visite cualquier archivo en ese directorio o cualquiera de sus subdirectorios, y aplicará la configuración que especifica al búfer del archivo. Emacs busca .dir-locals.el comenzando en el directorio del archivo visitado y subiendo el árbol de directorios. (Para evitar la desaceleración, esta búsqueda se omite para archivos remotos).


Tuve este problema hoy. Para mí, el problema fue que copié y pegué un texto TODO de un correo electrónico. Cuando eliminé ese texto, [# - - coding: utf-8 - -] ya no estaba insertado por emacs.


Actualización: Debo admitir que pasé por alto su pregunta real con respecto a la inserción de las variables, por lo que solo respondí "cómo configurar la parte UTF-8", lo siento. Con respecto a su pregunta real, no tengo nada que agregar, normalmente emacs no hace esto.

Tal vez esta entrada de blog te ayude. Leer la documentación de coding-system-for-read y coding-system-for-write no sugiere que debería usarla:

coding-system-for-write is a variable defined in `C source code''. Its value is nil Documentation: Specify the coding system for write operations. Programs bind this variable with `let'', but you should not set it globally. ...