Dockerを使って開発している場合、Emacsエディタが動いている環境にPHPがインストールされていない場合もよくあると思います。
EmacsでPSR2のflycheckを使って文法チェックを動かすためには、phpcsコマンドが使える必要があるので、わざわざPHPからインストールするのかという問題が出てきます。
それを避けるために、phpcsのDockerコンテナを使ってEmacsでflycheckを動かす方法を紹介します。
※ Docker等のインストールは完了していることが前提となります。
※ Docker化によるオーバーヘッド等の検証はまだ行っておりません。
環境
Ubuntu: 18.04 / 20.04
Docker: 19.03 / 20.10
Emacs: 25.2 / 26.3
※ 確認できた環境は逐次追加しています。
セットアップ
以下の内容のファイルを作成します。
/usr/local/bin/phpcs
#!/bin/bash
docker run -i -v $(pwd):$(pwd) -w=$(pwd) --rm phpqa/phpcs $@
実行権限を与えます。
chmod 755 /usr/local/bin/phpcs
動作確認します。
phpcs --version
これでEmacsが正しく設定されていればflycheckが正しく動作するようになるはずです。
参考
ここでは細かい.emacs側の設定はスキップしますが、参考までにこのようにflycheckを有効化しています。
.emacs
(add-hook 'php-mode-hook
'(lambda ()
(setq flycheck-phpcs-standard "PSR2")
'php-enable-psr2-coding-style
))
(add-hook 'after-init-hook #'global-flycheck-mode)