Комментарии 134
Очень давно народ просит простенькую фичу в «External tools» — возможность отдавать не имя файла и весь файл целиком внешнему скрипту, а только выделенный текст, и его же замену тем, что вернул шелл. Очень бы хотелось, я уже года 3 как жду.
Я так и не нашел — задача простая — передать выделенный текст внешней программе, а ее stdout вернуть и заменить им выделенный текст.
Можно было бы прикрутить к Live Templates groovy-скрипт, который делал бы это, но даже Live Templates не позволяют заменять выделенный текст, увы.
youtrack.jetbrains.com/issue/IDEABKL-6913
Видимо, придется пилить плагин самому.
Возможности groovy-скриптов в live template ограничены, но что-то с заменой можно делать.
Вот пример, как я использую:
Код live template:
<template name="slia" value="<li><a href="$LINK$">$TEXT$</a> — $END$</li>" description="" toReformat="false" toShortenFQNames="true">
<variable name="LINK" expression="groovyScript("return _1.split('\t')[0]", SELECTION)" defaultValue="" alwaysStopAt="false" />
<variable name="TEXT" expression="groovyScript("return _1.split('\t')[1]", SELECTION)" defaultValue="" alwaysStopAt="false" />
<context>
<option name="HTML" value="true" />
</context>
</template>
Это значит, что вы можете при помощи Groovy-скрипта передавать выделенный текст чему угодно, и заменять его на вывод этого чего угодно.
Вот пример с PHP-скриптом: recordit.co/2GMARRlPax
Сам скрипт:
def arg = _1;def command = \"php /path/to/your/script.php $arg\"; return command.execute().text;
_1
это номер параметра, который вы передаёте функции groovyScript(), в данном случае это SELECTION.В своё время так и не нашел аналог в phpdoc. Плохо искал или может со временем добавили? Если кто-то знает, напишите пожалуйста ответ, спасибо!
В своё время так и не нашел аналог в phpdoc. Плохо искал или может со временем добавили? Если кто-то знает, напишите пожалуйста ответ, спасибо!В стандартах phpdoc нет, а так — давно всё есть в psalm, и со статической проверкой корректности передаваемых аргументов.
JB с кастомными атрибутами в этом плане немного изобрели велосипед, имхо.
Велосипед — это всё же psalm, а атрибуты — стандарт.Во первых, аттрибуты ArrayShape, Immutable и пр.(кроме Deprecated), это никакой не стандарт, а выдумка и разработка JB.
Во вторых, psalm появился раньше и вовсю используется многими разработчиками.
В третьих, функционал psalm значительно шире чем предлагаемый упоминаемыми аттрибутами, так что называть его велосипедом тем более не корректно.
Не вижу как широта возможностей защищает от звания велосипеда.
От стандарта там только синтаксис атрибутов.
А если psalm начнёт использовать атрибуты, а не phpdoc, он перестанет быть велосипедом? А так-то phpdoc тоже стандарт
Я тоже не согласен )) В PHP нет стандартного (пускай даже стандарта де-факто) способа описывать шейп массивов, а потому ни способ psalm, ни способ jetbrains велосипедами не являются. Есть плюсы и минусы у обоих, а возможно в итоге они сольются в один
Лично я надеюсь, что кто-нибудь когда-нибудь запилит аналог *.d.ts
/*.h
под PHP, а то нынче php код, особенно под OS выглядит как фарш из .phpstorm.meta.php + атрибутов шторма + атрибутов псалма + аннотаций псалма + аннотаций phpdoc + аннотаций phpstan.
И самого кода меньше, нежели обёрток над ним для типизации, которые делают одно и тоже разными способами.
Если кому интересно — затрагиваются также и атрибуты от JetBrains: https://psalm.dev/articles/php-8-attributes
В приложении такой синтаксис не засунешь либо запутаешь им остальных.
После обновления начал отжирать в 2 раза больше оперативы(4 об против 2гб), так же нагрузка проца выросла и Алерты от Mac OS всегда светлые, даже если тема темная
Можете уменьшить кол-во выделяемой памяти через Help > Edit Custom VM Options, поменяв -Xmx=текущее_значение на, например, -Xmx=1500m. А как вы измерили увеличение на нагрузку проца? Можете скинуть крин алертов?
А как вы измерили увеличение на нагрузку проца?
Просто все лагало, а до этого не лагало, открыл монитор и там нагрузка на проц часто прыгала до максимума из-за процесса шторма
Спасибо за скрин! К счастью, это уже зарепорчено: https://youtrack.jetbrains.com/issue/IDEA-255620. Надеюсь починят в ближайшем будущем.
Насчет нагрузки на процессор: по началу можно наблюдать такое из-за индексации на проектах, впервые открытых в версии 2020.3. В дальнейшем часто такое происходить не должно. Если же будет продолжаться — проверьте какой процесс(ы) доминирует в Help > Diagnostic Tools > Activity Monitor.
Спасибо за релиз. Планируется ли шаблон для Laravel (при создании нового проекта)? Для Symphony уже давно есть, а для лары нет.
Нашей командой в данный момент не планируется. Можете написать авторам Laravel плагинов с соответствующей просьбой: https://github.com/laravel-idea/plugin/issues & https://github.com/Haehnchen/idea-php-laravel-plugin/issues/218
На самом деле, от него много не требуется. Выбор версии, поддержка Lumen. Как доп.возможности — галочки для авторизации и аутентификации, выбор Livewire/Inertia.js/Стандрат. Выбор версии php. Можно еще активацию фасадов для Lumen.
Я почти всегда проект создаю с помощью консоли, в шторме потом просто папку открываю, но как раз потому что нет всех популярных фреймворков/CMS что бы стартануть удобно проект.
Может кто-то подскажет, как сделать чтоб типы в данном случае выводились сверху?

К сожалению, это нельзя настроить. Можете попробовать включить "Sort completion suggestions based on machine learning" в File | Settings | Editor | General | Code Completion — со временем должно помочь.
В плагинах есть "machine learning code completion", возможно поможет
Может есть какой то параметр чтобы использовать блочное выделение как в Notepad++/QtCreator — ctrl+shift +стрелочки? переключаться между режимами не удобно, а использовать его начал часто :)
Спасибо за релиз
Часто, во время отладки, открывается значительное количество вкладок файлов вне проекта — исходников фреймворка, пакетов из vendor, etc. PHPStorm подсвечивает эти вкладки:

но не даёт возможности быстро их закрыть скопом. Я не нашёл ни встроенной возможности, и плагина — а хотелось бы.
Такая же хотелка есть про вкладки таблиц БД — закрывать их одним махом было бы очень удобно.
Такой возможности действительно нет. На нашем трэкере есть ссылка на соответствующий реквест, можете проголосовать: https://youtrack.jetbrains.com/issue/IDEA-93903
Правой кнопкой мыши на вкладку "Close All Tabs"
P.S> Сорри, видимо не понял вопроса
А можно вопрос про "Git stage"? Точнее, как бы сделать его таким же удобным для "частичных" коммитов, как и старый вариант. Там были галочки и всегда можно было перед коммитом еще раз пробежаться по всем файлам и уточнить, какие правки включать, а какие оставить на потом, а тут revert или stage и никаких следов. Только undo если сразу.
Ну и когда включаешь сравнение unstaged то слева в заголовке будет таки "staged"???, справа "local", и если хочется какие-то правки из local частично закоммитить, то нужно их "двигать" справо налево, т.е. в обратном направлении, если сравнивать с "staged" файлами.
P.S. Я на самом деле про последний PyCharm, но я думаю, это общая функциональность.
Так ведь и сейчас можно пробежаться по файлам. Если 2 раза щелкнуть по файлу из списка для коммита — откроется вкладка с diff'ом — в ней можно включить/исключить необходимые изменения файла, также через чекбоксы.
Да нет же. На ">>" нажимаешь и нет следов от изменения. Вы, кроме немодального окна для коммитов еще "enable staging area" в настройках включили?
Пообщался с VCS team: вы можете перед коммитом нажимать правой кнопкой на Unstaged -> Add interactively и там уже будет удобно выбирать ченджи.
Спасибо за совет. Попробовал, но на 100% не удовлетворился.
Например, если в средней колонке кликнуть на revert, то опять с концами, обратно не вернуться, следов не остается. Более того, отменяется изменение в локальной копии. По крайней мере, непривычно.
Ну и опять — это все в модальном окне, хотя кнопочки, чтобы пробежаться по списку файлов, или выбрать другой произвольный, есть. Сам вариант с тремя колонками неплох (единственно, непонятно, почему в самой левой колонке нумерация строк справа?), вот если бы такой показывался справа, вместо diff'ов? Да еще, в unified режиме по выбору пользователя, если узко.
P.S. И все равно непонятно, лучше ли он старого варианта?
Здравствуйте. И это снова я! И опять про то же самое что и в прошлый раз =(
Релиз хороший, наверно лучший за этот год. Но, увы, как обычно забили на работу над ошибками.
В Run вкладке уже минимум год не поддерживается кириллица.
Вот расшифруйте мне это:
> Company: #6 - Тестовая УК > Building: #56 Дом для тестирования > Building: #843 Дом для тестирования интеграции > Building: #850 Дом для тестирования интеграции (Ховард), дом 0 > Building: #854 �нтеграция с Кварталом
Таска — IDEA-240787 и WI-57430 (создал новую т.к. старая не совсем про кодировку и мой комментарий к ней проигнорирован)
Все еще нет истории запусков Run anything — WI-48014. Так сложно делать вкладку на каждый запуск из окошка Run anything?
Поддержка Blade шаблонов до сих пор отвратительна — WI-46437. С самого начала были проблемы с видимостью переменных. Прошли годы, а воз и ныне там.
Спасибо за ссылки, форвардну это соответствующим разработчикам. Неприятно, конечно, что перечисленные проблемы так и не решены, но в большинстве из них практически нет голосов/комменатриев. Это объясняет почему они не в приоритете. В WI-46437 (Blade: false positive: Unused local variable within foreach in php) надеюсь скоро появятся обновления.
По кодировке в Run anything — сколько бы там мало голосов ни было, а косяк весьма значительный. Вероятно для большинства это не критично и они не жалуются и не голосуют. Но это не повод забивать на проблему, которой небыло в удобном и отлично работающем command line, выпиленном в пользу Run anything. Я еще долго буду припоминать Вам это решение =) Как минимум пока Run anything не доведете до ума.
Я б сказал, что не некритично, а просто не встречалось большинство c кейсами когда нужна поддержка русского в запускаемых из IDE CLI-командах.
Либо они злобные пираты и не палятся в багтрекере =)
Я как бы тоже не использую кириллицу в консольных командах, но в БД у меня всё на русском и часто нужно знать с каким объектом идет работа (все ID не запомнишь) — пока отлаживаю приходится абракадабру видеть что никак не ускоряет процесс разработки. Порой из терминала запускаю. В общем этот run anything капитально так недоделан и, судя по всему, в JetBrains на него забили. Как в том мультике — "и так сойдет!" =(
Help > Edit Custom VM Options…
Добавьте строчку
-Dfile.encoding=UTF-8
Перезагрузите шторм.
Спасибо за подсказку! Помогло =)
Я правильно понимаю что этой настройки нет в File->Settings… ?
Я правильно понимаю что этой настройки нет в File->Settings… ?
Там только Settings | Editor | File Encodings
из подходящего. Но оно никак не помогает в этом вопросе. У меня и так там все в UTF-8 выставлено. Если что — Windows 10, все English UK.
Я сделал тест (простой PHP скрипт который UTF-8 и просто пишет пару слов на кириллице):
- если использовать Run/Debug Configuration то выводит как надо
- если же тоже самое но через Run Anything то показывает крякозябры
- добавил
-Dfile.encoding=UTF-8
и теперь и там норм.
Проверил у себя — работает и без этого конфига. Если что — Ubuntu 20.04.
Возможно эти параметры не активны у вас: https://youtrack.jetbrains.com/issue/IDEA-240787#focus=Comments-27-4072493.0-0
Workaround
disablerun.anything.use.pty
andrun.processes.with.pty
(shift,shift -> Registry -> run.anything.use.pty and run.processes.with.pty turn off)
У меня, например, run.processes.with.pty
включен (и я не помню чтобы его включал, возможно какая то опция делает… или же я, но только давно).
В любом случае: для меня это не критично ибо и так весь вывод только на английском. Кириллица была только для теста.
ИМХО проблема с кодировкой в линуксах может вынырнуть из-за кого-нибудь легаси в Windows-1251.
Под окошками UTF-8 старательно конвертируется в дефолную кодировку.
Понятно. Опять намудрили.
Дополню баг в трекере.
File -> Settings -> Editor -> General -> Console
Параметр Default Encoding.
Я поставил Default Encoding UTF-8 и убрал ключ -Dfile.encoding. Заработало как надо.
Либо я не замечал этого параметра в настройках (в 2019.4 параметра Default Encoding нет), либо кодировка была другая, либо пофиксили.
никто не знает
- как по-умолчанию свернуть svg? в настройках не нашел
- как сделать горячие клавиши на открытие некоторых директорий? т.е. если я работаю только с контроллерами и во вьюхами, чтоб я мог быстро папки менять. На той же Ларе очень глубоко лежат эти файлы =(
Так бы сделал CMD+ALT+1 — файл роутов; CMD+ALT+2 — папка с контроллерам; CMD+ALT+3 — папка со вьюхами; CMD+ALT+4 — папка с моделями; CMD+ALT+5 — папка с миграцями; и т.д.
как сделать горячие клавиши на открытие некоторых директорий?
Закладки / Bookmarks — https://www.jetbrains.com/help/phpstorm/navigating-through-the-source-code.html#use_bookmarks. Они работают на файлах/папках тоже.
как по-умолчанию свернуть svg?
Можете поподробнее? В окне редактора как-то неправильно отображается?
Про горячие клавиши ответили ниже — отличное альтернативное решение, как мне кажется.
Можете поподробнее? В окне редактора как-то неправильно отображается?
Показывает все верно, я про «Code Folding».
В настройках (и вроде по-умолчанию) свернуты импорты, доки и т.д.

Через настройки по-умолчанию можно много что свернуть, а вот простые SVG в html/blade нельзя, хотя они сильно дают нагрузку на читабельность и так мало информации:

Ну или я мало разбираюсь в SVG и для меня там что-то полезное есть?)
Можно конечно их в отдельные файлы скидывать, но такое мало кто делает. Некоторые проекты поддерживать сложно…
Еще можно их в одну строку делать вручную, но «auto format code» (CMD + ALT + L), делает опять в несколько строк
Обновление должно автоматически импортировать настройки стиля кода и настройки проекта. Который раз обновляюсь — все мои настройки БД и стиля мигрируют корректно.
Попробуйте! Если что-то пойдет не гладко — мы всегда будем рады помочь через Help | Contact Support.
А правила форматирования сложных sql просто по разному работают от релиза к релизу.
Рефактор при переименовании таблиц вообще стал отключать всегда после того как эта штука порезала почти все запросы под ноль.
Про сапорт помню, спасибо, к сожалению граффик сейчас не позволяет писать пачками объемные тикеты.
Спасибо за информацию! Как найдете время — с радостью посмотрим на проблему, в наших интересах сделать миграцию и работу с БД как можно более безболезненной.
Спасибо за информацию
Самые частые проблемы касаются форматирования join/on, я по моему три тикета писал по этой теме.
А вот при рефакторе запросы очень часто возникают при наличии CTE или конкатенаций.
Как найдете время
Постараюсь) Вам на английском лучше или на русском? Мне в принципе все равно, но спросить всегда стеснялся)
Присоединяюсь к вопросу, правда с уточнением лучше на ломаном английском или на обычном русском? А то много багрепортов не написал лишь потому что то, что за 5 минут написал бы на русском, на английском полчаса писать буду и не факт, что не сделаю ошибок, искажающих смысл.
pronskiy А нуллабельные типы в #[ArrayShape]
можно задавать?
Такое прокатит?
#[ArrayShape(['key1' => '?string', 'key2' => ['inner_key' => '?string']]
Было бы круто похожий атрибут без привязки к конкретным ключам и с возможностью задавать описания
#[ArrayShapeAssoc(['description of key meaning' => SomeClass::class)]
PS
То есть, если записать #[ArrayShape] в одну строку в проекте на PHP 7, то интерпретатор PHP воспримет эту строку как комментарий.
А шторм подсветит как ошибку :(
\Amp\Loop::run(function (){
/** @psalm-return \Amp\Promise<stdClass> */
$coroutine = function (){
return \Amp\call(function (){
return new stdClass();
});
};
$value = yield $coroutine();
// Хотелось бы, чтобы phpstorm понимал тип данных
// без подсказок, т.к. он явно в psalm-return указан
assert($value instanceof stdClass);
});
Понимаю что это работает через Generator::send() внутри фреймворка, но эксперименты с ним так же не позволили мне подсказать тип данных полученных yield'ом из send'а. Минимальный пример ниже — phpstorm никак не реагирует на переданный тип данных.
function gen(){
$value = yield new stdClass;
// интересует не писать подсказок вот здесь
assert($value instanceof stdClass);
}
$gen = gen();
// впрочем тут без подсказки тип тоже не определён
assert($gen->current() instanceof stdClass);
$gen->send(new stdClass());
- Это бесплатный редактор?
- Есть встроенная поддержка sftp?
- На чем написан? Комодо на Java дико вешает комп. И ещё какой-то тоже пробовал уже не помню, тоже на Java и тоже тормоза были. 16гб им мало.
- Вообще, нет, но есть куча скидочных/бесплатных планов. Также можно пользоваться бесплатно во время месячного триала (который можно продлить через запрос в команду Sales), либо использовать бесплатные EAP билды.
- Есть
- Java, но мы требовательны. Например у меня сейчас открыт WP сайт и он занимает около 250 метров в памяти:
blog.jetbrains.com/phpstorm/2020/10/phpstorm-2020-3-eap-2
confluence.jetbrains.com/display/PhpStorm/PhpStorm+Early+Access+Program
ведут на скачивание платной версии. www.jetbrains.com/phpstorm/whatsnew
Релизнулась новая версия — её EAP недоступен, а нового пока нет — надо ловить анонсы о выходе EAP
Поставить триал на 30 дней не сложно.
Во вкладках файлов модифицированный файл не выделен — не видно сходу, что я не сохранил. Это вообще плохо. Нужно переключиться на файл и прочитать был он модифицирован или нет.
Alt+Shift+Q непонятно зачем вместо Crtl+S
Ctrl+S
все еще сохраняет (все) файлы. Alt+Shift+Q
— у меня это на Upload Current Remote File (когда открыть файл напрямую через FTP а не локальный (aka Remote Edit)). Если об этом, то да, неудобно.
Во вкладках файлов модифицированный файл не выделен — не видно сходу, что я не сохранил.
Settings/Preferences | Editor | General | Editor Tabs | Mark modified (*)
А вот настройка * не срабатывает, если отключить иконку файла. Бага.
Закрыл редактор. Открыл — файлы скинуты. В Recent их нет. Видно туда то, что по SFTP открывал не попадает.
Ещё редактор у меня подвис на некоторое время. Такое с Komodo Edit случалось. Всё же Java есть Java.
Все файлы как раз не надо. Это опасно. Можно сохранить то, что случайно модифицировал. Это я перенастроил.
Это сила привычки… ну и workflow. PhpStorm я использую еще с нулевой версии (0.6 или чего то такое) и первых месяца 2 было непривычно. Но потом привык и без проблем — даже чище работать ибо не делаешь 100500 разных изменений во множестве фалов одновременно, а если и делаешь то сохраняешься когда закончил. Если же что пошло не так то юзаю Local History.
Но да, в других продуктах работаю по другому (например SSMS или Delphi например).
А вот настройка * не срабатывает, если отключить иконку файла. Бага.
https://youtrack.jetbrains.com/issue/IDEA-246166 — раньше * рисовалась по другому (не поверх иконки).
Закрыл редактор. Открыл — файлы скинуты. В Recent их нет. Видно туда то, что по SFTP открывал не попадает.
Да, ибо это полностью remote файлы.
Ещё редактор у меня подвис на некоторое время. Такое с Komodo Edit случалось. Всё же Java есть Java.
Давно подвисаний во время работы не было, хоть все еще сами проекты хранятся на HDD. Сторонние плагины (которые участвуют в автодополнении) это то что в основном приводит к подлагам (по крайней мере у меня). Хотя размер и структура проекта (какие языки используются) тоже играет роль.
Ну и https://habr.com/ru/company/JetBrains/blog/531828/#comment_22403640
Очень грубо можно сравнить с вождением автомобиля, когда пересаживаешься с ручной коробки на автоматическую. У меня привычка искать педаль сцепления держалась около полугода (а желание переключать передачи самому не пропадает уже пять лет, как я на автомате езжу). Так же и с использованием IDE — автоматизация больше, чем в блокноте.
Важно понимать, что никто ничего не навязывает. Ваше право разрабатывать так, как вам удобнее. Использовать phpstorm — сейчас это негласный стандарт в профессиональной php-разработке (относительно недавно ещё стал популярен vscode, полностью бесплатный — советую его тоже попробовать).
Бывает, что навязывают, может не сильно, но на 1:1 могут сказать "ты слишком много времени тратишь своего и чужого со своим vim/vscode/блокнотом — у нас корплицензия на phpstorm и готовые настройки от кодстайла до списка продакшен серверов с тоннелями к ним — пользуйся"
Пока есть интересные моменты вроде подсказок более информативных.
Но и огромное неудобство и непонимание как это всё побороть.
Я вот тупо пустой файл не могу создать. Спрашивает имя. Ругается, что в корень писать не может. Блин, но мне просто нужен пустой файл, мне его сохранять не нужно, мне нумерацию строк посмотреть.
Ctrl+Alt+Shift+Insert (new scratch file) — не совсем то, что вам нужно, наверное, но максимально близко к просто запущенному блокноту.
Я вот тупо пустой файл не могу создать. Спрашивает имя.
Блин, но мне просто нужен пустой файл, мне его сохранять не нужно, мне нумерацию строк посмотреть.
Да, IDE работает с файлами (каждый редактор привязан к физическому файлу а не к виртуальному). Вы не можете создать "пустой editor tab". Юзайте scratch-файлы если нужно что-то временное: https://www.jetbrains.com/help/phpstorm/scratches.html
Если с английским более-менее:
https://www.jetbrains.com/phpstorm/documentation/ — смотрите видео
https://www.jetbrains.com/help/phpstorm/workshop-materials.html
https://laracasts.com/series/how-to-be-awesome-in-phpstorm
Например, запуск php-скриптов в линуксовом окружении.
Это всё — дикая дичь и не смотря что я обожаю продукты JB — я сижу на vscode, потому что так продуктивнее и удобнее.
В шторме уже около года есть поддержка WSL.
Смотрите комментарии в теме DataGrip: https://habr.com/ru/company/JetBrains/blog/529634/
VolCh А поддержка Redis планируется из коробки?
moscas Периодически обсуждаем и помним, но конкретных планов пока нет.
t0rr Вот тикет, на который можно подписаться и следить за DataGrip+Redis: https://youtrack.jetbrains.com/issue/DBE-283 (* ему уже 6 лет, если чо)
Раньше функционал создания патчей использовал patch (unix) команду, а теперь формат похож на patch'и из git'a.
Было:
Index: src/app.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/app.php (revision ad0de...8c1b)
+++ src/app.php (date 1607368535657)
@@ -79,6 +79,7 @@
...
Стало:
Index: src/app.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/src/app.php b/src/app.php
--- a/src/app.php (revision 1d4b92...bbb)
+++ b/src/app.php (date 1590949271133)
@@ -79,6 +79,7 @@
....
Теперь системная команда patch (не git apply) не применяет патчи
Кажись это: https://youtrack.jetbrains.com/issue/IDEA-92793#focus=Comments-27-4393627.0-0
We actually went further and made the git format the default and only supported, as all the VCSs that are officially supported in 2020.3 can handle it.
На винде с wsl1 постоянно висит git log indexing, можно это как-то убрать?
И еще хотел бы узнать если ли настройка использования cpu при индексации. Замечаю как с каждым релизом экспериментируете: раньше процессор нагружался до 100%, потом максимум до 50-60%.
На i5 650, а это всего 2c4h 10 года, оно летает, и это с кучей плагинов и на огромном проекте под 100к файлов.
Но когда-то тоже сталкивался с фризами, на более мощном железе. Частично из-за hdd, частично из-за медленной отрисовки графики, частично из-за глючных плагинов.
Одно время это достало, и разобрался с вопросом раз и навсегда.
Сначала разобрался с диском — переехал на ssd, и больше на hdd шторм даже не пытался запускать, потому что это гарантированные фризы. А пока жил на hdd, пользовался рамдиском для кеша индекса: пусть лучше 2 гига памяти сожрет на кеш индекса в оперативке, чем так тормозит.
Потом разобрался с отрисовкой — убедился, что проблема не в gpu, и добавил в vmoptions ключи:
-Dawt.useSystemAAFontSettings=lcd
-Dawt.java2d.opengl=true
-Dsun.java2d.renderer=sun.java2d.marlin.MarlinRenderingEngine
Также разрешил кушать побольше памяти: -Xmx16g
А потом тщательно профилировал плагины: вырубил все, включал по одному, наблюдал за реакцией.
На некоторых плагинах наблюдается некорректная работа со штормом, и оно просто выжирает cpu — такие плагины поотключал, благо их оказалось немного. Большая часть таких плагинов уже упоминается в багрепортах.
«Тяжелые» по ресурсам плагины работают, и, не смотря на старое железо, не тормозят. Тормозили именно некорректно работающие — вмешивались в процессы индексирования, поиска по индексу и анализа кода, и либо падали в циклы, либо сыпали ошибками.
После этого не устанавливаю больше двух незнакомых плагинов за раз, чтобы, если вдруг опять нарвусь на подобное, не проверять все плагины.
С тех пор, как все это проделал, шторм летает.
Попробуй, может и у тебя похожие проблемы.
Спасибо, попробую эти настройки. Память сейчас выставлена так:
-Xms2048mПлагины возможно и являются проблемой, но не уверен что хочу перепроверять десятки установленных плагинов. Даже если выяснится что виноват плагин для поддержки php, его все равно же не выключишь. Мне кажется здесь какая-то проблема с gpu.
-Xmx4096m
-XX:ReservedCodeCacheSize=512m
Можно ли использовать PHPStorm как статический анализатор на CI?
https://www.jetbrains.com/help/phpstorm/command-line-code-inspector.html
https://www.christianscheb.de/archives/808
Можно использовать psalm. Он уже умеет считывать некоторые JB атрибуты и полифиллить на свои типы.
Большое вам спасибо за https://youtrack.jetbrains.com/issue/IDEA-247286
Теперь я счастлив
Не знаю с обновлением связано или нет, но заметил после него: не работает копирование в буфер иксов (ubuntu 20.04) по выделению мышкой в окне Terminal (встроенный в PhpStorm). Вставка средним кликом работает, а копированию по выбору — нет. Это бага?
В данный момент в Phpstorm проекте почти 40 000 открытых тикетов.
youtrack.jetbrains.com/issues/WI
из них часть — это мусор, который стоит закрыть.
Хуже всего что когда после обновления или по какой либо другой причине хочешь создать рапорт, ты не можешь найти подходящий и думаешь «я что, первый, с такой проблемой?».
Ищешь по ключевым словам и тп — ничего не найти.
Создаёшь тикет, смотришь все дубликаты… И только когда создашь увидешь что такие тикеты были и твой тикет закроют как дубликат.
результат => нет смысл писать вообще о багах из за фрустрации что скорее всего закроют как дубликат.
И при этом, баги иногда по полгода не закрывают, возможно потому что их не рапортишь, а возможно потому что они только у тебя и проявляются.
youtrack.jetbrains.com/issue/WI-56500
зарелизить сломанную работу c XDebug — пусть все разработчики и обновляют всё у себя — гениально.
Причём сломали с достаточно новой версии Xdebug — которой всего полгода.
Присоединяйтесь к моему крестовому походу =) Я в этом году на каждый релиз с кучей фич выкатываю несколько багов на которые забили. И, кстати, большинству из них несколько лет и не то чтобы они прямо такие безобидные. Пишу именно на хабре т.к. тут есть хоть какая-то адекватная реакция. Меня задолбал подход JetBrains к разработке IDE в виде "пофиг на баги, даешь 100500 новых фич", которые зачастую тоже багнутые… За год ничего не поменялось к сожалению, но хотя бы часть упомянутых багов исправляют. Правда, в этот раз я словил "Won't fix" на проблеме удобства когда сообщение о проблеме не соответствует реальной проблеме (WEB-20352 'closing tags matches nothing'). И ладно бы сказали что может когда-то поправят, так нет же — написали отмазку и закрыли… Печально это всё =(

PhpStorm 2020.3: PHP 8, атрибуты, PHPStan и Psalm, Xdebug 3, Tailwind CSS и совместная разработка