2009-02-10 6 views
11

Ich bin ein Tab-Person. Wenn ich nicht an einem Projekt arbeite, das bereits Leerzeichen verwendet, verwende ich Tabs. Ich arbeite hauptsächlich mit PHP und HTML. Ich habe Tabs in PHP gut funktioniert. Aber ich kann nicht herausfinden, wie HTML-Modus Tabs anstelle von zwei Leerzeichen verwenden.Tabs im HTML-Modus in Emacs

Hier ist, was ich bisher:

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

Was kann ich so eingestellt, dass HTML-Modus wird Registerkarten verwenden?

Antwort

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

Dies funktioniert, weil, wenn indent-tabs-modet ist, default Emacs Einzug Logik Räume mit Tabs ersetzt, wann immer es kann, während immer noch die richtige Spalte für Einrückungen Offset zu erhalten. Wenn also Ihr Code um vier Zeichen pro Einrückungsebene versetzt werden soll (dh sgml-basic-offset ist 4, wie oben), sollte Ihr Code zwei Ebenen tief eingerückt sein, und es gibt vier Spalten pro Einrückungsebene, dann berechnet Emacs if Es wird mit zwei Tabulatoren und Leerstellen eingedrückt, was zu einem korrekten Spaltenoffset führt.

Dies bedeutet jedoch auch, dass das oben genannte nicht ganz richtig funktioniert, wenn Sie mit Ihrem tab-width verwirrt haben. Wenn Sie beispielsweise den Wert 8 festlegen und eine Ebene tief einrücken, berechnet Emacs, dass der visuelle Spaltenoffset (8) größer ist als der gewünschte Offset (4), auch wenn nur ein einziger Tabulator eingefügt wird. Daher werden stattdessen vier Leerzeichen eingefügt. Versuchen Sie sgml-basic-offset auf das gleiche wie Ihre tab-width einzustellen.

+1

Könnte ich etwas falsch machen? Dieser Code hat keine Auswirkungen für mich. Lauf Emacs 22.3.1 btw. – Echo

+0

Verwenden Sie den HTML-Modus, der mit Emacs oder einem Drittanbieter ausgeliefert wird? –

+0

Nur der Standard-HTML-Modus, der mit Emacs ausgeliefert wird. – Echo

2

Eigentlich sollte indent-tabs-mode wahrscheinlich t sein.

Probieren Sie M-i, nur für eine Lerche. Das sollte ein Tab-Zeichen einfügen. Es ist keine großartige Lösung, aber es könnte im Notfall funktionieren.

ALSO, wie hast du für Raum gegen Tab getestet? darüber bewegen? oder löschen? Du könntest 'rückwärts-löschen-char-untabify' haben, um den Kopf aufzuziehen.

+0

Yup, ich hatte bereits versucht, den Puffer zu löschen und wieder zu öffnen und Emacs neu zu starten. – Echo