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

  1. Stáhněte si příslušné soubory z repozitáře Tracy na disk.
  2. Upravte soubor open-editor.js a v poli settings 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

  1. Stáhněte si příslušné soubory z repozitáře Tracy do adresáře ~/bin.
  2. 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 na false a network.protocol-handler.expose-all na true 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. respektive pro 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.