Wie öffnet man eine Datei aus Tracy im Editor? (Integration mit IDE)

Bei der Anzeige der Fehlerseite können Sie auf Dateinamen klicken, und diese öffnen sich in Ihrem Editor mit dem Cursor in der entsprechenden Zeile. Es ist auch möglich, Dateien zu erstellen (Aktion create file) oder Fehler darin zu korrigieren (Aktion fix it). Dazu müssen Browser und System konfiguriert werden.

Tracy öffnet Dateien über URLs der Form editor://open/?file=%file&line=%line, d.h. mit dem Protokoll editor://. Dafür registrieren wir einen eigenen Handler. Dies kann jede ausführbare Datei sein, die die Parameter verarbeitet und unseren bevorzugten Editor startet.

Die URL können Sie in der Variablen Tracy\Debugger::$editor ändern oder das Durchklicken durch Setzen von Tracy\Debugger::$editor = null deaktivieren.

Windows

  1. Laden Sie die entsprechenden Dateien aus dem Tracy-Repository auf Ihre Festplatte herunter.
  2. Bearbeiten Sie die Datei open-editor.js und kommentieren Sie im Array settings den Pfad zu Ihrem Editor aus und passen Sie ihn gegebenenfalls an:
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%"',

	...
}

...

Achtung, behalten Sie die doppelten Schrägstriche in den Pfaden bei.

3. Registrieren Sie den Handler für das editor:// Protokoll im System.

Dies tun Sie durch Ausführen der Datei install.cmd. Es muss als Administrator ausgeführt werden. Das Skript open-editor.js wird nun das Protokoll editor:// behandeln.

Um Links öffnen zu können, die auf anderen Servern generiert wurden, wie z.B. auf einem Live-Server oder in Docker, fügen Sie in open-editor.js noch das Mapping von Remote-URLs zu lokalen URLs hinzu:

	mappings: {
		// Remote-Pfad: lokaler Pfad
		'/var/www/nette.app': 'W:\\Nette.web\\_web',
	}

Linux

  1. Laden Sie die entsprechenden Dateien aus dem Tracy-Repository in das Verzeichnis ~/bin herunter.
  2. Bearbeiten Sie die Datei open-editor.sh und kommentieren Sie den Pfad zu Ihrem Editor in der Variablen editor aus und passen Sie ihn gegebenenfalls an.
#!/bin/bash

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

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

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

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

...

Machen Sie die Datei ausführbar:

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

Wenn der verwendete Editor nicht aus einem Paket installiert wurde, hat die Binärdatei wahrscheinlich keinen Pfad in $PATH. Das lässt sich leicht beheben. Erstellen Sie im Verzeichnis ~/bin einen Symlink zur Editor-Binärdatei.

3. Registrieren Sie den Handler für das editor:// Protokoll im System.

Dies tun Sie durch Ausführen der Datei install.sh. Das Skript open-editor.sh wird nun das Protokoll editor:// behandeln.

macOS

Editoren wie PhpStorm, TextMate usw. ermöglichen das Öffnen von Dateien über eine spezielle URL, die nur eingestellt werden muss:

// 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';

Wenn Sie Tracy eigenständig verwenden, fügen Sie die Zeile vor Tracy\Debugger::enable() ein, wenn Sie Nette verwenden, dann vor $configurator->enableTracy() in Bootstrap.php.

Die Aktionen create file oder fix it funktionieren leider unter macOS nicht.

Beispiele

Fehlerbehebung:

Dateierstellung:

Fehlerbehebung

  • In Firefox muss das Protokoll möglicherweise durch Einstellung von network.protocol-handler.expose.editor auf false und network.protocol-handler.expose-all auf true in about:config aktiviert werden.
  • Wenn es nicht sofort funktioniert, keine Panik und versuchen Sie, die Seite ein paar Mal zu aktualisieren, bevor Sie auf den Link klicken. Es wird losgehen!
  • Hier ist ein Link zur Behebung eines möglichen Fehlers: Input Error: There is no script engine for file extension ".js", Maybe you associated ".js" file to another app, not JScript engine. bzw. für die Dateiendung .js ist keine Skript-Engine verfügbar.

In Google Chrome ab Version 77 sehen Sie das Kontrollkästchen „Diesen Linktyp immer in der zugehörigen Anwendung öffnen“ nicht mehr, wenn der Editor über einen Link gestartet wird. Lösung für Windows: Erstellen Sie eine Datei fix.reg:

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

Importieren Sie sie durch Doppelklick und starten Sie Chrome neu.

Bei Fragen oder Anmerkungen wenden Sie sich bitte an das Forum.