Emacsユーザーのための LESS 導入。 - 日々、とんは語る。
less-css-modeを使っていて、インデント幅を2にしたいなあと思い、
.emacs で
(defun less-css-mode-hooks () (flymake-mode-off) (setq indent-tabs-mode nil) (setq c-basic-offset 2)) (add-hook 'less-css-mode-hook 'less-css-mode-hooks)
ってやってless-css-modeを実行してもインデント幅は4のままだった。
なんか散々いろいろ調べまわったあげく、公式のドキュメント(less-css-mode.el)を読んでたら、
;; `less-css-mode' is derived from `css-mode', and indentation of
;; nested blocks may not work correctly with versions of `css-mode'
;; other than that bundled with recent Emacs.
うーん、less-css-modeのインデントはcss-modeのインデントに支配されているっぽいな(違うかもしれないが)
だが待て。そもそも僕はどのcss-modeを使っているのだ?
僕の.emacsにはcss-modeに関する記述はない。
よく考えたら、僕は特別なcss-modeを使わず、標準のものを利用している。
Emacsのcss-modeが複数ある件 - 牌語備忘録 - pygo
とすると、Emacs標準のcss-modeのインデント幅を弄ればよいのではないか。
(defun semicolon-ret () (interactive) (insert ";") (newline-and-indent) ) (defun brace-ret-brace () (interactive) (insert "{") (newline-and-indent) (newline-and-indent) (insert "}") (indent-for-tab-command) (newline-and-indent) (newline-and-indent) (previous-line) (previous-line) (previous-line) (indent-for-tab-command) ) (add-hook 'css-mode-hook (lambda () (setq css-indent-offset 2) (define-key css-mode-map ";" 'semicolon-ret) (define-key css-mode-map "{" 'brace-ret-brace) ))
less-hookのうえに上のコードを記述すると、きちんとインデント幅は2になりました。
これでいいのかなあ…