(add-hook 'html-mode-hook
(lambda()
(setq sgml-basic-offset 4)
(setq indent-tabs-mode t)))
này hoạt động bởi vì khi indent-tabs-mode
là t
, logic thụt đầu dòng mặc định Emacs' thay thế không gian với các tab bất cứ khi nào nó có thể trong khi vẫn duy trì các cột thích hợp bù đắp cho thụt đầu dòng. Vì vậy, ví dụ nếu mã của bạn được cho là được bù đắp bởi bốn ký tự cho mỗi cấp thụt đầu dòng (tức là sgml-basic-offset
là 4
, như trên), mã của bạn nên được thụt lề hai cấp độ sâu, và có bốn cột cho mỗi cấp thụt đầu dòng, sau đó Emacs tính toán rằng nó thụt vào với hai tab và không gian bằng không, điều này sẽ dẫn đến việc bù đắp cột thích hợp.
Điều này cũng có nghĩa là, tuy nhiên, điều trên sẽ không hoạt động hoàn toàn đúng nếu bạn đã nhầm lẫn với số tab-width
của mình. Ví dụ nếu bạn đặt nó thành 8
và đang thụt lề một mức sâu, Emacs tính rằng ngay cả khi nó chỉ chèn một tab, thì bù trừ cột trực quan (8) sẽ lớn hơn độ lệch mong muốn (4). Vì vậy, nó sẽ chèn bốn dấu cách để thay thế. Thử đặt sgml-basic-offset
thành giống như số tab-width
của bạn.
Nguồn
2009-02-10 14:29:03
Tôi có thể làm điều gì sai không? Mã đó không có hiệu lực đối với tôi. Chạy Emacs 22.3.1 btw. – Echo
Bạn có đang sử dụng chế độ html được vận chuyển với các emacs hoặc một bên thứ ba không? –
Chỉ chế độ html mặc định được vận chuyển với các emac. – Echo