2009-11-23 7 views
23

mój problem wynika z Emacs wstawianie nagłówków system kodowania do plików źródłowych zawierających znaki spoza ASCII:Zmiany Emacs Domyślnie System kodowania

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

Moi współpracownicy nie lubią te nagłówki są sprawdzane w naszych repozytoriach. Nie chcę, aby były one umieszczane w moich plikach, ponieważ Emacs automatycznie wykrywa, że ​​plik powinien być w formacie UTF-8, niezależnie od tego, czy nie ma dla nikogo żadnej korzyści.

Chciałbym po prostu ustawić Emacs, aby automatycznie korzystał z UTF-8 dla wszystkich plików, ale wydaje się nie zgadzać z tym pomysłem. W celu ustalenia tego, dodałem następujące moim .emacs:

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

To nie wydaje się rozwiązać mój problem. Emacs nadal wstawia nagłówki systemu kodowania do moich plików. Ktoś ma jakieś pomysły?

EDIT:

Myślę, że ten problem jest szczególnie związany z Ruby-tryb. Nadal nie mogę tego wyłączyć.

+0

Właściwie konfiguracja działa dla mnie. Zatrzymuje się Emacs 24 wciąż prosi o zapisanie pliku z UTF-8 –

+0

fragment, który umieściłeś jest całkiem użyteczny do domyślnego ustawienia utf-8 na emacs, dzięki bardzo życzliwy panie! – Bengalaa

Odpowiedz

9

Domyślnie Emacs nie zapisuje zmiennych plików do twoich plików. Musiałeś go poprosić o zrobienie tego gdzieś w swoim pliku .emacs. Spróbuj uruchomić emacs -q i sprawdź, czy zmienne plików zostały wstawione.

1

Aktualizacja: Muszę przyznać, że przeoczyłem rzeczywisty pytanie dotyczące wprowadzania zmiennych, więc tylko odpowiedział „setup howto UTF-8 część” przykro z tego powodu. Jeśli chodzi o twoje aktualne pytanie, nie mam nic do dodania, zwykle emacs tego nie robi.

może this blog entry pomaga. Czytając dokumentację coding-system-for-read i coding-system-for-write nie sugeruje, że należy go używać:

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

Po pierwsze, zgadzam się z oryginalną odpowiedź, ale chciałbym również dodać, że jeśli miałem problem chciałbym użyć czegoś podobnego następujące:

(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

Czy większość tego nie jest obca? Myślę, że naprawdę to, co próbujesz powiedzieć, to: (defun set-coding-system() (setq buffer-file-coding-system 'utf-8-unix)) (add-hook' find-file-hook 'set -coding-system) ... Oczywiście, nie próbowałem tego, ale wydaje mi się to ważną częścią tego, co mówisz. – quodlibetor

+1

W wąskim znaczeniu, tak, masz rację. Pomyślałem jednak, że skuteczniejsze może okazać się przedstawienie rozwiązania (za pomocą funkcji haka emacsa do ustawiania lokalnych zmiennych bufora) za pomocą przykładu z prawdziwego świata, do którego można łatwo się odnosić. Czasami jest to skuteczne i pomocne, czasem wprowadza zamieszanie. Ale odkąd poruszyłeś ten problem, zachowam umysł, by wyjaśnić, co jest nieistotne, a czego nie ma w przyszłych odpowiedziach. Dzięki. – pajato0

11

działa to dla mnie:

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

Jak sugeruje here

Uważam, że masz rację, że dzieje się to tylko w trybie ruby. Wygląda na to, że tryb ruby ​​próbuje być pomocny, dodając linię, która sprawia, że ​​Ruby automatycznie wykrywa kodowanie pliku źródłowego.

1

Można również użyć katalogu zmiennych lokalnych, aby skonfigurować zmienne: http://www.gnu.org/software/emacs/manual/html_node/emacs/Directory-Variables.html

Jeśli umieścisz plik ze specjalną nazwę .dir-locals.el w katalogu, Emacs ją przeczytać, gdy wizyty dowolny plik w tym katalogu lub jego podkatalogach i zastosuj ustawienia, które określa do bufora pliku. Emacs wyszukuje katalog .dir-locals.el w katalogu odwiedzanego pliku i przesuwa się w górę drzewa katalogów. (Aby uniknąć spowolnienia, wyszukiwanie to jest pomijane w przypadku plików zdalnych.)

0

Dzisiaj miałem ten problem. Problem polegał na tym, że skopiowałem i wkleiłem tekst TODO z e-maila.Kiedy usunąłem ten tekst, emacs nie był już wstawiany przez [# - - kodowanie: utf-8 - -].

Powiązane problemy