Nette Documentation Preview

syntax
Come aprire un file nell'editor da Tracy? (integrazione con l'IDE)
******************************************************************

.[perex]
Quando viene mostrata la pagina di errore, potete cliccare sui nomi dei file e si apriranno nel vostro editor con il cursore sulla riga corrispondente. Si possono anche creare file (azione `create file`) oppure correggervi errori (azione `fix it`). Perché funzioni bisogna configurare il browser e il sistema.

Tracy apre i file tramite URL della forma `editor://open/?file=%file&line=%line`, cioè con il protocollo `editor://`. Per questo protocollo dobbiamo registrare un handler personalizzato. Questo handler può essere un file eseguibile qualsiasi che elabora i parametri e avvia l'editor preferito.

L'URL lo potete cambiare nella variabile `Tracy\Debugger::$editor`, oppure disattivare il click impostando `Tracy\Debugger::$editor = null`.


Windows
=======

1. Scaricate su disco i file appropriati "dal repository di Tracy":https://github.com/nette/tracy/tree/master/tools/open-in-editor/windows.

2. Modificate il file `open-editor.js` e nell'oggetto `settings` decommentate ed eventualmente correggete il percorso del vostro editor:

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

	...
}

...
```

Fate attenzione a mantenere le doppie barre rovesciate nei percorsi.

3. Registrate nel sistema l'handler per il protocollo `editor://`.

Lo si fa eseguendo `install.cmd`. **Dovete eseguirlo come amministratore.** Lo script `open-editor.js` servirà da ora il protocollo `editor://`.

Per poter aprire i link generati su altri server, per esempio su un server di produzione o in Docker, aggiungete a `open-editor.js` la mappatura degli URL remoti su quelli locali:

```js
	mappings: {
		// percorso remoto: percorso locale
		'/var/www/nette.app': 'W:\\Nette.web\\_web',
		'/var/www/second.app': 'W:\\Second.web'
	}
```

.[caution]
Su Windows `open-editor.js` gira sotto il Windows Script Host, il cui motore JScript comprende solo ECMA-262 3rd Edition (1999). Quando modificate lo script, attenetevi al JavaScript vecchio stile: usate `var` invece di `let` o `const`, evitate le arrow function e non mettete la virgola dopo l'ultimo elemento di un oggetto. La sintassi moderna provoca un errore dello script e il protocollo `editor://` smette silenziosamente di aprire l'editor.

.[note]
La mappatura da remoto a locale la potete definire anche dal lato PHP con [Debugger::$editorMapping |configuring#Altro], che funziona indipendentemente dall'handler dell'editor e dalla piattaforma.


Linux
=====

1. Scaricate i file appropriati "dal repository di Tracy":https://github.com/nette/tracy/tree/master/tools/open-in-editor/linux nella directory `~/bin`.

2. Modificate il file `open-editor.sh` e nella variabile `editor` decommentate ed eventualmente correggete il percorso del vostro editor.

```shell
#!/bin/bash

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

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

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

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

...
```

Rendetelo eseguibile:

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

.[note]
Se l'editor che usate non è installato da un pacchetto, il suo binario potrebbe non trovarsi nel `$PATH` di sistema. Si rimedia facilmente: nella directory `~/bin` create un collegamento simbolico al binario dell'editor.


3. Registrate nel sistema l'handler per il protocollo `editor://`.

Lo si fa eseguendo il file `install.sh`. Lo script `open-editor.sh` servirà da ora il protocollo `editor://`.


macOS
=====

Editor come PhpStorm, TextMate ecc. permettono di aprire i file con un URL speciale, che basta impostare:

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

Se usate Tracy da sola, mettete la riga prima di `Tracy\Debugger::enable()`. Se usate Nette, mettetela prima di `$configurator->enableTracy()` in `Bootstrap.php`.

Purtroppo su macOS le azioni `create file` e `fix it` non funzionano.


Dimostrazioni
=============

Correzione di un errore:

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

Creazione di un nuovo file:

<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>


Risoluzione dei problemi
========================

- In Firefox può essere necessario [consentire |http://kb.mozillazine.org/Register_protocol#Firefox_3.5_and_above] l'esecuzione dei protocolli personalizzati in `about:config` impostando `network.protocol-handler.expose.editor` a `false` e `network.protocol-handler.expose-all` a `true`. Dovrebbe però essere consentita per impostazione predefinita.
- Se non funziona subito, niente panico. Provate ad aggiornare la pagina qualche volta prima di cliccare il link, oppure riavviate il browser o il computer. Dovrebbe bastare.
- Ecco un [link|https://www.winhelponline.com/blog/error-there-is-no-script-engine-for-file-extension-when-running-js-files/] per correggere eventuali errori come: `Input Error: There is no script engine for file extension ".js"` oppure `Maybe you associated ".js" file to another app, not JScript engine.`

Da Google Chrome versione 77 non vedrete più la casella "Apri sempre questi tipi di link nell'app associata" quando l'editor viene avviato da un link. Soluzione per Windows: create il file `fix.reg`:

```
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome]
"AutoLaunchProtocolsFromOrigins"="[{\"allowed_origins\": [\"*\"],\"protocol\": \"editor\"}]"
```
Importatelo con un doppio clic e riavviate Chrome. La policy `AutoLaunchProtocolsFromOrigins` sopprime del tutto la finestra di conferma del browser. Lo script `install.cmd` la imposta automaticamente, compresa una riga commentata per Vivaldi (stessa policy sotto `HKLM\SOFTWARE\Policies\Vivaldi`).


Per altre domande o suggerimenti visitate il [forum |https://forum.nette.org].

Come aprire un file nell'editor da Tracy? (integrazione con l'IDE)

Quando viene mostrata la pagina di errore, potete cliccare sui nomi dei file e si apriranno nel vostro editor con il cursore sulla riga corrispondente. Si possono anche creare file (azione create file) oppure correggervi errori (azione fix it). Perché funzioni bisogna configurare il browser e il sistema.

Tracy apre i file tramite URL della forma editor://open/?file=%file&line=%line, cioè con il protocollo editor://. Per questo protocollo dobbiamo registrare un handler personalizzato. Questo handler può essere un file eseguibile qualsiasi che elabora i parametri e avvia l'editor preferito.

L'URL lo potete cambiare nella variabile Tracy\Debugger::$editor, oppure disattivare il click impostando Tracy\Debugger::$editor = null.

Windows

  1. Scaricate su disco i file appropriati dal repository di Tracy.
  2. Modificate il file open-editor.js e nell'oggetto settings decommentate ed eventualmente correggete il percorso del vostro editor:
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%"',

	...
}

...

Fate attenzione a mantenere le doppie barre rovesciate nei percorsi.

3. Registrate nel sistema l'handler per il protocollo editor://.

Lo si fa eseguendo install.cmd. Dovete eseguirlo come amministratore. Lo script open-editor.js servirà da ora il protocollo editor://.

Per poter aprire i link generati su altri server, per esempio su un server di produzione o in Docker, aggiungete a open-editor.js la mappatura degli URL remoti su quelli locali:

	mappings: {
		// percorso remoto: percorso locale
		'/var/www/nette.app': 'W:\\Nette.web\\_web',
		'/var/www/second.app': 'W:\\Second.web'
	}

Su Windows open-editor.js gira sotto il Windows Script Host, il cui motore JScript comprende solo ECMA-262 3rd Edition (1999). Quando modificate lo script, attenetevi al JavaScript vecchio stile: usate var invece di let o const, evitate le arrow function e non mettete la virgola dopo l'ultimo elemento di un oggetto. La sintassi moderna provoca un errore dello script e il protocollo editor:// smette silenziosamente di aprire l'editor.

La mappatura da remoto a locale la potete definire anche dal lato PHP con Debugger::$editorMapping, che funziona indipendentemente dall'handler dell'editor e dalla piattaforma.

Linux

  1. Scaricate i file appropriati dal repository di Tracy nella directory ~/bin.
  2. Modificate il file open-editor.sh e nella variabile editor decommentate ed eventualmente correggete il percorso del vostro editor.
#!/bin/bash

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

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

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

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

...

Rendetelo eseguibile:

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

Se l'editor che usate non è installato da un pacchetto, il suo binario potrebbe non trovarsi nel $PATH di sistema. Si rimedia facilmente: nella directory ~/bin create un collegamento simbolico al binario dell'editor.

3. Registrate nel sistema l'handler per il protocollo editor://.

Lo si fa eseguendo il file install.sh. Lo script open-editor.sh servirà da ora il protocollo editor://.

macOS

Editor come PhpStorm, TextMate ecc. permettono di aprire i file con un URL speciale, che basta impostare:

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

Se usate Tracy da sola, mettete la riga prima di Tracy\Debugger::enable(). Se usate Nette, mettetela prima di $configurator->enableTracy() in Bootstrap.php.

Purtroppo su macOS le azioni create file e fix it non funzionano.

Dimostrazioni

Correzione di un errore:

Creazione di un nuovo file:

Risoluzione dei problemi

  • In Firefox può essere necessario consentire l'esecuzione dei protocolli personalizzati in about:config impostando network.protocol-handler.expose.editor a false e network.protocol-handler.expose-all a true. Dovrebbe però essere consentita per impostazione predefinita.
  • Se non funziona subito, niente panico. Provate ad aggiornare la pagina qualche volta prima di cliccare il link, oppure riavviate il browser o il computer. Dovrebbe bastare.
  • Ecco un link per correggere eventuali errori come: Input Error: There is no script engine for file extension ".js" oppure Maybe you associated ".js" file to another app, not JScript engine.

Da Google Chrome versione 77 non vedrete più la casella „Apri sempre questi tipi di link nell'app associata“ quando l'editor viene avviato da un link. Soluzione per Windows: create il file fix.reg:

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

Importatelo con un doppio clic e riavviate Chrome. La policy AutoLaunchProtocolsFromOrigins sopprime del tutto la finestra di conferma del browser. Lo script install.cmd la imposta automaticamente, compresa una riga commentata per Vivaldi (stessa policy sotto HKLM\SOFTWARE\Policies\Vivaldi).

Per altre domande o suggerimenti visitate il forum.