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

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

Почему-то вылетел из головы при написании статьи. Хотя раньше и пользовался им в нескольких проектах. Обновил статью, спасибо.
Вообще, наверное, стоит упомянуть об особенностях работы некоторых плагинов.
— Вот например, тот же официальный плагин от Microsoft на больших проектах любит подвисать или вообще падать в произвольные моменты времени. Раньше он ещё и не умел в семантическую подсветку, может её и до сих пор нет. И совсем убивает отсутствие семантической Find All References
— cquery на больших проектах жрёт как не в себя, приходится держать отдельную конфигурацию запуска VSCode без него, если хочется просто подредактировать конфиг. Он очень гибко подсвечивает всё что захочешь, замечательно предоставляет подсказки для автодополнения — но совершенно бесполезен при отладке, приходится держать его параллельно с официальным (слава Б-гу, опции официального позволяют выключить все функции, кроме, собственно, отладки).
— Опять же, если хочется по-быстрому отредактировать файл, есть два полезнейших быстрых плагина, которые позволяют работать с плюсами без включения вышеупомянутых монстров:Toggle Header/Source, который делает именно то, что вынесено в название (в отличие от встроенной в официальный плагин функции, которая может вообще не отработать или открыть совершенно не тот файл) и Reloaded Themes/C++ (на самом деле это два плагина), который обеспечивает что-то вроде семантической подсветки чисто за счёт регулярных выражений. Но и у них есть особенности — например, Toggle H/S не умеет переключаться, если исходники лежат в папке src, а хидеры в include. Reloaded Themes прекрасен во всём, но в связи с отсутствием плагинов для подсветки макросов/функций/методов Qt (розовеньким как в QtCreator), пришлось допилить напильником, вставив ещё несколько найденных на просторах интернетов регэкспов. (При этом QML файлы худо-бедно подсвечиваются соответствующим плагином.)
— А ещё есть такая прекрасная штука как GTest, для которого у VSCode есть как минимум три плагина. Один из них, Catch2 and Google Test Explorer добавляет очень удобную и гибкую поддержку запуска тестов из боковой панели
— CMakeTools — незаменимая вещь при работе с CMake. Ну как незаменимая, в принципе всё можно прописать ручками в tasks.json, но через плагин оно удобнее.
— А ещё хочется упомянуть Bookmarks + indent-rainbow + Bracket Pair Colorizer 2, очень помогают ориентироваться в раздутых исходниках.
Исходя из названия статьи, ожидал, что все или как минимум подавляющая часть расширений будут C/C++ специфичны. Фактически большая часть — расширения, так сказать, общего назначения.
Можно было бы упомянуть расширения для:
  • CMake (vector-of-bool.cmake-tools) и других систем сборки;
  • различных анализаторов (jbenden.c-cpp-flylint, alesiong.clang-tidy-linter);
  • прочих утилит от clang (xaver.clang-format, denniskempin.vscode-include-fixer);
  • быстрой компиляции (bdznh.c-cpp-compile-run-windows);

Простой поиск слов c++, cpp, clang на вкладке расширений поможет добавить несколько пунктов в этот список.
denniskempin.vscode-include-fixer не особо полезен, это умеют многие толстые расширения.
CMake уже добавил. За остальные спасибо — добавлю в статью в ближайшее время.

Интересно, сколько в среднем потребляет VS Code (который на Electron), да ещё и обвешанный всеми этими плагинами.

В среднем у всех разное. У меня с открытым проектом на 80мб кода, плюс плагины выходит порядка 800Мб. На больших проектах очевидно будет 1-2Гб. Но в современном мире, тем более в Linux оперативная память редко заканчивается. Даже с Chrome и кучей вкладок, плюс компилятор и другие инструменты 8Гб вполне хватит для комфортной работы.
Но в современном мире, тем более в Linux оперативная память редко заканчивается.

Это только если ничего не течёт. У меня уже прямо ритуал есть — что переоткрыть, чтобы вернуть в систему +10 GiB Memory. Причём текут приложения всех видов. Начиная от С++, завершая разного рода python-js-… Текут прямо безобразно. Хоть на крон вешай их перезапуск.

c/c++ for visual studio code
До сих пор преследует проблема "Class <A> has no member <b>" в среднем проекте и на пустом месте. В issues отвечают, что мол парсер у нас без AST, только со строками работаем. А вообще большая проблема сопоставить .h и .cpp файлы. Не знаю почему так, но видно архитектура и в правду добавляет сложностей. Visual Studio даже намека на такую проблему не имеет. Естественно все замечательно компилируется. Автодополнения вроде как работают, но назвать надежными их ну ни как не получается.


cquery
Проект вроде как умер потихоньку. Люди предлагают альтернативу, но ее на качество я не проверял, подробнее: https://github.com/cquery-project/cquery/issues/867


Очень не хватает надежного intellisence для c++.

Про cquery я так и написал :) И про альтернативу тоже
Мне совестно что я пропустил последний абзац про cquery. Хотя его можно поставить первым как дисклеймер.

Почему нету сравнения с qtcreator? Пробовали ли его до vs code? Там парсер кода на основе clang, а как у vs code? В сложных выражениях с темплейтами умеет в авто дополнение?

QtCreator полноценная(хотя и не всем нравится) IDE, VS Code редактор, максимум недо-IDE(хотя автор статьи имеет другое мнение, его право). Это как сравнивать грузовик с детским велосипедом. Несравнимые вещи. VS Code скорее на одной полянке с Geany и тп.
Потому что статья не про сравнение IDE или редакторов, а про расширения для VS Code.
Есть еще CLion, кстати.
Есть еще CLion, кстати.

вот так, мимоходом, упомянули IDE, едва ли хоть в чем то уступающую MSVS.

Просто во введении автор писал как он пользовался vim, потому что других IDE под Linux не было, хотя QtCreator и CLion существуют довально давно.

vim я пользовался примерно в 2006-2009 году. CLion появился только в 2014. QtCreator представили в 2009 году. Так что тогда особо и не было альтернатив.
… а VS code еще позже… только в 2015.
Красиво всё описано. И скринкасты красивые, да.
Но, блин, кто реально пробовал это в бою?
Конфиги очень хрупкие, постоянно всё отваливается, крашится, баги годами не фиксятся в дополнениях.
Сколько ни пытался заставить хотя бы пару расширений работать без крашей, ну не работают они… что я делаю не так? Я конкретно про C\C++.

Удавалось запустить элементарные фичи на тестовых Hello World проектах, а если что-то более серьёзное, то лог консоли начинает пухнуть от ворнингов, ошибок, потихоньку фичи начинают отваливаться в течение часа, в конечном результате всё крашится.

Упомянутое расширение для CMake пытался настроить. Оно постоянно то тулчейны не видело, то флаги какие-то не поддерживало или трактовало по-своему. А уж какой-нибудь clang-tidy запустить без боли — вообще из разряда фантастики. Заходил в issues на гитхабе, а там они висят по полтора года…

Кто этим реально пользуется, можете прокомментировать, как удалось добиться стабильной работы? Я имею в виду, не Hello World, а хотя бы Boost, парсинг темплейтов без крашей и отвала фич.

Отличная задумка изначально у редактора, но конкретные реализации расширений портят всё. Единицы работают стабильно.

PS
VS Code также использую для golang, markdown. Всё работает сносно. Не без багов, конечно. Но тот же golang умеет как-то рестартить себя при крашах, что не сильно мешает в работе.
У меня набор плагинов на парочку меньше, чем описано в статье. И в целом полет нормальный, ничего не падает. Объемы кода где-то 100-150мб, Boost я использую всего в паре мест, шаблонов не так много, может поэтому и проблем с парсингом особо нет.

Не знаю как в с++ оно себя ведёт, но в питоне каждый раз ввел символ все варнинги убрались, потом через какое то время pylint отработал и опять разместил подчеркивания по файлу. Аналогично и с rust тоже прямо видно что все перезапускается после каждого нажатия. В PyCharm и idea-rust оно как то всё динамично добавляется убирается и так же в QtCreator в случае c++.

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