LINUX.ORG.RU

А вот кому IDE для C++?

 ,


0

1

Всем привет. Написал себе IDE для плюсов(строго под линукс), от лени, и от того, что другие не нравились. Написана на плюсах, с использованием wxWidgets, плюс clang либа. вот выложил видос как создать проект, сбилдить и пустить аппу.

https://www.youtube.com/watch?v=5DtzFbrjpVw

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

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

исходники не выкладываю. поскольку работаю на убунте 20.04, то приветствуются персоны с этой убунтой, чтобы не пересобирать аппу. Если есть вопросы - пишите сюда.

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

добавленное видео: https://www.youtube.com/watch?v=73qxNBq2Thk

нерафинированный видос - парсинг сорса в фоне. https://www.youtube.com/watch?v=nFyKyAsZEvk

Алексей.

★★★

Последнее исправление: cetjs2 (всего исправлений: 3)
Ответ на: комментарий от anonymous

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

fernandos ★★★
()
Ответ на: комментарий от fernandos

Там может быть какая-то шляпа в программе. Да и лицензия, вероятнее всего, несвободная.

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

про «шляпы» не знаю, но я сам системный программист, и коллегам подлянок не подкладываю.

вообще это иде для системщиков скорее.

alysnix ★★★
() автор топика
Последнее исправление: alysnix (всего исправлений: 1)
Ответ на: комментарий от alysnix

У вас своё лично определение свободы. Посади человеку в клетку:

делай, что хошь

. Уж простите за аналогию.

Так что когда выложите — можно будет обсудить, пока это ненужно.

По теме: вы подсветку синтаксиса и поддержку языка как организовывали?

Повторюсь, если будет ещё один хороший свободный редактор, я только за.

fernandos ★★★
()
Ответ на: комментарий от fernandos

подсветка синтаксиса там Scintilla с ее базовым лексером для плюсов, но можно и свой лексей более богатый написать. автокомплит и подсказки там от сланга. сланговой либой парсятся модули и из дерева вытаскивается инфа.

alysnix ★★★
() автор топика

Будет IDE парсить на лету при помощи компонентов компиляторов? Подсвечивать ошибки, какие то варнинги и так далее?

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от fernandos

Почитайте про tree-sitter, он предоставляет подсветку для большого числа языков.

с подсветкой нет особых проблем. единственно что там можно еще цветом отделять типы от имен переменных, классов, но для этого нужна семантическая инфа.

alysnix ★★★
() автор топика
Ответ на: комментарий от I-Love-Microsoft

Будет IDE парсить на лету при помощи компонентов компиляторов? Подсвечивать ошибки, какие то варнинги и так далее?

счас парсит для автокомплита. и ошибки тоже ловит на лету, покольку сланг когда парсит, выдает и ошибки… но это оказалось неудобным, включается, выключается в сеттингах. если проимпрувить, то можно сделать красиво, типа как в студии в винде. этим пока не заморачивался поскольку непринципиально.

alysnix ★★★
() автор топика
Ответ на: комментарий от fernandos

Три-ситтер более глобальный, он может даже за отступами следить.

я посмотрю его… но парсить-то кто-то должен. в данном случае это делает сланг. если там свой парсер для плюсов, то он скорее всего неполон по стандартам плюсов и будет давать ошибки или неточности.

alysnix ★★★
() автор топика

исходники не выкладываю

Продолжай в том же духе!

Oberstserj ★★
()
Ответ на: комментарий от fernandos

Там свои парсеры для кучи ЯП.

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

alysnix ★★★
() автор топика
Ответ на: комментарий от James_Holden

какая конкретно семантическая? В плюсах полно всякой семантики, и если будет уже штук 20 категорий со своими цветами, то это уже будет треш. Просто невозможно выбрать столько хорошо различимых цветов, и будет уже цветовая путаница. То есть для 8-10 категорий еще имеет смысл делать подсветку. Ну можно еще наподдать фонтами и всякими там подчеркиваниями и италиками, но это уже будет мусорно. По моим оценкам полезно выделять имена типов… а больше и не нужно ничего вроде. Я выложу видос с работой с самим ide, где цвета настроены хорошо, на выложенном в данном топике видосе, они дефолтные и в поганой цветовой гамме.

alysnix ★★★
() автор топика
Ответ на: комментарий от fernandos

проблема семподдержки в плюсах в том, что грамматика неоднозначная. простой парсер не может понять, что в написано в данном месте - обьявление переменной или присваивание:

A

это может быть началом выражения - тут A - переменная

A = 10;

но и началом иного выражения, тут A - тип.

A a = 10;

то есть парсер должен быть или с просмотром вперед на некоторое количество лексем(чтобы суметь распознать вид выражения) или иметь таблицы символов - чтобы понять, что тип А ранее обьявлен в одном из хидеров например. А это уже надо писать полный семанализ.

В других языках, с более однозначными грамматиками, парсер будет куда проще.

alysnix ★★★
() автор топика
Последнее исправление: alysnix (всего исправлений: 3)
Ответ на: комментарий от alysnix

то есть парсер должен быть или с просмотром вперед на некоторое количество лексем(чтобы суметь распознать вид выражения) или иметь таблицы символов - чтобы понять, что тип А ранее обьявлен в одном из хидеров например. А это уже надо писать полный семанализ

Ну вот это я имел в виду. В развитых IDE для C++ такая подсветка.

Может ли это tree-sitter, который советует @fernandos на современном C++ я несколько сомневаюсь.

James_Holden ★★★★
()
Ответ на: комментарий от James_Holden

Ну вот это я имел в виду. В развитых IDE для C++ такая подсветка.

ну это не проблема и для этой ide. там идет в бекраунде парсинг текущего файла. соответсвенно в кеше есть его семантическое дерево… ну если включен автокомплит. все, что надо сделать - написать свой сканер подсветки для сцинтиллы по ее стандарту. оценочно это строк…ну 500 максимум. у сцинтиллы собственный плюсовый парсер строк 300 наверное.

alysnix ★★★
() автор топика
Ответ на: комментарий от alysnix

Должен мочь. Он сначала парсит, а потом подсвечивает синтаксис.

fernandos ★★★
()
Ответ на: комментарий от James_Holden

Может ли это tree-sitter, который советует @fernandos на современном C++ я несколько сомневаюсь.

Если дадите кусок кода, можно попробовать проверить.

fernandos ★★★
()
Ответ на: комментарий от alysnix

Какие-то наивные примеры, которые вполне однозначные.

vector<unique_ptr<int>> vec;

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

anonymous
()
Ответ на: комментарий от fernandos

Тут надо весь проект. Кусок смысл парсить - ничего не поймет. А в какой он IDE используется? Я могу натравить и посмотреть как оно.

James_Holden ★★★★
()
Ответ на: комментарий от fernandos

Уфф, это само по себе каменный век - чтобы плагин подключить какие-то конфиги… Мой запал иссяк.

Судя по их скрину, хотя там C а не C++ уже видно что это не то - переменные вообще не подсвечиваются, внутри if переменная вдруг подсвечена как тип. А что будет на C++? Вряд ли что-то вменяемое.

James_Holden ★★★★
()

То что ты делаешь удобный инструмент для себя – однозначно плюс. Даже если он тебе в будущем не пригодится, ты получишь много опыта.

EXL ★★★★★
()
Ответ на: комментарий от fernandos

Лажа какая-то. Строка 88 - exename то одного цвета, то другого. Переменные не подсвечиваются, при этом когда они параметры функции - там другой цвет.

#ifdef одним цветом, #include другим, хотя это одно и то же - директива препроцессора.

Назревают подозрения что подсветка не семантическая совсем, а простой парсер по словарю.

James_Holden ★★★★
()

Чем это лучше всего конкретных альтернатив начиная с VIM? В видео не тыкать, у пользователя 15 секунд, чтобв заинтересоваться, из них разматывание наушников занимает 20.

t184256 ★★★★★
()
Ответ на: комментарий от MKuznetsov

как пользоваться IDE прямо из ютуба и кто такая АППА ??

А вот эти вопросы я постеснялся даже задавать. Наверное, «АППА» это теперь так называют «приложение» (от «аппликуха» или application, как все мы понимаем).

Ну а как IDE из ютуба… Я даже представить себе этот вариант боюсь. Шок и трепет охватывает.

anonymous
()
Ответ на: комментарий от anonymous

Наверное, «АППА» это теперь так называют

Хотя, я не могу исключить знакомство ТС с казахским и тамошним названием Бабы Яги (Шухер апа). Это ЛОР, тут всякое случается.

anonymous
()
Ответ на: комментарий от fernandos

Есть ли поддержка ЛСП?

Это языковый сервер что-ли? поддержки нет.

у меня примерно та же идеология, только небольшой «lsp server» влинкован прям в ide. работает он асинхронно, по мессагам, но более простого формата. скорее всего будет вынесен в отдельный процесс.

в принципе ничто не мешает и прикрутить стандартный lsp server, но я этим пока не заморачивался. там вопрос еще - насколько быстро такой сервер работает для плюсов. поскольку та же вижуал студия довольно неповоротлива, прилично тормозна, и потребляет много памяти, и наверняка из-за этого сервера. но это уже вопросы к реализации такого сервера.

alysnix ★★★
() автор топика

Какие киллер-фичи по сравнению с другими ide на wxWidgets, такими как codeblocks, codelite?

grem ★★★★★
()
Ответ на: комментарий от MKuznetsov

вопросов два : как пользоваться IDE прямо из ютуба и кто такая АППА ??

из ютуба - никак. аппа это application.

alysnix ★★★
() автор топика
Ответ на: комментарий от alysnix

Это языковый сервер что-ли?

Это протокол.

у меня примерно та же идеология, только небольшой «lsp server» влинкован прям в ide

ЛСП позволяет лишь поддерживать протокол на уровне вашего ИДЕ.

там вопрос еще - насколько быстро такой сервер работает для плюсов

Выберите тот, который хотите. Сервер не внедряется в ваше приложение.

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

Нет, смотрите, ЛСП — клиент-серверный протокол. Есть клиент — ИДЕ, редактор, они общаются с сервером по этому протоколу. Клиент и сервер — разные программы. Реализаций серверов огромное количество (для с++ знаю, есть силангд).

Вот, если интересно. https://langserver.org/

fernandos ★★★
()

Что ты такое, блин. Какого хрена тратишь моё время?

Где таблица сравнений с конкурентами? Где готовая прптабельная версия на протыкать? Где планы по развитию? Где ссылка на гитхаб с историей комитов? Ничего нет!

А потом спрашивают, да зачем нам менеджеры?

А ещё, ты пришел на технический форум с ссылкой на Ютуб. Это край! Моя жизнь никогда не будет прежней.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.