mieki256's diary



2014/07/29(火) [n年前の日記]

#1 [editor][prog] PHP用のナイスなエディタが見つからず

PHPの勉強をする際に、xyzzy でソースを書いてるのだけど、どうも使いづらいなと。

xyzzy + php-modeについて。 :

xyzzy の php-mode は、ヒアドキュメントを認識してくれないので、ヒアドキュメントを使ったソースに対して indent-region をすると酷いことになってしまう。

ググってみたところ、 _xyzzyの使い方が分からぬやし 励ましあえ その8 なるスレで説明が。
854 :名無しさん@お腹いっぱい。:2006/02/28(火) 00:22:49 ID:spgk6ozT0
>>848
php-modeのインデント関数はc-modeの流用だから
ヒアドキュメントでインデントが崩れるのはそういうものです。

855 :名無しさん@お腹いっぱい。:2006/02/28(火) 01:39:43 ID:B4R8wJa/0
>>848
ということで、php-mode 用に
c-indent-line
c-newline-and-indent
c-comment-indent
に代わるインデント関数を定義して、キーマップ (ed::*php-mode-map*) や
mode-specific-indent-command comment-indent-function へのバインドを
変更すれば解決です。

xyzzyの使い方が分からぬやし 励ましあえ その8 より

ハードル高い…。

xyzzy + multi-major-mode。 :

_multi-major-mode(しょぼしょぼすくりぷと xyzzy) を使えば1つのファイルの中で複数のメジャーモードを変更できるらしいので導入してみたり。multi-major-mode.l をDLして、site-lisp/ 以下に置く。 ~/.xyzzy に以下を追加してみたり。
;; multi-major-mode の設定

(load-library "multi-major-mode.l")

;; (setq ed::*multi-mode-running* t)
;; (setf *multi-mode-text-attribute* nil) 

(autoload 'html+-mode "html+-mode" t)
(pushnew '("\\.s?html?$" . html+-mode) *auto-mode-alist* :test 'equal)
 
(load-library "php-mode")
(pushnew '("\\.php$" . html+-mode) *auto-mode-alist*)

(defun multi-html+-mode ()
  (multi-major-mode-start t "html+-mode"
              '("<?php" "?>" "php-mode")
              '("<!--" "-->" "text-mode")
              '("<script" "</script>" "jscript-mode")
              ))

;; (add-hook '*html+-mode-hook* 'multi-html+-mode)
(add-hook 'ed::*html+-mode-hook* 'multi-html+-mode)
.php を開いて、<?php ?> の中に入ったり出たりすると、モードが切り替わってるように見えた。ただ、切り替わるたびに「Welcome mmm-mode」と表示されるのが気になる…。非表示にできないのかな…。

phpCodeBeautifierでソース整形を試みた。 :

_phpCodeBeautifier (phpCB) なる、PHPソースを整形してくれるツールが存在するらしいので試してみたり。phpCB-1.0.1-windows.zip をDLして解凍。phpCB.exe を任意の場所に置く。オプションを指定しつつ呼び出せばいいらしい。

_xyzzyでPHPの整形してみた | Priereluna という記事で、xyzzy + phpCB の設定が紹介されてたので、ありがたく使わせてもらったり。

しかし、phpCB.exe が変な動作をするような…。
  • if文の中のswitch文がインデントされない。される場面と、されない場面がある。
  • 変換後の各行末に「^M」(0x0dの制御文字)がつく。これもつく場合とつかない場合がある。どうも改行が「0x0d 0x0d 0x0a」になってる気がする。
日本語コメントが混じってるからマズいのかなと思って削ってみたけど変化無し。オプション指定がおかしいのかな…。

phpCB は、長い間メンテナンスもされてないし、ソースもクローズドだし、色々不具合があるという話も見かけたので、使うのは諦めた。

emacs + php-modeを試した。 :

NTEmacs 24.3.1 + php-mode を試してみたり。php-mode、 _php-completion をインストールしたような気がする。M-x package-list-packages でパッケージ一覧を表示して、C-s php- で検索して、Enter で詳細表示して、install をマウスでクリック、したような。

設定等は、 _PHP開発環境 on Emacs | Fusic Developers Weblog を参考にさせてもらったり。

しかし、emacs の php-mode も、ヒアドキュメントには対応してないようで、indent-region をすると酷いことに。php-mode 1.4.0 から対応してるという話も見かけたのだけど…。indent-region は別なのかな…。

emacs + mmm-mode。 :

_閑古鳥 -> 呟き -> emacs で PHP-mode と mmm-mode を使う で、mmm-mode なるものを使うと、一つのファイルの中の各部分によって、php-mode や html-mode を切り替えられると知ったのだけど。導入してみたものの、ちゃんと動いてるようには見えず。何か設定がおかしいのか、導入した版が古いのか。Version 20140211.2104 と表示されてるけど…。

emacs + web-mode。 :

_emacsでviewファイルをいじるならweb-modeを使うべき - UNIX的なアレ で、web-mode とやらが紹介されてたので試しに導入。

これも PHP のヒアドキュメントには未対応らしい。

eclipse 4.3を試用。 :

eclipse 4.3 + PDT ならヒアドキュメントが認識されてるように見えた。

また、phpソース上でブレークポイントを設定したりできるようで。php.ini の最後に以下のような記述を追加したらデバッグできた。
[XDebug]
zend_extension = "C:\xampp\xampp\php\ext\php_xdebug.dll"
;xdebug.remote_enable = 0
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
;xdebug.remote_host = "127.0.0.1"
xdebug.remote_host = "localhost"
xdebug.remote_port = 9000
xdebug.remote_log = "C:\xampp\xampp\php\logs\xdebug.log"
xdebug.collect_params = 1
xdebug.dump.GET = *
xdebug.dump.POST = *
xdebug.profiler_enable = 1
;xdebug.profiler_append = 0
;xdebug.profiler_enable_trigger = 0
;xdebug.profiler_output_name = "cachegrind.out.%t-%s"
xdebug.profiler_output_dir = "C:\xampp\xampp\tmp"
;xdebug.trace_output_dir = "C:\xampp\xampp\tmp"

ただ、eclipse は起動が遅くて、手軽に・気軽に書き始めるという感じにはならないあたりが、ちょっと…。

以上です。

過去ログ表示

Prev - 2014/07 - Next
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project