Как стать автором
Обновить

Комментарии 63

Интересно, какой движок используется для рендера превью HTML файлов?
А есть возможность открывать адрес локального сервера? Не во всех проектах есть HTML файлы, а вот вывод от webpack-dev-server удобно было бы смотреть.

Да, такое давно уже можно было. Откройте http://localhost:63344/<название_проекта>.

Довольно толковый релиз получился. Молодцы.


А теперь ложку дегтя:
Когда завезут нормальную поддержку Blade шаблонов? Этот вопрос висит уже много лет и нет никакого развития в эту сторону. Скорее наоборот — с каждой версией IDE становится всё хуже. Самая боль — подсказка имен переменных работает только в редких случаях. Например, если в шаблоне через phpdoc указать входящие переменные, то в Blade директивах нет подсказки имен к ним, но после того как полностью введено имя переменной, IDE его кое-как сопоставляет с тем что определено в PHPdoc (через Ctrl видно тип и даже начинает работать подсказка свойств объекта если переменная — объект), но как бы это уже не особо полезно. Аналогичная проблема с блоками @php и <?php ?> — они вообще живут в разных областях видимости даже относительно остальных Blade директив. Хотелось бы чтобы поддержка Blade шаблонов была более адекватной, чтобы не приходилось варить кашу из костылей типа такого:


<?php
/**
 * @var array $array
 */
?>
@foreach($array as $value)
    @php(/** var array $value */ $varname = array_get($value, 'key', 'default'))
    {{ $varname }}
    <?php echo $array . $value . $varname ?>
@endforeach

Тут проблема чуть ли не в каждой строке:


  1. Определенную в PHPdoc переменную $array не видно в Blade директивах, соответственно никаких подсказок имени в @foreach или в других блоках
  2. В блоке @php() не видно переменную $value настолько что IDE выдает там ошибку 'Undefined variable $value' если не прописать /** var array $value */
  3. В блоке @php() при прописанном /** var array $value */ ошибки нет, но есть предупреждение 'Expresion result is not used anywhere' хотя на следующей строке переменная используется
  4. в строке {{ $varname }} IDE не знает о переменной $varname, т.е. и тут нет подсказки имени
  5. в строке <?php echo ?> IDE видит $array, но $value и $varname подсвечивает с ошибками 'Undefined variable $value' и 'Undefined variable $varname'

Как видите — пользоваться такой реализацией совершенно не удобно. Это сплошная борьба с IDE вместо того чтобы заниматься чем-то полезным. В целом эффективность написания Blade шаблона в блокноте не сильно ниже чем в PHPStorm. Надеюсь Вас это заденет.


На все эти косяки есть Issue в багтрекере, которые игнорируются годами. Ну тут ничего нового — в JetBrains это уже стало традицией =( Как и то что я к каждому релизу на что-то жалуюсь на Хабре =)

К сожалению, проблемы действительно известные. Blade — собой очень сложный темплейт для поддержки в IDE, так как это PHP файл под которым лежит HTML да ещё и с инжекшенами PHP. Каждая директива — это отдельный инжекшен, заставить общаться между собой отдельные инжекшены, и инжекшены с кусками <?php ?> очень нетривиальная задача.

Понимаю что сложно, но надо как-то решать, ато вот вообще больно стало этим всем пользоваться.
Может на основе настроек Blade директив из настроек IDE конвертировать код в чистый html c php вставками и уже анализировать его?


Это так же позволит настройками Blade директив внедрять специальные переменные типа $loop в итераторы @for, @foreach и т.п. Пример настройки Suffix для each директивы: ); /** @var \stdClass $loop */ ?>

Не используйте этот грустный Blade. Что он вам даёт такого, что вы прямо жить без него не можете?

Секции шаблонов и его расширение из другого шаблона, например.

Оно вполне удобное. Смысла его использовать для простых страниц мало, это да. Но чуть что посложнее — либо он, либо уходить полностью во frontend (vue, react, angular и т.п). Кому что удобнее. Делать свои костыли — не вижу смысла, это бесполезная трата времени (у меня есть несколько таких костылей и этого более чем достаточно чтобы трезво оценивать необходимость новых). Прикручивать к Laravel чужие костыли — а зачем? Есть Blade, он работает достаточно хорошо, но хромает поддержка в IDE.

НЛО прилетело и опубликовало эту надпись здесь

Не знаю, Twig не использовал. Но он не нативен для Laravel как минимум. Я уж лучше тогда Vue на фронте прикручу — пользы больше будет. Вариант перехода на Symphony не рассматривается — слишком муторно.

НЛО прилетело и опубликовало эту надпись здесь

Дело в том, что разработчики на Laravel в основном проектами на Laravel и занимаются и для них Blade как раз более знаком, чем Twig. Поэтому использовать Twig в Laravel это скорее минус, т.к. новым разработчикам сложнее будет въехать. Сам работал с обоими, не вижу принципиальной разницы. В чем эта разница для вас?

НЛО прилетело и опубликовало эту надпись здесь

Да вот, похоже, пора. Когда-то давно я хотел дождаться большей функциональности и в итоге забыл о нем =)

Просмотр PHP- и HTML-файлов в редакторе
— Очень этого не хватало. Большое спасибо!

Ещё есть такой кейс для sftp: на удалённой машине php внутри докера. Хотелось бы смотреть файлы в таком варианте через Brows Remote Host. Или применение sudo на том сервере (без учёта докера), для редактирования файлов. Возможно я не верно себе представляю SFTP и он такого не может.

SFTP в докере можно добавить как обычный SFTP хост, если sftp порт проброшен наружу. Или вы что-то другое имеете в виду?
Про sudo для sftp есть реквест: https://youtrack.jetbrains.com/issue/WI-710 — можете проголосовать за него, чтобы увеличить приоритет. Как минимум, это обновит статус проблемы.

Если я правильно представляю протокол SFTP, то достаточно было бы позволить выполнить команду на удалённом сервере для решения обеих проблем. А так, да, на счёт пробросить порт ssh во вне — хорошая идея, спасибо.

В browse remote hosts используется именно SFTP. Это не выполнение команд в bash, это обособленный протокол с простейшими командами типа ls, lstat, чтение/запись файлов и т.п. По смыслу как FTP, только с буквой S в начале и не FTP внутри.


По факту, голого SFTP не хватает browse remote hosts и сейчас. Draft протокола, реализованный в сервере OpenSSH, не содержит команды для получения uid и gid залогиненного пользователя. Плагин получает uid и gid в обход SFTP, выполняя команду id в отдельном канале SSH. И это не всегда хорошо работает. Например, люди всё ещё иногда пользуются хостингами, где доступен только SFTP, а выполнение команд — нет. На таких серверах в browse remote hosts не работает в полной мере просмотр прав на файл: известен uid файла, но неизвестно, совпадает ли он с пользовательским.


Причём фантазия на способ ограничить доступ в SSH поражает воображение. Помню, был случай, когда одна хостинг-панель из благих намерений реализовала вывод человекочитаемого сообщения при попытке открыть exec или shell канал. И ждала, пока пользователь не нажмёт enter. IDE к такому, мягко говоря, была не готова и покорно ожидала, пока команда id не завершится. А SFTP вполне себе работал.


Так или иначе, обернуть SFTP в sudo или docker exec со стороны клиента не выйдет легко, надо будет делать новую реализацию без SFTP вообще, используя coreutils как в remote toolchains у CLion или загружая на сервер своё приложение как VSCode. Новый код, новая логика, новые неожиданные баги и ограничения, новые байки и страшилки на ночь.

Спасибо за упоминание тикета! Я подниму приоритет. А вылезло после исправления — https://youtrack.jetbrains.com/issue/WI-58543.

Вроде как бага пофикшена, но нет запланированной версии, так и должно быть?
Супер релиз! Давно ждал фикса quality tools из «Важных исправлений»

Такой вопрос: а будет ли возможность записывать сессии code with me? Просто если да, то по по первому впечатлению будет отличный инструмент для проведения собеседований в удобном кандидату редакторе
А когда наконец вы поправите youtrack.jetbrains.com/issue/IDEA-66552?

Очень необходимая фича, тикет создан уже 10 лет, но ни ответа ни привета.

Очень блокирует работу когда идёт сложный конфликт и мерж.

А еще моя любимая тема Material Oceanic теперь стоит 15 евро в год. Вы же знаете, что я от нее не откажусь, зачем вы так? :(
Это не Jetbrains ведь цену установили, а разработчики плагина\темы.
Так там Material Oceanic вроде бы даже в Free версию плагина входит, думаю комментатор выше просто не разобрался.

В этом релизе сломан показ боковых панелей по двойному альту. Также не работает авто импорт зависимостей в джаваскрипте. На ошибках синтаксиса, после исправления, уведомление об ошибке не исчезает без перезапуска. Откатился на 2020.3.3

composer тоже поломали. Без перезапуска ide не видит пакеты, которые он же только что установил)
А нормальный монторинг изменений файлов для WSL2 не сделали ещё?

У меня после обновления начались какие-то странные проблемы с поиском. В некоторых файлах не ищет ни по контенту, ни даже по названию файла

К сожалению, это проблема действительно пролезла в релиз. Будет починена в минорном апдейте или можете скачать сейчас билд с фиксом: https://youtrack.jetbrains.com/issue/IDEA-266391#focus=Comments-27-4834028.0-0 или использовать workaround из https://youtrack.jetbrains.com/issue/IDEA-266391.

Как можно откатиться на предыдущую версию?
в Jetbrains Toolbox на номере версии можно кликнуть и появится выбор даунгрейда.
Спасибо, уже поставил, это очень удобно
Апдейт был неудачен. Откатился на предыдущую.

Хватило только этого (исследовать баги дальше — нет ни времени, ни желания)

Перестал работать поиск по двойнному шифту. Т.е. оно что-то ищет, но вот прямое сравнение с предыдущей версией показывает, что папка vendor почему-то внезапно неохвачена.

Возможно, это меняется где-то в настройках, но кто же делает такие апдейты и не упоминает об этом в Release Notes?


Ах, ну и да, картинка на скрине загрузки специально подобрана чтобы людям со слабой психикой крышу срывать? Какой «нехороший» обезьян ее вообще такую сделал-то?

К сожалению, это проблема действительно есть. Будет починена в минорном апдейте или можете скачать сейчас билд с фиксом: https://youtrack.jetbrains.com/issue/IDEA-266391#focus=Comments-27-4834028.0-0 или ещё проще использовать workaround из https://youtrack.jetbrains.com/issue/IDEA-266391.

Подскажите плиз как откатиться на предыдущую версию?
Я пользовался Toolbox от Jetbrains для апдейта и там же есть возможность выполнить rollback.
Спасибо

Глянул одним глазом после обновления, отвалилось пару плагинов, а так много функционала добавили. Надо будет посидеть потыкать

Чем больше поддержки WSL2, тем лучше! Спасибо!

У меня теперь автоподстановка временами вешает шторм наглухо, только убийство процесса спасает. И неактивный шторм стал грузить процессор на 100%

Очень грустно всё это

Пожалуйста, верните спокойный splash-скрин, у меня чуть эпилептический припадок не случился когда я его первый раз увидел и теперь приходится отворачиваться каждый раз когда IDE запускаю. ( Речь не конкретно по PHPStorm, а про все ваши IDE )

Не знаю, как на всех платформах, но у меня в Linux добавление ключа nosplash в команду запуска сильно бережёт зрение.

Swagger: не поддерживаются пути с ~0 (~) и ~1 (/)
Для пути /blogs/{blog_id}/new~posts должна поддерживаться ссылка
$ref: '#/paths/~1blogs~1{blog_id}~1new~0posts'
Сейчас на такое ругается в превью и по Ctrl + Clickне переходит.

хороший релиз.


  • дебаг твига сделали, а можно ли ожидать проброс контекста в твиг, или как-то указывать что есть что для автокомплита?
  • так же бесит окно поиска, что оно упирается в экран и нельзя его ниже опустить

очень это смущает порой, пользуюсь почти всеми продуктами и странно видеть, как в одном ide окно можно передвинуть, а в другом нет. или ещё пример: начав писать на с++ в clion нет возможности свернуть ифы, дефайны, а в других без проблем...

дебаг твига сделали, а можно ли ожидать проброс контекста в твиг, или как-то указывать что есть что для автокомплита?

Пока, к сожалению, нельзя, проголосуйте, чтобы следить за обновлениями — https://youtrack.jetbrains.com/issue/WI-28093


так же бесит окно поиска, что оно упирается в экран и нельзя его ниже опустить

Вы имеете ввиду Find in Files? Вообще оно должно ресайзится и двигаться. Какая у вас ОС?

Да, все верно (Find in Files). И да, оно двигается, ресайзится, но когда нужно его опустить ниже экрана, этого сделать нельзя (оно упирается в границу экрана).
А окно по двойному shift например, можно. Os Ubuntu 18.04

Спасибо за ответ!
«Замена `isset` на ??» — огонь! А есть еще что-то такое?

Например «array(...) -> [...]», «function(...) {...} <-> fn(..) => ...»,
И под JS: "(...) =>… <-> function(...) {...} "

Очень бы помогло легаси код приводить к новому и когда функция становится сложнее…

Настройте code style под нужный формат и оно автоматом будет преобразовывать, например array в [] делал лет 5 назад

НЛО прилетело и опубликовало эту надпись здесь
а планируется ли сделать разноцветные источники во вкладке Remote Host? Для коннектов ssh? Так как и в Database, очень удобно отличать дев от прода

Как оказалось подобный запрос уже есть, поэтому ваш тикет привязали к нему и соответственно приоритет повысился.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий