Коллеги,
поделитесь, пожалуйста, мыслями по поводу вот такой задачи: редактор кода для самопального языка программирования. Это только РЕДАКТОР, т.е. компиляции, трансляции и пр. - ничего этого не надо, фактически нужна подсветка синтаксиса (что к примеру умеет тот же NotePad++) и типичные для редакторов штуки: табуляция, система вкладок для открытых документов, поиск. Ну и пожалуй какой-то кэш для функций нужен все равно, чтобы был GoToDefinition.
Как написать это с нуля - представляю, но не хочу велосипедить. Платформа разработки - .net (WPF!). У языка Си-подобный синтаксис. Подскажите, куда копнуть? В плане каких-то опенсорсных решений. Желательно не сильно универсальных, чтобы не усложнять проект.
UPD1
Смотрю эти решения:
ScintillaNet (минус в том, что это WinForms, а нужен WPF, т.е. придется еще встраивать)
AvalonEdit - пока непонятно
SharpDevelop (основанный на AvalonEdit) - тоже
Visual Studio Code - нашел там поддержку для кастомных языков, но можно ли туда прикрутить вкладки, GoToDefinition, AutoComplete - пока не могу понять.
Ivan Arxont: видимо Вы правы, почитал вот тут: blog.megahard.info/2010/09/syntax-highlighting-con... что у ScintillaNET есть проблемы со стабильностью (по крайней мере тогда были, проект-то вроде жив, 2 месяца назад последний комит), что неудивительно: там же вроде как 3 слоя пирога получается, сначала unmanaged ядро (сама Scintilla), потом .net-обертка, потом WPF-обертка.
Вот тут тоже пишут, что через Windows Forms Host с проблемами ScintillaNET поднимается в WPF: stackoverflow.com/questions/18559516/scintillanet-...
Поэтому, я бы взял Avalon, только немного запутался. В Nuget есть такая штука:
ICSharpCode.TextEditor
Есть просто AvalonEdit: avalonedit.net
Есть SharpDevelop (вроде как на Avalon основанный): https://github.com/icsharpcode/SharpDevelop/wiki/S...
Что из этого лучше взять?
VS Code - тут вообще непонятно. У него есть свой хитрый язык объявления новых грамматик, но можно ли в нем добавить поддержку вкладок и пр. - не нашел.
TimeCoder: Потому что тянуть всю студию ради подсветки синтаксиса и функций редактирования смысла нет. Плюс если нужно использовать функции которых нет в студии (или других редакторах).
Вы путаете по AvalonEdit - компонента, даёт вам поле, по сути textBOx c дополнительными функциями. AvalonEdit - это по сути демка использования данного компонента. А SharpDevelop это IDE где используется эта компонента.
Ivan Arxont: тут двояко: с одной стороны тянуть, с другой - получить всю ее мощь (в т.ч. для возможных усовершенствований редактора). Наткнулся еще вот на такую интересную штуку: https://github.com/JetBrains/Nitra
С Sharp: компилятор не нужен, только подсветка синтаксиса и проверка грамматики. Отлично, если в AvalonEdit это есть. С VSCode две проблемы: во-первых, кастомизация делается на TypeScript (у меня в нем ни какой экспертизы), во-вторых, как и в случае всех кастомизаций (в отличие от Avalon где он используется как основа в своей разработке), есть риск уперется в ограничения API. Вот например мне нужна система вкладок (как в обычной VS), и непонятно, можно ли в VSCode это закастомизировать.
TimeCoder: Под вкладками имеется в виду на каждый файл? Сам не занимался подобными вопросами, тут ,конечно нужно потратить время ,чтобы оценить затраты и возможности.
на авалоне есть готовые решения, скорее всего . Включая, шарпдевелоп, и диассемблер ,забыл название (не ilspy)
Четыре года миновало с тех пор. В итоге да, взял AvalonEdit для отображения, ANTLER4 для парсинга кода, вместе получилась IDE, вполне быстрая, анализом синтаксиса по всему проекту, разными плюшками поиска, автозамены и пр. Проект правда в итоге закрыли, но это фриланс, нашел другие, тот же AvalonEdit потом встретил в опен-сорсном проекте (куда меня почему-то наняли за деньги): https://github.com/WildGums/CsvTextEditor