Евгений Темиргалеев писал(а):
Вы не рассматривали вариант чтобы использовать для редактирования ББ? К нему ведь можно прикрутить что угодно - и "плагины" и вызов компилятора XDS...
Я пошёл по пути наименьшего сопротивления. Чтобы в ББ прикрутить подсветку синтаксиса, надо залезть куда-то внутрь подсистемы Text, вывести наружу "проводки", потом снаружи к ним что-то "припаять" (плагин), а потом проверять как оно работает и почему. В Notepad++ достаточно ввести список ключевых слов в поле ввода, выбрать цвет текста, фона и сохранить настройки. Я смотрел в подсистему Text, когда разбирался с проблемами отображения юникодных символов. Честно скажу, большого желания двигаться в этом направлении не появилось.
В Notepad++ пришлось порыться, но относительно недолго и только на поверхности, поскольку все необходимые привязки уже вынесены в интерфейсы (опубликованы функции, коды команд). Scintilla - вообще песня: отличная документация, простая и единообразная работа с командами. Подключил - и работает. В ББ была бы ещё головная боль с поддержкой, которую я, как разработчик ответственный, не могу сбрасывать со счетов. Во-первых, пришлось бы скорее всего клонировать подсистему Text, во-вторых, думать про 1.5 vs. 1.6. Бинарные исходники сильно затрудняют автоматизированный анализ изменений (готовыми инструментами типа WinMerge) и автоматическое ветвление/слияние с помощью существующих систем контроля версий. Конечно, можно было бы написать инструмент для сравнения файлов (например, по схеме экспорт->сравнение->импорт), но это, опять же, долгие дни работы.
Возможности GUI в ББ тоже оставляют желать. Либо изучать WinApi, либо изобретать текстовые интерфейсы. Оба пути долгие и трудные. Например, только недавно я придумал, как можно было бы реализовать контекстный список команд. В Scintilla всё это уже есть, просто отправляешь одно сообщение - и список отображается привычным образом. Другой пример - у меня есть реализация тулбара, которая отображает список открытых окон и работает как панель закладок (tab), но до приличного вида довести её так и не удалось из-за незнания WinApi. Замучился искать, в чём проблема, и бросил. Самому пользоваться ещё ладно, но другим рекомендовать - не дозрела.
Есть и другие странности. Например, любит ББ очищать буфер UNDO после сохранения документа. Отключается это только хирургически путём залезания вовнутрь, настройки такой нет, а после отключения в интерфейсе появляются странности: после выполнения цепочки Save+Undo команда "Сохранить" не доступна, хотя документ в окне отличается от документа на диске.
Я старался написать свой плагин так, чтобы его легко можно было портировать в другое окружение. То есть, привязки к внутренностям Notepad++ достаточно хорошо локализованы. Если кто-то заинтересован - пожалуйста, давайте согласовывать интерфейсы. Я скажу, что мне нужно, и что будет на выходе, а вы со своей стороны обеспечите использование и отображение.
Наверное, резюме такое, что в Notepad++ порог вхождения не только оказался существенно ниже, он оказался похож на лестницу. Сначала понятно, как настроить подсветку, потом понятно, как увидеть список функций, затем ясно, как написать плагин, далее видно, как сделать с текстом всё что угодно. Шаг за шагом настроил как нужно. А как правильно дополнить ББ или подсистему Text, и с чего вообще начинать - мне, например, не понятно.
Собственно, по этой же причине я не сделал свой плагин для какого-нибудь gVim или Emacs: высокий порог вхождения, непривычный интерфейс.