2009-11-23 15 views
23

Mi problema se deriva de Emacs insertar las cabeceras de sistema de codificación en archivos de origen que contienen caracteres no ASCII:Cambio Emacs defecto Codificación de

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

Mis compañeros de trabajo no les gusta estas cabeceras se registraron en nuestros repositorios. No quiero que se inserten en mis archivos porque Emacs detecta automáticamente que el archivo debe ser UTF-8 independientemente, por lo que no parece haber ningún beneficio para nadie.

Me gustaría simplemente configurar Emacs para usar UTF-8 automáticamente para todos los archivos, sin embargo, parece estar en desacuerdo con esta idea. En un esfuerzo para solucionar este problema, he añadido 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 aún inserta los encabezados del sistema de codificación en mis archivos. ¿Alguien tiene alguna idea?

EDIT:

Creo que este problema se relaciona específicamente con el modo de rubí. Aún así no puedo apagarlo.

+0

En realidad, su configuración está trabajando para mí. Detiene Emacs 24 sigue pidiendo guardar el archivo con UTF-8 –

+0

El fragmento elisp que pones es bastante útil para establecer utf-8 de manera predeterminada en emacs, ¡muchas gracias señor! – Bengalaa

Respuesta

9

De manera predeterminada, Emacs no escribirá variables de archivos en sus archivos. Debe haberle pedido que lo haga en algún lugar de sus .emacs. Intenta ejecutar emacs -q y ver si las variables del archivo se insertan.

1

Actualización: Debo admitir que pasé por alto su pregunta real sobre la inserción de las variables, así que solo contesté el "cómo configurar UTF-8", perdón por esto. En cuanto a su pregunta real, no tengo nada que agregar, normalmente emacs no hace esto.

tal vez this blog entry te ayuda. La lectura de la documentación de coding-system-for-readcoding-system-for-write y no sugiere que se debe utilizar:

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. 
... 
0

En primer lugar, estoy de acuerdo con la respuesta del original, pero también me gustaría añadir que si tuviera su problema me gustaría utilizar algo así 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) 
+0

¿No es la mayor parte de eso extraño? Creo que realmente lo que estás tratando de decir es: (defun set-coding-system() (setq buffer-file-coding-system 'utf-8-unix)) (add-hook' find-file-hook 'set) -coding-system) ... Por supuesto, no lo he intentado, pero parece ser la parte importante de lo que dices. – quodlibetor

+1

En un sentido estricto, sí, estás en lo cierto. Sin embargo, pensé que podría ser más efectivo mostrar la solución (usando las funciones de enlace de emacs para establecer variables locales de búfer) con un ejemplo del mundo real que podría ser fácil de relacionar. A veces, hacer eso es efectivo y útil, a veces agrega confusión. Pero ya que planteaste el problema, me mantendré alerta para dejar en claro lo que es extraño y lo que no está en las respuestas futuras. Gracias. – pajato0

11

Esto funciona para mí:

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

Como se sugiere here

Creo que tienes razón en que solo ocurre en el modo ruby. Parece que ruby-mode intenta ser útil al agregar la línea, lo que hace que Ruby detecte automáticamente la codificación del archivo de origen.

1

También puede utilizar las variables locales de directorio para establecer 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 visitas cualquier archivo en ese directorio o cualquiera de sus subdirectorios, y aplicar la configuración que especifica al buffer del archivo. Emacs busca .dir-locals.el comenzando en el directorio del archivo visitado y moviéndose hacia arriba en el árbol del directorio. (Para evitar la ralentización, esta búsqueda se omite para los archivos remotos.)

0

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, [emacs] ya no insertó [# - - codificación: utf-8 - -].

Cuestiones relacionadas