Tracyからエディタでファイルを開く方法は? (IDEとの統合)

エラーページが表示されたとき、ファイル名をクリックでき、そしてそれらはあなたのエディタでカーソルが該当する行にある状態で開かれます。ファイルを作成する(アクション create file)ことや、それらの中でエラーを修正する(アクション fix it)こともできます。これを実現するためには、ブラウザとシステムを設定する必要があります。

Tracyは editor://open/?file=%file&line=%line の形式のURL経由でファイルを開きます。つまり editor:// プロトコルで。そのためにカスタムハンドラを登録します。それは任意の実行可能ファイルにすることができ、パラメータを「処理」し、そして私たちのお気に入りのエディタを起動します。

URLは変数 Tracy\Debugger::$editor で変更できます。または、Tracy\Debugger::$editor = null の設定によってクリックを無効にすることもできます。

Windows

  1. Tracyリポジトリから関連ファイルをディスクにダウンロードしてください。
  2. open-editor.js ファイルを編集し、settings 配列内でコメント解除し、そして必要であれば、エディタへのパスを編集してください:
var settings = {

	// PhpStorm
	editor: '"C:\\Program Files\\JetBrains\\PhpStorm 2018.1.2\\bin\\phpstorm64.exe" --line %line% "%file%"',
	title: 'PhpStorm',

	// NetBeans
	// editor: '"C:\\Program Files\\NetBeans 8.1\\bin\\netbeans.exe" "%file%:%line%" --console suppress',

	// Sublime Text 2
	// editor: '"C:\\Program Files\\Sublime Text 2\\sublime_text.exe" "%file%:%line%"',

	...
}

...

注意:パス内の二重スラッシュは保持してください。

3. システムに editor:// プロトコルのハンドラを登録してください。

これは install.cmd ファイルを実行することで行います。管理者として実行する必要があります。 スクリプト open-editor.js は今後 editor:// プロトコルを処理します。

他のサーバーで生成されたリンク、例えば本番サーバーやDocker内などで開けるようにするため、open-editor.js にリモートURLからローカルURLへのマッピングを追加してください:

	mappings: {
		// リモートパス: ローカルパス
		'/var/www/nette.app': 'W:\\Nette.web\\_web',
	}

Linux

  1. Tracyリポジトリから関連ファイルを ~/bin ディレクトリにダウンロードしてください。
  2. open-editor.sh ファイルを編集し、コメント解除し、そして必要であれば変数 editor でエディタへのパスを編集してください。
#!/bin/bash

# Emacs
#editor='emacs +$LINE "$FILE"'

# gVim
#editor='gvim +$LINE "$FILE"'

# gEdit
#editor='gedit +$LINE "$FILE"'

# Pluma
#editor='pluma +$LINE "$FILE"'

...

ファイルを実行可能にしてください:

chmod +x ~/bin/open-editor.sh

使用しているエディタがパッケージからインストールされていない場合、バイナリのパスが $PATH に含まれていない可能性があります。これは簡単に修正できます。~/bin ディレクトリにエディタのバイナリへのシンボリックリンクを作成してください。

3. システムに editor:// プロトコルのハンドラを登録してください。

これは install.sh ファイルを実行することで行います。スクリプト open-editor.sh は今後 editor:// プロトコルを処理します。

macOS

PhpStormやTextMateなどのエディタは、特別なURL経由でのファイルオープンを可能にします。それを設定するだけで十分です:

// PhpStorm
Tracy\Debugger::$editor = 'phpstorm://open?file=%file&line=%line';
// TextMate
Tracy\Debugger::$editor = 'txmt://open/?url=file://%file&line=%line';
// MacVim
Tracy\Debugger::$editor = 'mvim://open?url=file:///%file&line=%line';
// Visual Studio Code
Tracy\Debugger::$editor = 'vscode://file/%file:%line';

スタンドアロンのTracyを使用している場合、行を Tracy\Debugger::enable() の前に挿入してください。Netteの場合は、Bootstrap.php 内の $configurator->enableTracy() の前に挿入してください。

アクション create file または fix it は、残念ながらmacOSでは機能しません。

デモ

エラー修正:

ファイル作成:

トラブルシューティング

  • Firefoxでは、about:config で network.protocol-handler.expose.editorfalse に、そして network.protocol-handler.expose-alltrue に設定することでプロトコルを有効にする必要があるかもしれません。
  • すぐに機能しない場合、パニックにならないでください。そしてそのリンクをクリックする前にページを数回リフレッシュしてみてください。動き出します!
  • ここに、考えられるエラーの修正へのリンクがあります: Input Error: There is no script engine for file extension ".js", Maybe you associated ".js" file to another app, not JScript engine. または 拡張子 .js にはスクリプトエンジンが利用できません

Google Chrome バージョン77以降では、エディタがリンク経由で起動されたとき、「このタイプのリンクは常に関連付けられたアプリケーションで開く」チェックボックスは表示されなくなります。Windows向けの解決策:fix.reg ファイルを作成してください:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\URLWhitelist]
"123"="editor://*"

ダブルクリックしてインポートし、そしてChromeブラウザを再起動してください。

質問やコメントがある場合、フォーラム にお問い合わせください。