(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
.
Czy mogę zrobić coś złego? Ten kod nie działa na mnie. Uruchamianie Emacsa 22.3.1 btw. – Echo
Czy używasz trybu html, który jest dostarczany z emacs lub stroną trzecią? –
Tylko domyślny tryb html, który jest dostarczany z emacs. – Echo