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

Wenn die Fehlerseite angezeigt wird, können Sie auf Dateinamen klicken und sie werden in Ihrem Editor geöffnet, wobei der Cursor auf der entsprechenden Zeile steht. Es können auch Dateien erstellt werden (Aktion create file) oder Fehler in ihnen behoben werden (Aktion fix it). Hierfür müssen Sie den Browser und das System konfigurieren.

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

Sie können die URL in der Variablen Tracy\Debugger::$editor ändern oder den Click-through durch Setzen von Tracy\Debugger::$editor = null deaktivieren.

Windows

  1. Laden Sie die entsprechenden Dateien aus dem Tracy-Repository auf die Festplatte herunter.
  2. Bearbeiten Sie open-editor.js und entfernen Sie die Kommentare oder bearbeiten Sie den Pfad zu Ihrem Editor in 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%"',

	...
}

...

Seien Sie vorsichtig und behalten Sie die doppelten Schrägstriche in den Pfaden bei.

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

Dazu führen Sie install.cmd aus. Sie müssen es als Administrator ausführen. Das Skript open-editor.js bedient nun das Protokoll editor://.

Um Links zu öffnen, die auf anderen Servern generiert wurden, z. B. auf einem Produktionsserver oder Docker, fügen Sie eine Remote-zu-Local-URL-Zuordnung zu open-editor.js hinzu:

	mappings: {
		// remote path: local path
		'/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 open-editor.sh und entfernen Sie die Kommentare oder ändern Sie den Pfad zu Ihrem Editor in der Variablen editor:
#!/bin/bash

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

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

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

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

...

Machen Sie ihn ausführbar:

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

Wenn der Editor, den Sie verwenden, nicht aus dem Paket installiert ist, hat die Binärdatei wahrscheinlich keinen Pfad in $PATH. Dies kann leicht korrigiert werden. Erstellen Sie im Verzeichnis ~/bin einen Symlink auf die Editor-Binärdatei.

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

Dazu führen Sie install.sh aus. Das Skript open-editor.js wird nun das Protokoll editor:// bedienen.

macOS

Editoren wie PhpStorm, TextMate usw. ermöglichen es Ihnen, Dateien über eine spezielle URL zu öffnen, die Sie nur angeben müssen:

// 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 den Standalone-Editor Tracy verwenden, fügen Sie die Zeile vor Tracy\Debugger::enable() ein, wenn Sie Nette verwenden, vor $configurator->enableTracy() in Bootstrap.php.

Leider funktionieren die Aktionen create file oder fix it nicht unter macOS.

Demos

Fehler behoben:

Erstellen einer neuen Datei:

Fehlersuche

  • In Firefox müssen Sie möglicherweise die Ausführung von benutzerdefinierten Protokollen in about:config zulassen, indem Sie network.protocol-handler.expose.editor auf false und network.protocol-handler.expose-all auf true setzen. Es sollte jedoch standardmäßig zugelassen sein.
  • Wenn nicht sofort alles funktioniert, geraten Sie nicht in Panik. Versuchen Sie, die Seite zu aktualisieren, den Browser oder den Computer neu zu starten. Das sollte helfen.
  • Siehe hier zur Behebung:

    Eingabefehler: Es gibt keine Skript-Engine für die Dateierweiterung “.js” Vielleicht haben Sie die “.js”-Datei mit einer anderen Anwendung verknüpft, nicht mit der JScript-Engine.

Ab Google Chrome Version 77 wird das Kontrollkästchen “Diese Art von Links immer in der zugehörigen App öffnen” nicht mehr angezeigt, wenn der Editor über einen Link geöffnet wird. Abhilfe für Windows: Erstellen Sie die Datei fix.reg:

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

Importieren Sie sie per Doppelklick und starten Sie Chrome neu.

Falls Sie weitere Probleme oder Fragen haben, fragen Sie im Forum.