Jak otevřít soubor v editoru z Tracy? (Integrace s IDE)
Při zobrazení chybové stránky lze kliknout na jména souborů a ty se otevřou ve vašem editoru s kurzorem
na příslušné řádce. Také lze soubory vytvářet (akce create file
) nebo v nich opravovat chyby (akce
fix it
). Aby se tak stalo, je potřeba prohlížeč a systém nakonfigurovat.
Tracy otevírá soubory přes URL ve tvaru editor://open/?file=%file&line=%line
, tj. s protokolem
editor://
. Pro ten si zaregistrujeme vlastní obsluhu. Tou může být libovolný spustitelný soubor, který
„přežvýká“ parametry a spustí náš oblíbený editor.
URL můžete změnit v proměnné Tracy\Debugger::$editor
, nebo proklikávání vypnout nastavením
Tracy\Debugger::$editor = null
.
Windows
- Stáhněte si příslušné soubory z repozitáře Tracy na disk.
- Upravte soubor
open-editor.js
a v polisettings
odkomentujte a případně upravte cestu k vašemu editoru:
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%"',
...
}
...
Pozor, ponechávejte dvojitá lomítka v cestách.
3. Zaregistrujte handler protokolu editor://
v systému.
To uděláte spuštěním soubor install.cmd
. Je potřeba ho spustit jako Správce. Skript
open-editor.js
bude nyní obsluhovat protokol editor://
.
Aby bylo možné otevírat odkazy vygenerované na jiných serverech, jako třeba na ostrém serveru nebo v Dockeru, doplňte
do open-editor.js
ještě mapování vzdálené URL na lokální:
mappings: {
// vzdálená cesta: lokální cesta
'/var/www/nette.app': 'W:\\Nette.web\\_web',
}
Linux
- Stáhněte si příslušné soubory z repozitáře Tracy do adresáře
~/bin
. - Upravte soubor
open-editor.sh
a odkomentujte a případně upravte cestu k vašemu editoru v proměnnéeditor
.
#!/bin/bash
# Emacs
#editor='emacs +$LINE "$FILE"'
# gVim
#editor='gvim +$LINE "$FILE"'
# gEdit
#editor='gedit +$LINE "$FILE"'
# Pluma
#editor='pluma +$LINE "$FILE"'
...
Učiňte soubor spustitelným:
chmod +x ~/bin/open-editor.sh
Pokud používaný editor nemáte nainstalovaný z balíku, pravděpodobně nebude mít binárka cestu v $PATH.
To lze jednoduše napravit. V adresáři ~/bin
si vytvořte symlink na binárku editoru.
3. Zaregistrujte handler protokolu editor://
v systému.
To uděláte spuštěním souboru install.sh
. Skript open-editor.sh
bude nyní obsluhovat protokol
editor://
.
macOS
Editory jako PhpStorm, TextMate apod. umožňují otevírání souborů přes speciální URL, kterou stačí nastavit:
// 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';
Pokud používáte samostatnou Tracy, vložte řádek před Tracy\Debugger::enable()
, pokud Nette, tak před
$configurator->enableTracy()
v Bootstrap.php
.
Akce create file
nebo fix it
bohužel na macOS nefungují.
Ukázky
Oprava chyby:
Vytvoření souboru:
Řešení potíží
- Ve Firefoxu může být potřeba protokol povolit nastavením
network.protocol-handler.expose.editor
nafalse
anetwork.protocol-handler.expose-all
natrue
v about:config. - Pokud vám to hned nepůjde, nepanikařte a zkuste párkrát refreshnout stránku před klikem na onen odkaz. Rozjede se to!
- Zde je link
na opravu případné chyby:
Input Error: There is no script engine for file extension ".js"
,Maybe you associated ".js" file to another app, not JScript engine.
respektivepro příponu .js není k dispozici žádný skriptovací stroj
.
V Google Chrome od verze 77 již neuvidíte zatržítko „Tento typ odkazů vždy otevírat v přidružené aplikaci“,
když je editor spuštěný prostřednictvím odkazu. Řešení pro Windows: vytvořte soubor fix.reg
:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\URLWhitelist]
"123"="editor://*"
Importujte jej dvojitým kliknutím a restartujte prohlížeč Chrome.
S případnými dotazy nebo připomínkami se prosím obraťte na fórum.