やっと時代に追いついた。なお、環境は macOS ( Terminal and Window ) なので、Windows や X Window のことは知らんです。
設定を全部捨てて作り直した
これまでの設定は Emacs 21 から設定を継ぎ足し継ぎ足した Emacs 21 - 24 まで対応するもので、mode 定義もそれぞれのバージョンでいい具合に動くように切り替えできるようにしてあった。
これは remote ( vagrant の向こうとかネットワークの向こうとか ) でも使えて、かつ手元の新し目の環境でも動くようにするために編み出した苦肉の策だったんだけど、もはや時代は Infra as Code で DevOps なので、これらの設定は完全に足枷でしかなくなっていた。そこで一気に捨てる機会を伺っていたんだけど、やっと実現できたというわけ。
予想はしていたけど、ほとんどコードを書かずに設定を終えることができた。いい時代になったもんだ。byte compile やら lazy load やら特に考えなくても起動速度も速くなってるみたいだし、よい環境だ。満足満足。
M-x customizeできなかったもの
今回はほとんどの設定を手書きの elisp ではなく M-x customize から行えた。例外は
- keybind
- font
くらい。それも以下くらいしかない。あれー Emacs のフォントの設定ってクソ面倒くさいイメージあったんだけど、あっさりしたもんだな。
;; keybindings
; buffer-menu -> bs-show
(global-set-key "\C-x\C-b" 'bs-show)
(global-set-key "\C-h" (quote delete-backward-char))
(when window-system
;; font
(setq default-frame-alist
(append (list
'(font . "Migu 1M 13")
)
default-frame-alist)
)
(define-key global-map [?\] "\\")
)
Terminal では相変わらず Monaco + ヒラギノなんだけど、一部の文字の大きさが揃わないので Window System くらいは完全な等幅にしておこうと思って Migu の設定を足してみた。
package.el便利
Emacs 23 も 24 も使っていたけど、ELPA についてはバージョン切り替え用の設定が悪さするのが分かっていたので使っていなかった。これで知らない elisp とか探しやすくなったし、簡単便利。
一応標準だと物足りなかったので melpa を足して、
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
mode を少々。追加したのは
- csv-mode
- yaml-mode
- markdown-mode
- php-mode
- rhtml-mode
- feature-mode
- vue-mode
- editorconfig
- company
くらいかな。apache-mode とか昔は使ってたけど、必要になってから入れればいいや。
editorconfig
やっと時代に(ry
t にしないと動かないので
(custom-set-variables
'(editorconfig-mode t)
が必要ですね。
mmm-mode
もともとあんまり好きじゃなくて使ってなかったんだけど、Single File Component な .vue とかあると対応できなきゃいけないので向き合うことにした。
inverse-videoが邪魔
(custom-set-faces
'(menu ((t (:inverse-video t))))
'(mmm-comment-submode-face ((t nil)))
'(mmm-declaration-submode-face ((t nil)))
'(mmm-default-submode-face ((t nil))))
editorconfigの設定が反映されない
editorconfig 側で追加設定が必要だった。今回できた .emacs ではこの部分がいちばんでかい。
..vue でいい具合に適用させるためには
(custom-set-variables
'(editorconfig-indentation-alist
(quote
((vue-mode js-indent-level css-indent-offset)
..
みたいな感じの設定が必要だった。なるほどなぁ。ちょっと不便。