Wie öffnet man eine Datei aus Tracy im Editor? (IDE-Integration)
Wenn die Fehlerseite angezeigt wird, können Sie auf Dateinamen klicken, und sie öffnen sich in Ihrem Editor mit
dem Cursor auf der entsprechenden Zeile. Dateien lassen sich auch anlegen (Aktion create file) oder Fehler darin
beheben (Aktion fix it). Dafür müssen Sie den Browser und das System konfigurieren.
Tracy öffnet Dateien über URLs der Form editor://open/?file=%file&line=%line, also über das Protokoll
editor://. Für dieses Protokoll müssen wir einen eigenen Handler registrieren. Dieser Handler kann eine beliebige
ausführbare Datei sein, die die Parameter verarbeitet und Ihren bevorzugten Editor startet.
Die URL können Sie in der Variablen Tracy\Debugger::$editor ändern oder das Anklicken mit
Tracy\Debugger::$editor = null abschalten.
Windows
- Laden Sie die passenden Dateien aus dem Repository von Tracy auf die Festplatte.
- Bearbeiten Sie die Datei
open-editor.jsund kommentieren Sie im Objektsettingsden Pfad zu Ihrem Editor ein und passen Sie ihn nötigenfalls 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%"',
...
}
...
Seien Sie vorsichtig und behalten Sie die doppelten Backslashes in den Pfaden bei.
3. Registrieren Sie den Handler für das Protokoll editor:// im System.
Das geschieht durch Ausführen von install.cmd. 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 erzeugt wurden, etwa auf einem Produktionsserver oder in Docker, ergänzen Sie in
open-editor.js eine Zuordnung von entfernten zu lokalen URLs:
mappings: {
// entfernter Pfad: lokaler Pfad
'/var/www/nette.app': 'W:\\Nette.web\\_web',
'/var/www/second.app': 'W:\\Second.web'
}
Unter Windows läuft open-editor.js im Windows Script Host, dessen JScript-Engine nur ECMA-262 3rd
Edition (1999) versteht. Halten Sie sich beim Bearbeiten des Skripts an altmodisches JavaScript: Verwenden Sie var
statt let oder const, vermeiden Sie Arrow Functions und setzen Sie hinter das letzte Element eines
Objekts kein abschließendes Komma. Moderne Syntax verursacht einen Skriptfehler, und das Protokoll editor:// öffnet
den Editor stillschweigend nicht.
Die Zuordnung von entfernten zu lokalen Pfaden können Sie auch auf der PHP-Seite über Debugger::$editorMapping festlegen, was unabhängig vom Editor-Handler und von der Plattform funktioniert.
Linux
- Laden Sie die passenden Dateien aus dem
Repository von Tracy in das Verzeichnis
~/bin. - Bearbeiten Sie die Datei
open-editor.shund kommentieren Sie in der Variableneditorden Pfad zu Ihrem Editor ein und passen Sie ihn nötigenfalls 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 sie ausführbar:
chmod +x ~/bin/open-editor.sh
Wenn der Editor, den Sie verwenden, nicht aus einem Paket installiert ist, liegt seine Binary womöglich nicht im
$PATH des Systems. Das lässt sich leicht beheben. Legen Sie im Verzeichnis ~/bin einen symbolischen
Link auf die Binary des Editors an.
3. Registrieren Sie den Handler für das Protokoll editor:// im System.
Das geschieht durch Ausführen der Datei install.sh. Das Skript open-editor.sh bedient nun das
Protokoll editor://.
macOS
Editoren wie PhpStorm, TextMate usw. erlauben das Öffnen von Dateien über eine spezielle URL, die Sie nur setzen 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 Tracy eigenständig verwenden, setzen Sie die Zeile vor Tracy\Debugger::enable(). Wenn Sie Nette
verwenden, setzen Sie sie in Bootstrap.php vor $configurator->enableTracy().
Leider funktionieren die Aktionen create file und fix it unter macOS nicht.
Demos
Einen Fehler beheben:
Eine neue Datei anlegen:
Fehlerbehebung
- In Firefox müssen Sie eventuell in
about:configdie Ausführung eigener Protokolle erlauben, indem Sienetwork.protocol-handler.expose.editorauffalseundnetwork.protocol-handler.expose-allauftruesetzen. Standardmäßig sollte es allerdings erlaubt sein. - Wenn es nicht sofort funktioniert, keine Panik. Versuchen Sie, die Seite vor dem Klick auf den Link ein paarmal neu zu laden, oder starten Sie den Browser oder den Rechner neu. Das sollte helfen.
- Hier ist ein Link zur
Behebung möglicher Fehler wie:
Input Error: There is no script engine for file extension ".js"oderMaybe you associated ".js" file to another app, not JScript engine.
Ab Google Chrome Version 77 sehen Sie das Kästchen “Always open these types of links in the associated app” nicht mehr,
wenn der Editor über einen Link gestartet wird. Behelfslösung für Windows: Legen Sie die Datei fix.reg an:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome]
"AutoLaunchProtocolsFromOrigins"="[{\"allowed_origins\": [\"*\"],\"protocol\": \"editor\"}]"
Importieren Sie sie per Doppelklick und starten Sie Chrome neu. Die Richtlinie AutoLaunchProtocolsFromOrigins
unterdrückt den Bestätigungsdialog des Browsers vollständig. Das Skript install.cmd setzt das automatisch,
einschließlich einer auskommentierten Zeile für Vivaldi (dieselbe Richtlinie unter
HKLM\SOFTWARE\Policies\Vivaldi).
Bei weiteren Fragen oder Anregungen besuchen Sie bitte das Forum.