Как открыть файл в редакторе из Tracy? (интеграция с IDE)
Когда отображается страница с ошибкой, вы можете кликать по
именам файлов, и они откроются в вашем редакторе с курсором на
соответствующей строке. Файлы можно также создавать (действие
create file) или исправлять в них ошибки (действие fix it). Чтобы
это работало, нужно настроить браузер и систему.
Tracy открывает файлы по URL вида editor://open/?file=%file&line=%line, то есть
через протокол editor://. Для этого протокола нам нужно
зарегистрировать собственный обработчик. Им может быть любой
исполняемый файл, который обработает параметры и запустит ваш любимый
редактор.
URL можно изменить в переменной Tracy\Debugger::$editor либо отключить
открытие по клику, задав Tracy\Debugger::$editor = null.
Windows
- Скачайте на диск подходящие файлы из репозитория Tracy.
- Отредактируйте файл
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. Запускать его нужно от имени
администратора. Теперь протокол editor:// будет обслуживать
скрипт open-editor.js.
Чтобы открывать ссылки, порождённые на других серверах, например на
боевом сервере или в Docker, добавьте в open-editor.js отображение
удалённых путей в локальные:
mappings: {
// удалённый путь: локальный путь
'/var/www/nette.app': 'W:\\Nette.web\\_web',
'/var/www/second.app': 'W:\\Second.web'
}
В Windows open-editor.js выполняется под Windows Script Host, чей движок
JScript понимает только ECMA-262 3rd Edition (1999). При правке скрипта держитесь
старомодного JavaScript: используйте var вместо let или
const, избегайте стрелочных функций и не ставьте запятую после
последнего элемента объекта. Современный синтаксис вызывает ошибку
скрипта, и протокол editor:// молча перестаёт открывать редактор.
Отображение удалённых путей в локальные можно задать и на стороне PHP через Debugger::$editorMapping: оно работает независимо от обработчика редактора и платформы.
Linux
- Скачайте подходящие файлы из репозитория Tracy в
каталог
~/bin. - Отредактируйте файл
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. Теперь протокол
editor:// будет обслуживать скрипт open-editor.sh.
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, возможно, придётся разрешить выполнение
собственных протоколов в
about:config, задавnetwork.protocol-handler.expose.editorвfalse, аnetwork.protocol-handler.expose-allвtrue. Впрочем, по умолчанию это должно быть разрешено. - Если сразу не заработает, не паникуйте. Попробуйте несколько раз обновить страницу перед щелчком по ссылке или перезапустить браузер либо компьютер. Это должно помочь.
- Вот ссылка
на исправление возможных ошибок вроде:
Input Error: There is no script engine for file extension ".js"илиMaybe you associated ".js" file to another app, not JScript engine.
Начиная с Google Chrome версии 77 вы больше не увидите флажок “Always open these types
of links in the associated app” при запуске редактора по ссылке. Обходной путь для
Windows: создайте файл fix.reg:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome]
"AutoLaunchProtocolsFromOrigins"="[{\"allowed_origins\": [\"*\"],\"protocol\": \"editor\"}]"
Импортируйте его двойным щелчком и перезапустите Chrome. Политика
AutoLaunchProtocolsFromOrigins полностью подавляет подтверждающее окно
браузера. Скрипт install.cmd задаёт её автоматически, включая
закомментированную строку для Vivaldi (та же политика в
HKLM\SOFTWARE\Policies\Vivaldi).
С дальнейшими вопросами или предложениями заходите на форум.