今時 perl なんて使う人がいるんでしょうか?そう思ってたら自分がperlを書く羽目になったのでEmacsのperl環境を更新しました.
設定をまとめます
lsp-mode
lsp (Language server)を設定します.lsp-modeを使います.
cperl-mode + lsp-mode の設定
perlのコーディングは cperl-mode を使います.そして cperl-mode 経由で lsp-mode を起動します
(use-package cperl-mode :hook (cperl-mode . lsp-deferred) :config (cperl-set-style "PerlStyle") :bind ( ("<f1>" . cperl-perldoc-at-point) ("S-<f1>" . cperl-perldoc)) ) ;; ;; Emacs標準の perl-mode を cperl-mode に置き換える(remapする) ;; (add-to-list 'major-mode-remap-alist '(perl-mode . cperl-mode))
ポイントは3つあります
その1 major-mode-remap-alist を使う
Emacsはデフォルトで perl-mode を提供しています.そのため気をつけないと perl-mode と cperl-mode が混在してしまいます.確実に cperl-mode だけを使いたい場合は,major-mode-remap-alistを使って perl-mode を cperl-modeで置換します.
その2 lsp-mode は cperl-mode 経由で起動する
hook 経由で lsp-deferred を使うのがおすすめです.起動がスムースになります.
その3 cperl-perldoc と cperl-perldoc-at-point
cperl-mode といえば cperl-perldoc と cperl-perldoc-at-point です.どちらも perl のリファレンスマニュアル(ヘルプ)を表示する関数です.
上記設定では
- F1キーで,カーソル下の単語のリファレンスを表示 (cperl-perldoc-at-point)
- shift + F1 で,ヘルプの検索 (cper-perldoc)
を割り当てています
lsp-modeやlsp-uiのカスタマイズについては今回は割愛します.ちゃんと設定すると perlでも lsp-ui-peek-find-references などが普通に使えますので,perlのコーディングがずいぶん楽になるはずです.