2009-11-23 2 views
23

Моей проблемы связанно с Emacs вставив систему кодирования заголовков в исходные файлы, содержащих не-ASCII символы:Изменения Emacs По умолчанию системы кодирования

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

Мои коллеги не любят эти заголовки проверяются в наши хранилища. Я не хочу, чтобы они вставлялись в мои файлы, потому что Emacs автоматически обнаруживает, что файл должен быть UTF-8, независимо от того, что никому не кажется.

Я хотел бы просто установить Emacs для использования UTF-8 автоматически для всех файлов, но, похоже, не согласен с этой идеей. В попытке исправить это, я добавил следующие мои .emacs:

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

Это не похоже, чтобы решить мою проблему. Emacs по-прежнему вставляет заголовки кодирующей системы в мои файлы. У кого-нибудь есть идеи?

EDIT:

Я думаю, что эта проблема конкретно связана с рубиново-режим. Я все еще не могу отключить его.

+0

На самом деле ваша конфигурация работает на меня. Он останавливает Emacs 24, продолжая просить сохранить файл с UTF-8 –

+0

. Выбранный фрагмент elisp весьма полезен для установки utf-8 по умолчанию на emacs, благодаря большому виду сэр! – Bengalaa

ответ

9

По умолчанию Emacs не будет записывать переменные файла в ваши файлы. Вы, должно быть, попросили его сделать это где-то в ваших .emacs. Попробуйте запустить emacs -q и посмотреть, вставлены ли переменные файла.

1

Обновление: Должен признаться, что я упустил ваш актуальный вопрос о вводе переменных, поэтому я ответил только на «howto setup UTF-8 part», извините за это. Что касается вашего фактического вопроса, мне нечего добавить, обычно emacs этого не делает.

возможно this blog entry поможет вам. Чтение документации coding-system-for-read и coding-system-for-write не означает, что вы должны использовать его:

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

Во-первых, я согласен с оригинальным ответом, но я хотел бы также добавить, что если бы у меня был свой вопрос, который я хотел бы использовать что-то вроде следующее:

(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

Не большая часть этого постороннего? Я думаю, что действительно то, что вы пытаетесь сказать: (defun set-coding-system() (setq buffer-file-coding-system 'utf-8-unix)) (add-hook' find-file-hook 'set -кодирование) ... Конечно, я этого не пробовал, но это похоже на важную часть того, что вы говорите. – quodlibetor

+1

В узком смысле, да, вы правы. Тем не менее, я думал, что было бы более эффективным показать решение (используя функции перехвата emacs для установки локальных переменных буфера) с примером реального мира, с которым может быть легко связано. Иногда делать это эффективно и полезно, иногда это добавляет путаницу. Но так как вы подняли вопрос, я буду следить за тем, чтобы было ясно, что постороннее, а что нет в будущих ответах. Благодарю. – pajato0

11

Это работает для меня:

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

Как предложил here

Я считаю, что вы правы, что это происходит только в рубиновом режиме. Кажется, рубиновый режим пытается помочь, добавив строку, что заставляет Ruby автоматически определять кодировку исходного файла.

1

Вы также можете использовать каталог локальные переменные, чтобы настроить переменные: http://www.gnu.org/software/emacs/manual/html_node/emacs/Directory-Variables.html

Если вы поместите файл со специальным именем .dir-locals.el в директории, Emacs будет читать его, когда он посещение любой файл в этом каталоге или в любом из его подкаталогов и применять параметры, которые он задает в буфере файла. Emacs ищет .dir-locals.el, начиная с каталога посещенного файла и перемещаясь по дереву каталогов. (Чтобы избежать замедления, этот поиск пропускается для удаленных файлов.)

0

У меня была эта проблема сегодня. Для меня проблема заключалась в том, что я скопировал и наклеил текст TODO по электронной почте.Когда я удалил этот текст, [# - - код: utf-8 - -] больше не был вставлен emacs.

0

В корневом каталоге вашего проекта создания файла под названием .dir-locals.el с содержанием:

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

Он будет применять эту кодировку в любом режиме и файла. Вы можете увидеть больше информации здесь https://www.gnu.org/software/emacs/manual/html_node/emacs/Directory-Variables.html

Смежные вопросы