トップ «前の日記(2019-06-15) 最新 次の日記(2019-07-01)» 編集

2019-06-30 [長年日記]

_ Emacs 21時代の設定を捨ててEmacs 26に移行した

やっと時代に追いついた。なお、環境は 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 の設定を足してみた。

Miguフォント : M+とIPAの合成フォント

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)
    ..

みたいな感じの設定が必要だった。なるほどなぁ。ちょっと不便。

Tags: Emacs