読者です 読者をやめる 読者になる 読者になる

css-modeの中括弧

css-mode(cssm-version "0.11")を普段使っているのですが、中括弧挿入時の挙動が気に入らない。
中括弧挿入時に改行設定してるのですが(setq cssm-newline-before-closing-bracket t)、半角スペースが入り込むんですよね。

( _ はカーソル位置です。)

hoge { _
}

こうなってほしい。

hoge {_
}

なので、css-mode.elを少し変更しました。

(define-skeleton cssm-insert-curlies
  "Inserts a pair of matching curly parenthesises." nil
  ;; "{ " _ (if cssm-newline-before-closing-bracket "\n" " ")
  ; cssm-newline-before-closing-bracket の挙動を変更
  "{"
  (if cssm-newline-before-closing-bracket "" " ")
  _
  (if cssm-newline-before-closing-bracket "\n" " ")
  "}")
/* cssm-newline-before-closing-bracket t */
hoge {_
}

/* cssm-newline-before-closing-bracket nil */
hoge { _ }

となります。うれしい。

ついでに。init.elの設定はこんな感じです。

(setq indent-tabs-mode nil)
(setq-default indent-tabs-mode nil)
(setq default-tab-width 4)
(setq tab-width 4)
(setq-default tab-width 4)
...
;; css-mode
(autoload 'css-mode "css-mode" nil t)
(setq auto-mode-alist
      (cons '("\\.css\\'" . css-mode) auto-mode-alist))
(add-hook 'css-mode-hook
          '(lambda ()
             (setq cssm-indent-level 4)
             (setq cssm-indent-function #'cssm-c-style-indenter)
             (setq cssm-newline-before-closing-bracket t)
             ))

参考

css-modeのカーソル位置修正
http://d.hatena.ne.jp/hara_masa/20110306/1299374607