Создайте ссылку на веб-браузер, которая открывает файл в Intellij. Возможный?

Например, qbittorent может быть открыт для ссылок, которые имеют торрент-файлы.

Почтовые клиенты mailto:

Можно ли создать ссылки в браузере, который откроет данный файл в Intellij? (Не полный путь, но возможно весь пакет).

Идея в том, что это будет создано для bitbucket.

2 ответа

Решение

Есть открытый запрос на добавление функции idea:// обработчик протокола.

На данный момент работает на macOS только из коробки. Для других платформ вы можете попробовать стороннее решение или другие обходные пути из комментариев в тикете.

Существует также встроенный веб-сервер, предоставляющий REST API для открытия файлов.

Он будет работать с относительными путями только тогда, когда IDE уже запущена и проект открыт: http://localhost:63342/api/file/relative/to/module/root/path/to/file.kt,

С установленным приложением JetBrains Toolbox можно будет использовать jetbrains:// протокол для навигации, он находится в стадии разработки и должен быть доступен в 2019.2.

См. JBProtocolNavigateCommand.kt для ссылки:

// handles URLs of the following types:

// jetbrains://idea/navigate/reference?project=IDEA
// [&reference[X]=com.intellij.navigation.JBProtocolNavigateCommand[.perform][#perform]]+
// [&path[X]=com/intellij/openapi/project/impl/JBProtocolNavigateCommand.kt[:23[:1]]]+
// [&selection[X]=25:5-26:6]+

Пример URL:

jetbrains://idea/navigate/reference?project=IDEA&fqn=com.intellij.openapi.application.JetBrainsProtocolHandler#getParameters

URL панели инструментов соответствует регулярному выражению:

"${JetBrainsProtocolHandler.PROTOCOL}([\\w\\-]+)/navigate/reference\\?project=(?<project>[\\w]+)(&fqn[\\d]*=(?<fqn>[\\w.\\-#]+))*(&path[\\d]*=(?<path>[\\w-_/\\\\.]+)(:(?<location1>[\\d]+))?(:(?<location2>[\\d]+))?)*(&selection[\\d]*=(?<line1>[\\d]+):(?<column1>[\\d]+)-(?<line2>[\\d]+):(?<column2>[\\d]+))*"

Будет также пользовательский интерфейс для копирования URL-адресов протокола TBX непосредственно из редактора, аналогично действию " Копировать ссылку" в контекстном меню. То же самое будет работать для навигации по настройкам IDE.

В качестве обновления ответа @CrazyCoder

В настоящее время это работает * на Mac. (невозможно проверить на чем-либо еще лично)

* Есть некоторые проблемы:

  • В контекстном меню нет опции для создания этой ссылки при нажатии на строку кода.
  • Привязка клавиш (см. ниже) создает неверный путь, и его необходимо изменить вручную, либо временно изменив корневую папку исходного кода, либо вручную набрав недостающие части пути.

Существует привязка клавиш, которую вы можете использовать для создания URL-адреса в разделе «Настройки»> «Раскладка клавиш»> «Копировать путь/ссылка»> «URL-адрес панели инструментов». Обратите внимание, что расположение курсора при использовании привязки клавиш имеет значение. Из того, что я могу сказать, если курсор находится в начале или конце строки, он генерирует URL-адрес с &path=..., иначе он генерирует с &fqn=.... В fqnoption будет часто ссылаться на неправильную область кода, особенно когда делается попытка сослаться на интерфейсы, библиотеки, автоматическое подключение или что-то еще, кроме прямого ванильного класса/объекта/функции.

Я зарегистрировал проблему с более подробной информацией о сломанном пути, сгенерированном привязкой клавиш: https://youtrack.jetbrains.com/issue/IDEA-290640

Другие вопросы по тегам