Я ищу редактор кода со специфическими функциями. Для Windows, коммерческий или бесплатный.
Список необходимых функций:
- Редактор должен быть независимым от языка, а языковые функции должны быть настраиваемыми и импортируемыми/экспортируемыми через внешние определения, по возможности прозрачными для пользователя. Так, например, если я создаю свой собственный язык, я могу создать собственный лексер и схемы выделения и т. д. Очевидно, что возможность использовать или создавать расширенные функции для любого языка (например, средства проверки грамматики, списки переменных/функций и т. д.) была бы замечательной.
- Скриптовый/программируемый : должен иметь поддержку скриптов (в идеале с Python) с доступом к тексту, курсору и другим внутренним функциям редактора, чтобы я мог программировать функции редактирования и привязывать их к ярлыкам. В идеале с возможностью использования графического интерфейса редактора (например, показать список в боковой панели и т.д.).
- Настраиваемые функции подсветки синтаксиса. Т.е. не только базовые вещи, но и возможность определять стили для отдельных символов и последовательностей (например, сопоставление регулярных выражений), а также чтобы можно было установить другой шрифт , размер и цвет для соответствия. (обратите внимание на ударение). [*]
- Линии могут быть разной высоты . Например, если я установлю стилизатор на шрифт 5pt, и он будет соответствовать всей строке, строка будет иметь высоту 50% по сравнению с высотой строк с размером 10pt.
- В идеале с поддержкой отступов строк (древовидное редактирование). Уровень отступа (уровень вложенности) должен быть доступен через сценарии (например, для создания исполняемого кода Python). ( Примечание : пожалуйста, не путайте отступы со вставкой пробела или символа табуляции! Отступы здесь = нередактируемый горизонтальный пробел).
[*] Важное примечание к требованию №3: несмотря на то, что некоторые редакторы имеют расширенные возможности форматирования, общая проблема заключается в том, что они применимы только к так называемым «токенам» (например, ключевым словам, функциям). Так что обратите внимание, что этого недостаточно. Чтобы лучше понять, что я имею в виду, вот конкретные примеры того, что мне нужно сделать:
- установить шрифт/размер только для кириллических букв внутри строк;
- установить шрифт/размер только для цифр внутри идентификаторов;
- установить шрифт/размер для символа дефиса внутри слова; так далее...
Дополнительные критерии (менее важные):
- он должен быть быстрым и отзывчивым, без особых наворотов;
- было бы здорово, если бы он активно развивался, так что хотя бы есть шанс, что будут добавлены какие-то полезные функции;
- расширенный API сценариев для интерактивных функций, например, возможность считывать координаты мыши и определять символ или линию под курсором мыши;
- адекватная поддержка табулирования (с учетом отступов);
- никаких навязчивых раздражающих функций, таких как мигание, анимация, переключение фокуса, перегрузка процессора и жесткого диска и т. д.
Вопрос:
Пожалуйста, предложите редактор, который поддерживает все вышеперечисленные функции.
Даже если не все поддерживается из коробки, но возможно через скрипты/расширения, пожалуйста, также дайте предложение и некоторые описания.
Другими словами, даже если редактор не совсем редактор кода, но он может выполнить требования, он также может дать полезный ответ.
Не в качестве реального примера, а просто для иллюстрации альтернативного подхода: например, можно использовать, например, Word или Adobe InDesign для редактирования кода, затем генерировать исходники и передавать их другим инструментам. Да, это было бы абсурдно для этой задачи, но просто хочу сказать, что, например, в InDesign все функции выделения и, например, генерация кода возможны с помощью сценариев, так что в теории это жизнеспособный вариант.
Что я тестировал до сих пор со списками по функциям:
Блокнот++
Этот редактор отвечает многим требованиям, но все же многие функции ограничены. Супер быстро, без наворотов. Он основан на движке Scintilla, который имеет множество расширенных функций, опережающих свое время. Кое-что возможно через плагины. Следует отметить, что разработка подключаемого модуля в основном требует разработки приложения на C++, что может быть довольно сложной задачей.
Итак, к моему списку функций:
- Частично. Например, чтобы определить выделение для пользовательского языка, необходимо использовать UDL, но это ограничено (см. 3.). Встроенные лексеры жестко закодированы, dev-гайдов нет.
- Да, например, с помощью плагина PythonScript, и это хорошо.
- Частично. Проблема в том, что он не поддерживает совпадения на основе регулярных выражений.
Таким образом, я могу определить стили с различными шрифтами/размерами, но я могу применить их только к токенам, которые определены лексером (жестко закодированы) или через UDL, но UDL ограничен унифицированным токенизатором грамматики (без пользовательских групп операторов , никаких пользовательских последовательностей совпадений). Таким образом, в основном композитор Scintilla поддерживает это, но редактор не предоставляет это пользователю, поэтому нет возможности использовать его напрямую.
- Нет (все линии имеют одинаковую высоту).
- Нет.
гВИМ
Отличный редактор, супер быстрый и настраиваемый. Но довольно ограничен в графических возможностях.
- Да.
- Да.
- Нет. (при этом ограничивается только моноширинными шрифтами , но в качестве приятного бонуса имеет подсветку на основе регулярных выражений)
- Нет.
- Нет.
VSCode
Я тестировал его только некоторое время, поэтому не могу быть уверен в некоторых функциях. Он довольно медленный, поэтому на слабых машинах его вряд ли можно будет использовать.
- ???. Кажется, что он имеет тенденцию расширяться для поддержки любого языка через расширение, но общая картина неясна, и его развитие кажется довольно хаотичным.
- ???. Возможны расширения, но я не смог найти четких инструкций или руководства для разработчиков. Также кажется, что многие части основного редактора вообще недоступны для настройки/доступа.
- Нет.
- Нет.
- Нет.
иваниван
Михаил В
Михаил В