PHPerの皆さんエディタは何をお使いでしょうか。
PhpStorm や Atom もよいと思うのですが、
ターミナルとの親和性の高さ、
direditの使いやすさがあり、
やっぱりEmacsはまだまだ使えるな〜と思っています。
今回はPHPerのためのさいてーげんのEmacs設定を
提案・紹介したいと思います。
"さいてーげん"の定義
- コードハイライト(php-mode)ができる
- 関数名補完(ac-php)ができる
- タグジャンプ(helm-gtags)ができる
- 構文エラーチェック(flycheck)ができる
環境・前提
- Mac である
- homebrew は入れてある
- Emacsキーバインドに慣れている(C-x M-x などの意味がわかる)
- Emacsの
M-x package-list-packages
の使い方がわかる
Emacsのインストール
homebrewを使うのが楽なのですが、意図したバージョンを入れたい為、
ソースコードからインストールします。
curl -O https://ftp.gnu.org/gnu/emacs/emacs-24.5.tar.gz
tar zxfp emacs-24.5.tar.gz
cd emacs-24.5
./configure --without-x
make
make install
- 24系にしているのは、最新の25系だと動かないモジュールがあったからです
ターミナルで新しいタブを立ち上げて、
バージョン24.5.1がインストールされているのを確認します
emacs --version
GNU Emacs 24.5.1
Copyright (C) 2015 Free Software Foundation, Inc.
GNU Emacs comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of Emacs
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING.
設定ファイルを作成する
emacs ~/.emacs
; C-h は delete だから
(global-set-key "\C-h" 'delete-backward-char)
; バックアップファイルを作らない
(setq make-backup-files nil)
(setq auto-save-default nil)
(setq next-line-add-newlines nil)
; 行列数を表示
(line-number-mode t)
(column-number-mode t)
; 対応する括弧を光らせる
(show-paren-mode t)
; スクロールは1行ずつ
(setq scroll-step 1)
; packageを使う
(require 'package)
; melpaも読み込む
(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t)
(package-initialize)
; 好きなテーマを読み込む
(load-theme 'manoj-dark t)
packageインストール
gtagsを使うため、globalをインストールしておきます。
brew install global
emacsを起動し、
emacs
M-x package-list-packages
package-list-packages で以下のパッケージをインストールします。
ac-php
helm-gtags
flycheck
~/.emacs に以下を付け足す
; タグジャンプ設定
(add-hook 'helm-gtags-mode-hook
'(lambda ()
;;入力されたタグの定義元へジャンプ
(local-set-key (kbd "M-t") 'helm-gtags-find-tag)
;;入力タグを参照する場所へジャンプ
(local-set-key (kbd "M-r") 'helm-gtags-find-rtag)
;;入力したシンボルを参照する場所へジャンプ
(local-set-key (kbd "M-s") 'helm-gtags-find-symbol)
;;タグ一覧からタグを選択し, その定義元にジャンプする
(local-set-key (kbd "M-l") 'helm-gtags-select)
;;ジャンプ前の場所に戻る
(local-set-key (kbd "C-t") 'helm-gtags-pop-stack)))
(add-hook 'php-mode-hook 'helm-gtags-mode)
; 関数名補完設定
(add-hook 'php-mode-hook '(lambda ()
(auto-complete-mode t)
(require 'ac-php)
(setq ac-sources '(ac-source-php ) )
(yas-global-mode 1)
(define-key php-mode-map (kbd "C-]") 'ac-php-find-symbol-at-point) ;goto define
(define-key php-mode-map (kbd "C-t") 'ac-php-location-stack-back ) ;go back
))
; 構文エラーチェック設定
(add-hook 'after-init-hook #'global-flycheck-mode)
これでインストールができました。
試し方
作業環境を適当な場所に用意します。
cd
mkdir tmp
cd tmp
ac-php
まずac-phpの定義ファイルを作成します。
touch .ac-php-conf.json
PHPファイルを適当な場所に用意します。
<?php
class test
{
function aaa()
{
}
}
<?php
include "test.php";
$t = new test();
$t->aaa();
function bbb()
{
}
ここまで保存したら、emacs上でac-phpタグをリメイクします。
M-x ac-php-remake-tags-all
gtags
Emacsを抜けて関数名補完データ作成コマンドを打ちます。
gtags -v
flycheck
設定はいりません。
試してみる
emacs test2.php
test2.php の test() 部分にカーソルを合わせ、
M-t
と打つと、モード行に
Find Definition: (default "test")
と出ますので、
エンターキーを押すと、
該当クラスファイルの定義場所にジャンプします!
C-t
と打つと、元の場所に戻ります。
M-l
で関数リストを出し、アクセスもできます。
また、
b
などと打ち始めると、
独自関数のbbb
や、その他標準関数の候補が現れ、
右側に引数情報など表示されたかと思います。
また、
構文エラーがあると、
シンタックスハイライトがされているかと思います。
これで、
- コードハイライト
- 関数名補完
- タグジャンプ
- 構文エラーチェック
を Emacs に設定することができました。