- PVSM.RU - https://www.pvsm.ru -
Для тех, кто пропустил мои посты:
Consulo [1] — это форк IntelliJ IDEA Community Edition, который имеет поддержку .NET(C# на текущий момент, и на этот сектор пока идет большой акцент), Java, Javascript(NodeJS) и многое другое. Проект собрал множество открытых плагинов в себе. При этом код остался открытым.
Несмотря на то, что многие мои знакомые уже вовсю используют его в production разработки Unity3D под Mac OS, я все еще не могу похвастаться stable релизом.
Ниже я расскажу вам, как прошла моя осень, и как эти три месяца постоянной работы повлияли на плагины .NET + C#, и на многое другое.
Начну, пожалуй, с самой объёмной задачи из тех, что стояли перед мной – мне было необходимо полностью переписать синтаксический поиск (неймспейсов, классов, методов, полей в файлах .cs и т.д.).
Pull Request [2]

До переписи алгоритма — работа с небольшими модулями проходила гладко, но если программа разрасталась до 10 и больше классов, то отзывчивость IDE становилась большой проблемой. Мне даже пришлось ввести возможность опционально отключать поиск, поскольку иначе у пользователей со слабой конфигурацией PC, Consulo постоянно крашилась.
Это был сложный шаг, поскольку мне нужно было переосмыслить существующий алгоритм поиска и переписать его с учетом всех слабых сторон. Первые итерации нельзя назвать успешными, но в конечном итоге мне удалось довести новый алгоритм до ума и удачно смержить этот пулл реквест.
Особое спасибо хочу выразить Денису Шевченко из pragmatix-corp.com, который помогал мне в тестировании плагина.
Моя головная боль. После реализации нового поиска я взялся за лябмды, которые юзаются, например, в LINQ. Однако для реализации лямбд и LINQ мне было необходимо решить проблемы с поиском Generic Type. В процессе я реализовал базовый инференс для генерик параметров — и лямбды где-то в 50% случаев заработали. На текущий момент осталась не завершенной задача по лямбдам (issue 157 [3]), реализация которой, как ожидается, решит все оставшиеся проблемы.

C самого начала работ над плагином C# я не уделял данному вопросу никакого внимания, поскольку привык к «хардкору», который отображает код следующим образом:

По просьбе нескольких людей, я обратил на это внимания и добавил в итоге начальные настройки стиля кода C#, и теперь по умолчанию код выглядит в IDE так:

Эту задачу — я отложил в самый дальний угол, ибо когда-то решил, что это не приоритетная задача. Это было так до вчерашнего дня. Было вот так:

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

Я много чего не описал, это ввод поддержки Covariance + Contravariance, перепись поиска методов, переделка системы типов, куча правок во множества подсистем .NET + C# плагинов.
Также не написал о том — как я пытался исправить задачу 140 [4], в итоге все сломал, пришлось сделать откат и перенести все в PR 149 [5].
А дальше у нас — самое интересное.
Была добавлена возможность скачки и автоматического добавления библиотек NuGet, через packages.config. Пока что скачиваются только с nuget.org и нету визуального просмотра библиотек, но — это исправит часть проблем, когда юзаются либы с репозитория.

Да Unity3D. Я наконец то решил посмотреть в эту сторону. Что было сделано

Я также смотрю в эту сторону, пытаюсь довести до ума, реализацию. Сейчас работает статичная и динамичная компиляция Java кода. При этом частично поиск. Но на этом заканчиваются хорошие новости. Есть проблемы в стабильности, IKVM.NET плагин может запросто положить Consulo на лопатки (или пользователя :D). В планах — сделать поддержку дебаггера .NET в Java коде (ждем свежий билд Mono для Windows).
Только конец статьи. Я буду продолжать делать то, что делал. В планах — довести до ума, то что уже есть.
Хоть я и делаю все сам, у меня есть много «дыр» в местах, куда руки попросту не до хотят.
Если у кого то есть желания помощь мне с сайтом, с написанием плагинов (Java язык, но также нужны люди знающие C# для написания Microsoft Debugger), или с тестированием — пишите мне в диалоги на Хабр, или на почту [6]
Спасибо.
PS:
C# это не конец, а только начало
Автор: VISTALL
Источник [7]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/java/76017
Ссылки в тексте:
[1] Consulo: https://github.com/consulo
[2] Pull Request: https://github.com/consulo/consulo-csharp/pull/120
[3] issue 157: https://github.com/consulo/consulo-csharp/issues/157
[4] 140: https://github.com/consulo/consulo-csharp/issues/140
[5] 149: https://github.com/consulo/consulo-csharp/pull/149
[6] почту: https://www.pvsm.ruhttp://emailto:vistall.valeriy@gmail.com
[7] Источник: http://habrahabr.ru/post/244571/
Нажмите здесь для печати.