Nette Documentation Preview

syntax
Как открыть файл в редакторе из Tracy? (Интеграция с IDE)
*********************************************************

.[perex]
При отображении страницы ошибки можно кликнуть на имена файлов, и они откроются в вашем редакторе с курсором на соответствующей строке. Также можно создавать файлы (действие `create file`) или исправлять в них ошибки (действие `fix it`). Чтобы это произошло, необходимо настроить браузер и систему.

Tracy открывает файлы по URL вида `editor://open/?file=%file&line=%line`, т.е. с протоколом `editor://`. Для него мы зарегистрируем собственный обработчик. Им может быть любой исполняемый файл, который "переварит" параметры и запустит наш любимый редактор.

URL можно изменить в переменной `Tracy\Debugger::$editor`, или отключить переход по ссылкам, установив `Tracy\Debugger::$editor = null`.


Windows
=======

1. Скачайте соответствующие файлы "из репозитория Tracy":https://github.com/nette/tracy/tree/master/tools/open-in-editor/windows на диск.

2. Отредактируйте файл `open-editor.js` и в массиве `settings` раскомментируйте и при необходимости измените путь к вашему редактору:

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

	...
}

...
```

Внимание, оставляйте двойные слеши в путях.

3. Зарегистрируйте обработчик протокола `editor://` в системе.

Это вы сделаете, запустив файл `install.cmd`. **Его необходимо запустить от имени Администратора.** Скрипт `open-editor.js` теперь будет обрабатывать протокол `editor://`.

Чтобы можно было открывать ссылки, сгенерированные на других серверах, например, на реальном сервере или в Docker, добавьте в `open-editor.js` еще и сопоставление удаленного URL с локальным:

```js
	mappings: {
		// удаленный путь: локальный путь
		'/var/www/nette.app': 'W:\\Nette.web\\_web',
	}
```


Linux
=====

1. Скачайте соответствующие файлы "из репозитория Tracy":https://github.com/nette/tracy/tree/master/tools/open-in-editor/linux в каталог `~/bin`.

2. Отредактируйте файл `open-editor.sh` и раскомментируйте и при необходимости измените путь к вашему редактору в переменной `editor`.

```shell
#!/bin/bash

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

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

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

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

...
```

Сделайте файл исполняемым:

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

.[note]
Если используемый редактор не установлен из пакета, вероятно, исполняемый файл не будет иметь пути в $PATH. Это можно легко исправить. В каталоге `~/bin` создайте символическую ссылку на исполняемый файл редактора.


3. Зарегистрируйте обработчик протокола `editor://` в системе.

Это вы сделаете, запустив файл `install.sh`. Скрипт `open-editor.sh` теперь будет обрабатывать протокол `editor://`.


macOS
=====

Редакторы, такие как PhpStorm, TextMate и т.д., позволяют открывать файлы по специальным URL, который достаточно установить:

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

Если вы используете отдельную Tracy, вставьте строку перед `Tracy\Debugger::enable()`, если Nette, то перед `$configurator->enableTracy()` в `Bootstrap.php`.

Действия `create file` или `fix it`, к сожалению, не работают на macOS.


Примеры
=======

Исправление ошибки:

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

Создание файла:

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


Решение проблем
===============

- В Firefox может потребоваться разрешить протокол, [установив |http://kb.mozillazine.org/Register_protocol#Firefox_3.5_and_above] `network.protocol-handler.expose.editor` в `false` и `network.protocol-handler.expose-all` в `true` в about:config.
- Если у вас сразу не получится, не паникуйте и попробуйте несколько раз обновить страницу перед кликом по этой ссылке. Заработает!
- Вот [ссылка|https://www.winhelponline.com/blog/error-there-is-no-script-engine-for-file-extension-when-running-js-files/] на исправление возможной ошибки: `Input Error: There is no script engine for file extension ".js"`, `Maybe you associated ".js" file to another app, not JScript engine.` соответственно `для расширения .js нет доступного скриптового движка`.

В Google Chrome начиная с версии 77 вы больше не увидите флажок „Всегда открывать ссылки этого типа в связанном приложении“, когда редактор запущен по ссылке. Решение для Windows: создайте файл `fix.reg`:

```
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\URLWhitelist]
"123"="editor://*"
```
Импортируйте его двойным кликом и перезапустите браузер Chrome.


С возможными вопросами или замечаниями, пожалуйста, обращайтесь на [форум |https://forum.nette.org].

Как открыть файл в редакторе из Tracy? (Интеграция с IDE)

При отображении страницы ошибки можно кликнуть на имена файлов, и они откроются в вашем редакторе с курсором на соответствующей строке. Также можно создавать файлы (действие create file) или исправлять в них ошибки (действие fix it). Чтобы это произошло, необходимо настроить браузер и систему.

Tracy открывает файлы по URL вида editor://open/?file=%file&line=%line, т.е. с протоколом editor://. Для него мы зарегистрируем собственный обработчик. Им может быть любой исполняемый файл, который „переварит“ параметры и запустит наш любимый редактор.

URL можно изменить в переменной Tracy\Debugger::$editor, или отключить переход по ссылкам, установив Tracy\Debugger::$editor = null.

Windows

  1. Скачайте соответствующие файлы из репозитория Tracy на диск.
  2. Отредактируйте файл open-editor.js и в массиве settings раскомментируйте и при необходимости измените путь к вашему редактору:
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%"',

	...
}

...

Внимание, оставляйте двойные слеши в путях.

3. Зарегистрируйте обработчик протокола editor:// в системе.

Это вы сделаете, запустив файл install.cmd. Его необходимо запустить от имени Администратора. Скрипт open-editor.js теперь будет обрабатывать протокол editor://.

Чтобы можно было открывать ссылки, сгенерированные на других серверах, например, на реальном сервере или в Docker, добавьте в open-editor.js еще и сопоставление удаленного URL с локальным:

	mappings: {
		// удаленный путь: локальный путь
		'/var/www/nette.app': 'W:\\Nette.web\\_web',
	}

Linux

  1. Скачайте соответствующие файлы из репозитория Tracy в каталог ~/bin.
  2. Отредактируйте файл open-editor.sh и раскомментируйте и при необходимости измените путь к вашему редактору в переменной editor.
#!/bin/bash

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

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

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

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

...

Сделайте файл исполняемым:

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

Если используемый редактор не установлен из пакета, вероятно, исполняемый файл не будет иметь пути в $PATH. Это можно легко исправить. В каталоге ~/bin создайте символическую ссылку на исполняемый файл редактора.

3. Зарегистрируйте обработчик протокола editor:// в системе.

Это вы сделаете, запустив файл install.sh. Скрипт open-editor.sh теперь будет обрабатывать протокол editor://.

macOS

Редакторы, такие как PhpStorm, TextMate и т.д., позволяют открывать файлы по специальным URL, который достаточно установить:

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

Если вы используете отдельную Tracy, вставьте строку перед Tracy\Debugger::enable(), если Nette, то перед $configurator->enableTracy() в Bootstrap.php.

Действия create file или fix it, к сожалению, не работают на macOS.

Примеры

Исправление ошибки:

Создание файла:

Решение проблем

  • В Firefox может потребоваться разрешить протокол, установив network.protocol-handler.expose.editor в false и network.protocol-handler.expose-all в true в about:config.
  • Если у вас сразу не получится, не паникуйте и попробуйте несколько раз обновить страницу перед кликом по этой ссылке. Заработает!
  • Вот ссылка на исправление возможной ошибки: Input Error: There is no script engine for file extension ".js", Maybe you associated ".js" file to another app, not JScript engine. соответственно для расширения .js нет доступного скриптового движка.

В Google Chrome начиная с версии 77 вы больше не увидите флажок „Всегда открывать ссылки этого типа в связанном приложении“, когда редактор запущен по ссылке. Решение для Windows: создайте файл fix.reg:

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

Импортируйте его двойным кликом и перезапустите браузер Chrome.

С возможными вопросами или замечаниями, пожалуйста, обращайтесь на форум.