Jak otworzyć plik w edytorze Tracy (integracja z IDE)?

Gdy pojawi się strona z błędami, możesz kliknąć na nazwy plików i otworzą się one w Twoim edytorze z kursorem na odpowiedniej linii. Możesz także tworzyć pliki (akcja create file) lub poprawiać w nich błędy (akcja fix it). Aby to zrobić, musisz skonfigurować przeglądarkę i system.

Tracy otwiera pliki za pośrednictwem adresów URL o postaci editor://open/?file=%file&line=%line, czyli za pomocą protokołu editor://. Rejestrujemy niestandardowy handler dla tego jednego. Może to być dowolny plik wykonywalny, który “przeżuwa” parametry i uruchamia nasz ulubiony edytor.

Możesz zmienić adres URL w zmiennej Tracy\Debugger::$editor, lub wyłączyć kliknięcie ustawiając Tracy\Debugger::$editor = null.

Windows

  1. Pobranie na dysk odpowiednich plików z repozytorium Tracy.

2. Edytuj plik open-editor.js i odkomentuj pole settings i w razie potrzeby edytuj ścieżkę do swojego edytora:

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%"',

	...
}

...

Uważaj, aby zostawić podwójne ukośniki w ścieżkach.

3. Zarejestruj w systemie obsługę dziennika editor://.

Robisz to uruchamiając plik install.cmd. Musisz uruchomić go jako Administrator. Skrypt open-editor.js będzie teraz obsługiwał protokół editor://.

Aby otworzyć linki wygenerowane na innych serwerach, takich jak serwer produkcyjny lub Docker, należy dodać mapowanie zdalnego adresu URL na lokalny do open-editor.js:

	mappings: {
		// remote path: local path
		'/var/www/nette.app': 'W:\\Nette.web\\_web',
	}

Linux

  1. pobrać odpowiednie pliki z repozytorium Tracy do katalogu ~/bin.
  2. Edytuj plik open-editor.sh i odkomentuj i ewentualnie edytuj ścieżkę do swojego edytora w zmiennej editor.
#!/bin/bash

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

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

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

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

...

Spraw, by plik był wykonywalny:

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

Jeśli edytor, którego używasz, nie jest zainstalowany z pakietu, binarny prawdopodobnie nie będzie miał ścieżki w $PATH. Można to łatwo naprawić. Tworzy symlink do binarki edytora w katalogu ~/bin.

3. Zarejestruj w systemie obsługę dziennika editor://.

Dokonuje się tego poprzez uruchomienie pliku install.sh Skrypt open-editor.sh będzie teraz obsługiwał protokół editor://.

macOS

Edytory takie jak PhpStorm, TextMate itp. pozwalają na otwieranie plików poprzez specjalny adres URL, który wystarczy ustawić:

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

Jeśli używasz samodzielnych Tracy, umieść linię przed Tracy\Debugger::enable(), jeśli Nette, przed $configurator->enableTracy() w Bootstrap.php.

Niestety, akcje create file lub fix it nie działają na macOS.

Przykłady

Naprawa błędów:

Tworzenie plików:

Rozwiązywanie problemów

  • W Firefoksie może być konieczne włączenie protokołu poprzez ustawienie network.protocol-handler.expose.editor na false oraz network.protocol-handler.expose-all na true w about:config.
  • Jeśli to nie zadziała od razu, nie panikuj i spróbuj odświeżyć stronę kilka razy przed kliknięciem na link. To zadziała!
  • Tutaj jest link, aby naprawić wszelkie błędy:

    Input Error: There is no script engine for file extension “.js” Być może skojarzyłeś plik “.js” z inną aplikacją, a nie z silnikiem JScript.

W Google Chrome od wersji 77 nie będzie już widoczne pole wyboru “Zawsze otwieraj ten typ linku w powiązanej aplikacji”, gdy edytor jest uruchamiany przez link. Rozwiązanie dla systemu Windows: utwórz plik fix.reg:

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

Kliknij dwukrotnie, aby go zaimportować i ponownie uruchom Chrome.

Wszelkie pytania i uwagi proszę kierować na forum.