コーディング時にブレース間で改行したときの挙動が気に入らなかったので改善した。
状況
|
をカーソルだとして、下記のようなコード片があるとする:
func hoge() {|} // | はカーソル
問題は、ここで改行したときの挙動。 快適にコーディングするためには、以下のようになってほしい:
func hoge() {
| // | はカーソル
}
しかし実際には、下の状態になるのが不満だった:
func hoge() {
|} // | はカーソル
ふだん evil-mode でコーディングしているので、この状況から望む状態にするために毎回 ctrl-[
shitft-o
する必要があった。
いい加減いやになったので、これを改善した。
実装
(defun my-break-between-braces ()
(interactive)
(if
(and (eq ?} (char-after (point)))
(eq ?{(char-before (point))))
(progn
(c-context-open-line)
(c-context-line-break))
(newline-and-indent)))
メモ
実装は素朴で、カーソルが {
と }
の間にあれば、改行系の組み込み関数 (c-centext-open-line)
と (c-centext-line-break)
を呼び出すというもの。
カーソルがブレースの間になければ、ふつうに改行することにした。
これが C-m
で呼ばれるようにして完了。
(global-set-key (kbd "C-m") 'my-break-between-braces)