Nette Documentation Preview

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

.[perex]
Gdy wyświetli się strona błędu, możesz kliknąć w nazwy plików, a otworzą się w Twoim edytorze z kursorem na odpowiedniej linii. Pliki można też tworzyć (akcja `create file`) albo naprawiać w nich błędy (akcja `fix it`). Żeby to działało, trzeba skonfigurować przeglądarkę i system.

Tracy otwiera pliki przez URL-e postaci `editor://open/?file=%file&line=%line`, czyli za pomocą protokołu `editor://`. Musimy zarejestrować dla tego protokołu własny handler. Handlerem tym może być dowolny plik wykonywalny, który przetworzy parametry i uruchomi Twój ulubiony edytor.

URL możesz zmienić w zmiennej `Tracy\Debugger::$editor`, a klikalność wyłączyć, ustawiając `Tracy\Debugger::$editor = null`.


Windows
=======

1. Pobierz na dysk odpowiednie pliki "z repozytorium Tracy":https://github.com/nette/tracy/tree/master/tools/open-in-editor/windows.

2. Zmodyfikuj plik `open-editor.js` i w obiekcie `settings` odkomentuj, a w razie potrzeby zmodyfikuj ścieżkę do swojego edytora:

```js
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 i zachowaj w ścieżkach podwójne odwrotne ukośniki.

3. Zarejestruj w systemie handler dla protokołu `editor://`.

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

Żeby otwierać odnośniki generowane na innych serwerach, na przykład na serwerze produkcyjnym albo w Dockerze, dodaj do `open-editor.js` mapowanie ścieżek zdalnych na lokalne:

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

.[caution]
W Windows `open-editor.js` działa pod Windows Script Host, którego silnik JScript rozumie tylko ECMA-262 3rd Edition (1999). Modyfikując skrypt, trzymaj się staroszkolnego JavaScriptu: używaj `var` zamiast `let` czy `const`, unikaj funkcji strzałkowych i nie zostawiaj przecinka za ostatnią pozycją obiektu. Nowoczesna składnia powoduje błąd skryptu, a protokół `editor://` po cichu nie otworzy edytora.

.[note]
Mapowanie ścieżek zdalnych na lokalne możesz zdefiniować także po stronie PHP przez [Debugger::$editorMapping |configuring#Pozostałe], co działa niezależnie od handlera edytora i platformy.


Linux
=====

1. Pobierz odpowiednie pliki "z repozytorium Tracy":https://github.com/nette/tracy/tree/master/tools/open-in-editor/linux do katalogu `~/bin`.

2. Zmodyfikuj plik `open-editor.sh` i odkomentuj, a w razie potrzeby zmodyfikuj ścieżkę do swojego edytora w zmiennej `editor`.

```shell
#!/bin/bash

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

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

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

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

...
```

Nadaj mu prawo wykonywania:

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

.[note]
Jeśli edytor, którego używasz, nie jest zainstalowany z pakietu, jego binarka może nie być w systemowym `$PATH`. Da się to łatwo naprawić. W katalogu `~/bin` utwórz dowiązanie symboliczne do binarki edytora.


3. Zarejestruj w systemie handler dla protokołu `editor://`.

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


macOS
=====

Edytory takie jak PhpStorm, TextMate itd. pozwalają otwierać pliki przez specjalny URL, który wystarczy ustawić:

```php
// 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, umieść tę linię przed `Tracy\Debugger::enable()`. Jeśli używasz Nette, umieść ją przed `$configurator->enableTracy()` w `Bootstrap.php`.

Niestety akcje `create file` i `fix it` w macOS nie działają.


Dema
====

Naprawa błędu:

<iframe width="560" height="315" src="https://www.youtube.com/embed/3ITT4mC0Eq4?rel=0&amp;showinfo=0" frameborder="0" allow="encrypted-media" allowfullscreen></iframe>

Utworzenie nowego pliku:

<iframe width="560" height="315" src="https://www.youtube.com/embed/AJ_FUivAGZQ?rel=0&amp;showinfo=0" frameborder="0" allow="encrypted-media" allowfullscreen></iframe>


Rozwiązywanie problemów
=======================

- W Firefoksie możesz potrzebować [zezwolić |http://kb.mozillazine.org/Register_protocol#Firefox_3.5_and_above] na uruchamianie własnych protokołów w `about:config`, ustawiając `network.protocol-handler.expose.editor` na `false`, a `network.protocol-handler.expose-all` na `true`. Domyślnie powinno to być jednak dozwolone.
- Jeśli nie zadziała od razu, nie panikuj. Spróbuj kilka razy odświeżyć stronę przed kliknięciem w odnośnik albo zrestartuj przeglądarkę czy komputer. To powinno pomóc.
- Tutaj jest [odnośnik|https://www.winhelponline.com/blog/error-there-is-no-script-engine-for-file-extension-when-running-js-files/] do naprawy ewentualnych błędów typu: `Input Error: There is no script engine for file extension ".js"` albo `Maybe you associated ".js" file to another app, not JScript engine.`

Od wersji Google Chrome 77 nie zobaczysz już przy uruchamianiu edytora odnośnikiem checkboxa "Zawsze otwieraj tego typu odnośniki w powiązanej aplikacji". Obejście dla Windows: utwórz plik `fix.reg`:

```
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome]
"AutoLaunchProtocolsFromOrigins"="[{\"allowed_origins\": [\"*\"],\"protocol\": \"editor\"}]"
```
Zaimportuj go podwójnym kliknięciem i zrestartuj Chrome. Polityka `AutoLaunchProtocolsFromOrigins` całkowicie wyłącza okno potwierdzenia przeglądarki. Skrypt `install.cmd` ustawia to automatycznie, wraz z zakomentowaną linią dla Vivaldi (ta sama polityka pod `HKLM\SOFTWARE\Policies\Vivaldi`).


Z dalszymi pytaniami albo sugestiami zajrzyj na [forum |https://forum.nette.org].

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

Gdy wyświetli się strona błędu, możesz kliknąć w nazwy plików, a otworzą się w Twoim edytorze z kursorem na odpowiedniej linii. Pliki można też tworzyć (akcja create file) albo naprawiać w nich błędy (akcja fix it). Żeby to działało, trzeba skonfigurować przeglądarkę i system.

Tracy otwiera pliki przez URL-e postaci editor://open/?file=%file&line=%line, czyli za pomocą protokołu editor://. Musimy zarejestrować dla tego protokołu własny handler. Handlerem tym może być dowolny plik wykonywalny, który przetworzy parametry i uruchomi Twój ulubiony edytor.

URL możesz zmienić w zmiennej Tracy\Debugger::$editor, a klikalność wyłączyć, ustawiając Tracy\Debugger::$editor = null.

Windows

  1. Pobierz na dysk odpowiednie pliki z repozytorium Tracy.
  2. Zmodyfikuj plik open-editor.js i w obiekcie settings odkomentuj, a w razie potrzeby zmodyfikuj ś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 i zachowaj w ścieżkach podwójne odwrotne ukośniki.

3. Zarejestruj w systemie handler dla protokołu editor://.

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

Żeby otwierać odnośniki generowane na innych serwerach, na przykład na serwerze produkcyjnym albo w Dockerze, dodaj do open-editor.js mapowanie ścieżek zdalnych na lokalne:

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

W Windows open-editor.js działa pod Windows Script Host, którego silnik JScript rozumie tylko ECMA-262 3rd Edition (1999). Modyfikując skrypt, trzymaj się staroszkolnego JavaScriptu: używaj var zamiast let czy const, unikaj funkcji strzałkowych i nie zostawiaj przecinka za ostatnią pozycją obiektu. Nowoczesna składnia powoduje błąd skryptu, a protokół editor:// po cichu nie otworzy edytora.

Mapowanie ścieżek zdalnych na lokalne możesz zdefiniować także po stronie PHP przez Debugger::$editorMapping, co działa niezależnie od handlera edytora i platformy.

Linux

  1. Pobierz odpowiednie pliki z repozytorium Tracy do katalogu ~/bin.
  2. Zmodyfikuj plik open-editor.sh i odkomentuj, a w razie potrzeby zmodyfikuj ś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 mu prawo wykonywania:

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

Jeśli edytor, którego używasz, nie jest zainstalowany z pakietu, jego binarka może nie być w systemowym $PATH. Da się to łatwo naprawić. W katalogu ~/bin utwórz dowiązanie symboliczne do binarki edytora.

3. Zarejestruj w systemie handler dla protokołu editor://.

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

macOS

Edytory takie jak PhpStorm, TextMate itd. pozwalają otwierać pliki przez specjalny 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, umieść tę linię przed Tracy\Debugger::enable(). Jeśli używasz Nette, umieść ją przed $configurator->enableTracy() w Bootstrap.php.

Niestety akcje create file i fix it w macOS nie działają.

Dema

Naprawa błędu:

Utworzenie nowego pliku:

Rozwiązywanie problemów

Od wersji Google Chrome 77 nie zobaczysz już przy uruchamianiu edytora odnośnikiem checkboxa “Zawsze otwieraj tego typu odnośniki w powiązanej aplikacji”. Obejście dla Windows: utwórz plik fix.reg:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome]
"AutoLaunchProtocolsFromOrigins"="[{\"allowed_origins\": [\"*\"],\"protocol\": \"editor\"}]"

Zaimportuj go podwójnym kliknięciem i zrestartuj Chrome. Polityka AutoLaunchProtocolsFromOrigins całkowicie wyłącza okno potwierdzenia przeglądarki. Skrypt install.cmd ustawia to automatycznie, wraz z zakomentowaną linią dla Vivaldi (ta sama polityka pod HKLM\SOFTWARE\Policies\Vivaldi).

Z dalszymi pytaniami albo sugestiami zajrzyj na forum.