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

  • W Firefoksie możesz potrzebować zezwolić 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 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.