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

Podczas wyświetlania strony błędu można kliknąć na nazwy plików, a otworzą się one w Twoim edytorze z kursorem na odpowiedniej linii. Można również tworzyć pliki (akcja create file) lub naprawiać w nich błędy (akcja fix it). Aby to się stało, należy skonfigurować przeglądarkę i system.

Tracy otwiera pliki za pomocą URL w formacie editor://open/?file=%file&line=%line, tj. z protokołem editor://. Dla niego zarejestrujemy własną obsługę. Może to być dowolny plik wykonywalny, który “przetrawi” parametry i uruchomi nasz ulubiony edytor.

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

Windows

  1. Pobierz odpowiednie pliki z repozytorium Tracy na dysk.
  2. Edytuj plik open-editor.js i w tablicy settings odkomentuj i ewentualnie zmień ś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%"',

	...
}

...

Uwaga, pozostaw podwójne ukośniki w ścieżkach.

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

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

Aby można było otwierać linki wygenerowane na innych serwerach, takich jak serwer produkcyjny lub w Dockerze, dodaj do open-editor.js mapowanie zdalnego URL na lokalny:

	mappings: {
		// zdalna ścieżka: lokalna ścieżka
		'/var/www/nette.app': 'W:\\Nette.web\\_web',
	}

Linux

  1. Pobierz odpowiednie pliki z repozytorium Tracy do katalogu ~/bin.
  2. Edytuj plik open-editor.sh i odkomentuj oraz ewentualnie zmień ś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"'

...

Nadaj plikowi uprawnienia do wykonywania:

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

Jeśli używany edytor nie jest zainstalowany z pakietu, prawdopodobnie jego plik binarny nie będzie miał ścieżki w $PATH. Można to łatwo naprawić. W katalogu ~/bin utwórz link symboliczny do pliku binarnego edytora.

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

Zrobisz to, uruchamiając plik install.sh. Skrypt open-editor.sh będzie teraz obsługiwał protokół editor://.

macOS

Edytory takie jak PhpStorm, TextMate itp. umożliwiają otwieranie plików za pomocą specjalnego 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 samodzielnej Tracy, wstaw linię przed Tracy\Debugger::enable(), jeśli Nette, to przed $configurator->enableTracy() w Bootstrap.php.

Akcje create file lub fix it niestety nie działają na macOS.

Przykłady

Naprawa błędu:

Tworzenie pliku:

Rozwiązywanie problemów

  • W Firefoksie może być konieczne zezwolenie na protokół przez ustawienie network.protocol-handler.expose.editor na false i network.protocol-handler.expose-all na true w about:config.
  • Jeśli od razu nie zadziała, nie panikuj i spróbuj kilka razy odświeżyć stronę przed kliknięciem linku. Ruszy!
  • Tutaj jest link do naprawy ewentualnego błędu: Input Error: There is no script engine for file extension ".js", Maybe you associated ".js" file to another app, not JScript engine. lub dla rozszerzenia .js nie jest dostępny żaden silnik skryptowy.

W Google Chrome od wersji 77 nie zobaczysz już pola wyboru „Zawsze otwieraj tego typu linki w skojarzonej aplikacji”, gdy edytor jest uruchamiany za pomocą linku. Rozwiązanie dla Windows: utwórz plik fix.reg:

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

Zaimportuj go podwójnym kliknięciem i ponownie uruchom przeglądarkę Chrome.

W przypadku pytań lub uwag prosimy o kontakt na forum.