2009-02-10 13 views
11

Jestem osobą z karty. O ile nie pracuję nad projektem, który już używa spacji, używam kart. Zajmuję się głównie php i html. Mam zakładki w php działające dobrze. Ale nie mogę wymyślić, jak używać kart w trybie html zamiast dwóch spacji.Karty w trybie HTML w Emacs

Oto co mam do tej pory:

(setq c-default-style "python") 
(setq-default c-basic-offset 4 
       tab-width 4 
       indent-tabs-mode t) 

Co mogę tak ustawić, że tryb html użyje kart?

Odpowiedz

26
(add-hook 'html-mode-hook 
      (lambda() 
      (setq sgml-basic-offset 4) 
      (setq indent-tabs-mode t))) 

To działa, ponieważ kiedy indent-tabs-mode jest t, logika domyślna wcięcie Emacs zastępuje spacje z kartami ilekroć może jednocześnie zachowując odpowiednią kolumnę offset wcięć. Na przykład, jeśli Twój kod ma być przesunięty o cztery znaki na jeden poziom wcięcia (np. sgml-basic-offset jest 4, jak wyżej), twój kod powinien być wcięty na dwóch poziomach głębokości, a są cztery kolumny na poziomie wcięcia, a następnie Emacs oblicza, że ​​jeśli wcina się z dwiema zakładkami i zerowymi spacjami, co spowoduje prawidłowe przesunięcie kolumny.

Oznacza to jednak, że powyższe czynności nie będą działać poprawnie, jeśli zepsułeś swoje urządzenie tab-width. Na przykład, jeśli ustawisz go na 8 i wcinasz jeden poziom głęboki, Emacs oblicza, że ​​nawet jeśli wstawi tylko jedną kartę, wizualne przesunięcie kolumny (8) będzie większe niż pożądane przesunięcie (4). Zamiast tego wstawi cztery spacje. Spróbuj ustawić sgml-basic-offset na tę samą, co Twoja tab-width.

+1

Czy mogę zrobić coś złego? Ten kod nie działa na mnie. Uruchamianie Emacsa 22.3.1 btw. – Echo

+0

Czy używasz trybu html, który jest dostarczany z emacs lub stroną trzecią? –

+0

Tylko domyślny tryb html, który jest dostarczany z emacs. – Echo

2

faktycznie, domyślnie tabent-tabs-mode powinien być t.

Wypróbuj M-i, tylko dla skowronka. To powinno wstawić znak tabulacji. To nie jest WIELKIE Rozwiązanie, ale może działać w skrócie.

RÓWNIEŻ, w jaki sposób przetestowałeś przestrzeń w porównaniu z zakładką? poruszanie się po nim? lub usunięcie? możesz mieć 'backward-delete-char-untabify' wychowujące jego głowę.

+0

Tak, już próbowałem zabić i ponownie otworzyć bufor i ponownie uruchomić emacs. – Echo

Powiązane problemy