LoginSignup
4
5

More than 3 years have passed since last update.

Emacs PHP Modeユーザーマニュアル (Draft)

Posted at

Emacs PHP Mode(php-mode)はEmacsでのPHPスクリプトの編集のためのメジャーモードです。

あと、この記事は書きかけです。

インストール方法

php-mode開発の歴史的経緯から、Emacs本体に標準添付されていません。しかし、標準のパッケージ機能を使ってMELPAから簡単にインストールできます。

package / use-package を使ったインストール

~/.emacs.d/init.el に以下のような記述(どちらか、または両方)があることを確認してください。

init.el
(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/") t)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)

その上で、use-packageが導入済みであればインストールは簡単です。

init.el
(use-package php-mode :ensure t)

Emacsでinit.elを編集しているなら、 (use-package php-mode :ensure t)の直後にカーソルを移動してキーボードでC-x C-e(control+e control+xを順に押す)と、その場でPHP Modeのインストールが始まります。

packageまたはuse-packageでインストールしたパッケージは、通常~/.emacs.d/elpa/に配置されます。もし.emacs.dディレクトリをGitで管理しているなら、このファイルは.gitignoreで管理の対象外にすることを推奨します。

Lispパッケージは継続的な更新によって改善されているので、よりよいユーザー体験を求めるにはインストールよりも定期的にアップデートすることが重要です。Emacs標準のパッケージ機能またはuse-packageでインストールした場合、以下の手順でパッケージを更新できます。

  1. M-x list-packages でパッケージ一覧を表示する
  2. このリスト上でキーボードの U (Shift + u)を押して、更新されたパッケージをマークする
  3. 続いてキーボードの x を押して更新を実行する
  4. Emacsを再起動する

MELPA版のPHP Modeには実験的な実装が含まれていることがあります。より安定性を求める場合は :pin melpa-stable を設定することで、正式なバージョンリリース版がインストールされるようになります。

init.el
(use-package php-mode :ensure t :pin melpa-stable)

手動インストール

emacs-php/php-modegit clone するか、Releases · emacs-php/php-modeからzipまたはtarをダウンロードして展開してください。展開したあと make コマンドを実行すると、Lispファイルのバイトコンパイルとphp-mode-autoloads.elが生成されます。

init.el
(when (file-directory-p "~/path/to/php-mode")
  (load "~/path/to/php-mode/php-mode-autoloads.el"))

;; 通常、以下のコードはどれも書く必要がありません
;; (require 'php-mode)
;; (add-to-list 'load-path (expand-file-name "~/path/to/php-mode"))
;; (add-to-list 'auto-mode-alist '("\\.php\\'" . php-mode))

OSのパッケージシステムからのインストール

Debian 10(Buster)またはUbuntu 19.04(Disco Dingo)以降では、 apt install elpa-php-mode でインストールすることができます。しかしこれらのパッケージは少々古いため注意が必要です。Emacsの個人設定を持ち込めないサーバー運用作業での一時的な利用などには利用できますが、それ以外の環境ではEmacsのパッケージ機能などで最新バージョンの利用を強く推奨します。

以前のDebianおよびUbuntuにはPHP Modeはphp-elispというパッケージ名で収録されていました。しかしこのパッケージは2014年から更新されていなかったため問題が多く、強く非推奨です。

関連パッケージの導入

PHPStanを適切に設定することで、PhpStormなどの商用製品を上回る精度のコーディング時エラーチェックが可能になります。PHPで開発が捗るリアルタイムエラーチェックに書きました。

カスタマイズ

設定例

init.el
(defun my-php-mode-setup ()
  "My PHP-mode hook."
  (subword-mode 1)
  (setq show-trailing-whitespace t)

  (setq-local page-delimiter "\\_<\\(class\\|function\\|namespace\\)\\_>.+$")

  (require 'flycheck-phpstan)
  (flycheck-mode t)
  (add-to-list 'flycheck-disabled-checkers 'php-phpmd)
  (add-to-list 'flycheck-disabled-checkers 'php-phpcs))

(use-package php-mode
  :hook ((php-mode . my-php-mode-setup))
  :custom
  (php-manual-url 'ja)
  (php-mode-coding-style 'psr2)
  (php-mode-template-compatibility nil)
  :config
  (bind-key "[" (smartchr "[]" "array()" "[[]]") php-mode-map)
  (bind-key "]" (smartchr "array " "]" "]]")     php-mode-map)
  ;; (bind-key "C-}" 'cedit-barf php-mode-map)
  ;; (bind-key "C-)" 'cedit-slurp php-mode-map)
  (bind-key "C-c C-c" 'psysh-eval-region         php-mode-map)
  (bind-key "<f6>" 'phpunit-current-project      php-mode-map)
  (bind-key "C-c C--" 'php-current-class php-mode-map)
  (bind-key "C-c C-=" 'php-current-namespace php-mode-map))
4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5