Emacsのperl開発環境(2023年版)

今時 perl なんて使う人がいるんでしょうか?そう思ってたら自分がperlを書く羽目になったのでEmacsperl環境を更新しました.

設定をまとめます

lsp-mode

lsp (Language server)を設定します.lsp-modeを使います.

手順1: cpan 経由で Perl::LanguageServerをインストール

コマンドラインcpan を使います.これで perl 用の language server をインストールします.

$ cpan Perl::LanguageServer

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のコーディングがずいぶん楽になるはずです.

debug用設定

デバッグ用の設定です.lsp-modeといえばdap-mode ですが,dap-modeは perl に対応してないようです.

そこでデバッグは昔ながらの perldb を使います.Emacs上 で M-x perldb で起動できます

操作方法はgdbと大体同じです

  • "n" で next
  • "R" で再起動
  • p 変数名;

ぐらい覚えておけばデバッグできます.