設定しているsmartparensが期待通りに動かずに困っていた。 具体的には、lispを編集するモード(emacs-lisp-modeとか)のときに、「’(シングルクオート)」がダブルクオートとかと同じく「’’」となってしまいかえって面倒なことに。
beforeの設定がこんな感じ。
最近は、 use-package
のかわりに leaf
を使っているが、use-packageでもだいたい同じだと思う。
(leaf smartparens
:straight t
:require t
:diminish smartparens-mode
:config
(leaf smartparens-config
:require t
:after smartparens
:hook
(prog-mode-hook . smartparens-mode)))
smartparensの設定は、 (require 'smartparens-config)
が楽だし確実、というのを見て、たしかにそのように設定してるんだけどなあ。。。って感じだった。
いろいろ見た結果、期待通りにrequireできてないんじゃないの?って結論に至るのだけど、そういったときのデバッグって大変ですよね。
そんな時に便利なのが、 leaf-expand
で、これはleafマクロで書かれた箇所を展開するとどうなるかがその場でわかる。
それにより、この展開後が
(prog1 'smartparens-config
(autoload #'smartparens-mode "smartparens-config" nil t)
(eval-after-load 'smartparens
'(progn
(add-hook 'prog-mode-hook #'smartparens-mode)
(eval-after-load 'smartparens-config
'(progn
(require 'smartparens-config))))))
であることがわかり、これってちゃんとrequireされないよね、ということがわかった。
ちなみに解決後の設定は以下な感じ。
(leaf smartparens
:straight t
:require smartparens-config
:diminish smartparens-mode
:hook
(prog-mode-hook . turn-on-smartparens-mode)
:config
(show-smartparens-global-mode t))
これだと展開後の姿も、以下のようになり、とても綺麗(なのか?)。
(prog1 'smartparens
(autoload #'turn-on-smartparens-mode "smartparens" nil t)
(straight-use-package 'smartparens)
(add-hook 'prog-mode-hook #'turn-on-smartparens-mode)
(eval-after-load 'smartparens
'(progn
(require 'smartparens-config)
(show-smartparens-global-mode t)
(diminish 'smartparens-mode))))
これは便利なので、今後も積極的に使っていきたい。
Share