- 若干詰まったのでメモ
TL;DR
- 課金が必要
- 古い場合はアップグレードが必要
-
NTEmacsだと若干調子悪い
- Emacs on WSLを使おう
intelephense is 何
-
PHPのLanguage Server実装
- Language ServerについてはLanguage Server Protocolなどで調べると良いと思います
-
一言で言うと、エディタの機能を抽象化した感じのやつ
-
各言語やりたいことは大体同じ
- リネーム
- 定義ジャンプ
- 補完
- etc.
-
- npmでインストールできる
npm install --global intelephense
詳細
課金する
- 公式
-
2019/09/15現在、下記機能の利用には課金が必要
- Rename
- Code folding
- Find all implementations
- Go to declaration
- Go to type definition
- 課金せずに上記機能を利用しようとすると、下記のようなメッセージが出る
lsp-rename: Capability not supported by the language server: "renameProvider"
-
リネームにすら金とるのか!?と思いつつ課金する
- PayPal利用可能
- 2019年時点で、1000円で永久に複数端末で利用可能
- 通常の社会人なら悩んでる時間の時給分のほうが無駄でしょう
ライセンス認証する
- メールでライセンスキー文字列が届く
- 使い方は公式FAQ
-
いくつかの有効化方法が提示されている
workspace/configuration
capabilityを使う方法- Language Server起動オプションに渡す方法
- ホームディレクトリに
licence.txt
を置く方法
-
1つめ、2つめは下記理由につき避けた
- init.el上での設定が面倒
- emacs.d/をgit管理においているため、そもそもinit.elにライセンスキーを載せたくない
-
3つめの方法をとった
-
windows
%USERPROFILE%/intelephense/licence.txt
-
linux
~/intelephense/licence.txt
-
intelephenseをアップグレードする
- これに気づかず若干ハマった
-
1.1系だとまだrename機能が載っていなかったっぽい?
- いつ載ったのかは調べてない
npm upgrade --global intelephense
/usr/local/bin/intelephense -> /usr/local/lib/node_modules/intelephense/lib/intelephense.js
- js-beautify@1.10.0 node_modules/intelephense/node_modules/js-beautify
- minimist@0.0.8 node_modules/intelephense/node_modules/mkdirp/node_modules/minimist
- vscode-uri@1.0.8 node_modules/intelephense/node_modules/vscode-languageserver/node_modules/vscode-uri
/usr/local/lib
└── intelephense@1.2.3
LSP Serverを再起動する
M-x lsp-server-restart
- ライセンス認証が通ると、
~/intelephense/intelephense_licence_key_<ライセンスキー>
ファイルが生成される - rename機能等が使える
[f:id:wand_ta:20190916002554g:plain]
使ってみて
- NTEmacsだと変数名がブッ壊れたりしてちょっと調子悪い
- ubuntuではいい感じだった
- Emacs on WSLを使おう