Я хотел бы узнать, как реализован расширяемый текстовый редактор. Под расширяемостью я подразумеваю возможность расширения функциональности основной программы с помощью кода, написанного пользователями, например плагинов, файлов конфигурации среды выполнения и т. д.
Какой бы вы порекомендовали - vim
, emacs
или что-то еще? Есть kilo , который довольно популярен благодаря подходу «сделай сам», и я рассматриваю его как отправную точку, но мое основное внимание сосредоточено на том, чтобы научиться писать расширяемое программное обеспечение.
Мне нравятся такие вещи, emacs
как удобочитаемость файла конфигурации (просто вызов старых простых функций с аргументами), изменение самой среды и т. д. Есть также несколько хороших книг, emacs
таких как The Craft of Text Editing . Однако один недостаток заключается в том, что время от elisp
времени он может быть медленным.
Мне нравятся некоторые вещи, vim
такие как модальное редактирование ( <action>
<motion>
), скорость редактирования и т. д. Тем не менее, файл конфигурации временами немного загадочен, потому что он в основном связан с повторной привязкой одного набора ключей к другому, чего я на самом деле не нахожу. читабельный или интуитивно понятный (внутри он тоже может вызывать функции, но удобочитаемость меньше). Кроме того, я не уверен, есть ли учебники по vim
дизайну в России?
Вот очень хороший ресурс, который я нашел в Интернете о текстовых редакторах: http://texteditors.org/ .
Смотрите в редакторе CudaText , он написан на Lazarus и имеет все возможные расширения: плагины python, цветовые темы, синтаксические лексеры и т.д.
Я думаю, что есть несколько подходов к созданию чего-то расширяемого.
Посмотрите на Atom, разработанный Github. (атом.ио)
Нишант