(add-hook 'html-mode-hook
(lambda()
(setq sgml-basic-offset 4)
(setq indent-tabs-mode t)))
Cela fonctionne parce que quand indent-tabs-mode
est t
, la logique de retrait par défaut Emacs remplace les espaces avec des onglets chaque fois qu'il peut tout en préservant la colonne appropriée pour compenser indentation. Ainsi, par exemple si votre code est censé être compensé par quatre caractères par niveau de retrait (c.-à-sgml-basic-offset
est 4
, comme ci-dessus), votre code doit être indenté deux niveaux de profondeur, et il y a quatre colonnes par niveau d'indentation, puis Emacs calcule que si il indente avec deux onglets et zéro espace, ce qui se traduira par le décalage de la colonne appropriée.
Cela signifie également, cependant, que ce qui précède ne fonctionnera pas tout à fait correctement si vous avez joué avec votre tab-width
. Par exemple, si vous le définissez sur 8
et que vous indentez un niveau de profondeur, Emacs calcule que même s'il n'insère qu'un seul onglet, le décalage de colonne visuel (8) sera plus grand que le décalage souhaité (4). Donc, il va insérer quatre espaces à la place. Essayez de régler sgml-basic-offset
à la même chose que votre tab-width
.
Puis-je faire quelque chose de mal? Ce code n'a aucun effet pour moi. Exécution d'Emacs 22.3.1 btw – Echo
Utilisez-vous le mode html fourni avec emacs ou un autre? –
Juste le mode html par défaut fourni avec emacs. – Echo