Xcode っぽい "{}" の補完をする elisp 作ったよー
Emacs では "{" の入力と同時に "}" を補完してくれるコマンドはありますが,とても使いにくい感があります.
Xcode では "{" を入力した直後に改行が入力されると "}" を補完してくれて,とてもすばらしいです.
この補完がめっちゃ便利だったので Emacs でも導入しようと頑張ってみました.
(defun newline-skeleton-pair-insert-brace () (interactive) (if (and (eq (char-before) ?{) (or (eq last-command 'yank) (eq last-command 'self-insert-command) (eq last-command 'c-electric-brace))) (progn (newline-and-indent) (save-excursion (insert "\n}") (indent-according-to-mode))) (newline-and-indent))) (add-hook 'c-mode-common-hook '(lambda () (local-set-key (kbd "RET") 'newline-skeleton-pair-insert-brace) ))
ハード コーディングが多いのが残念ですが,なんとか動いています.
だれか直してくれると嬉しいです.
smartchr.el とか skeleton-pair を使ってる人には不要だと思います.
Xcode の場合は,カーソル移動をしてもカーソルが "{" の直後戻っていれば "}" を補完してくれますが,Emacs でそれをやろうと思うと buffer-undo-list を参照しないといけないようで,まだまだ自分には無理そうでした.