Введение
GUI-текстовый редактор для macOS
TextMate — это бесплатный и открытый текстовый редактор с графическим интерфейсом для macOS, разработанный Алланом Одгаардом. TextMate предлагает декларативные настройки, вкладки для открытых документов, возможность записи макросов, сворачиваемые разделы, сниппеты, интеграцию с командной оболочкой и расширяемую систему пакетов.
История
TextMate 1.0 был выпущен 5 октября 2004 года после 5 месяцев разработки, за которым последовала версия 1.0.1 21 октября 2004 года. Релиз был сосредоточен на качественной реализации небольшого набора функций и не включал в себя окно настроек или панель инструментов, интеграцию с FTP и возможности печати. Первоначально поддерживалось лишь небольшое количество языков программирования, поскольку было создано всего несколько «языковых пакетов». Тем не менее, некоторые разработчики посчитали эту раннюю и неполную версию TextMate приятным изменением на рынке, который считался застопорившимся из-за десятилетнего доминирования BBEdit. TextMate 1.0.2 вышел 10 декабря 2004 года. В серии бета-версий TextMate 1.1 TextMate приобрел следующие функции: окно настроек с графическим интерфейсом для создания и редактирования тем; строку состояния со списком символов; меню для выбора языка и настроек табуляции, а также «редактор пакетов» для редактирования языковых настроек. 6 января 2006 года Odgaard выпустил TextMate 1.5, первый «стабильный релиз» после 1.0.2. Отзывы были положительными, в отличие от предыдущих версий, которые подвергались критике. TextMate продолжал развиваться до середины 2006 года. 8 августа 2006 года TextMate был удостоен награды Apple Design Award как лучший инструмент для разработчиков на Всемирной конференции разработчиков Apple в Сан-Франциско, штат Калифорния. В феврале 2006 года в блоге TextMate были выражены планы на будущее развитие, включая улучшенное управление проектами, с системой плагинов для поддержки удаленных файловых систем, таких как FTP, и систем контроля версий, таких как Subversion. В течение 2007 года основное приложение изменилось незначительно, хотя его «языковые пакеты» продолжали совершенствоваться. В июне 2009 года было объявлено, что TextMate 2 готов примерно на 90 процентов, но окончательный список функций оставался нераскрытым. Публичная альфа-версия была доступна для загрузки в блоге TextMate в декабре 2011 года, а затем в конце 2016 года появилась версия-кандидат. В сентябре 2019 года была выпущена финальная версия. В августе 2012 года исходный код TextMate 2 был опубликован на GitHub под лицензией GPL 3.0 или более поздней версии, что было попыткой разработчика противодействовать ограничениям, наложенным Apple на программное обеспечение, распространяемое через Mac App Store. Odgaard заявил, что предпочитает получать исправления как общественное достояние, поскольку это сохраняет его возможность выпустить будущую версию под более разрешительной лицензией или сделать версию доступной в Mac App Store. Odgaard также отметил, что у него есть друг, который использует некоторые фреймворки TextMate в закрытом проекте, и они не могли включить исправления, выпущенные под GPL. В октябре 2021 года был сделан последний коммит на GitHub, хотя официального объявления о прекращении разработки проекта и доступности его исходного кода для общественности не было.
Языковые грамматики
Грамматика языка TextMate позволяет пользователям создавать собственные произвольно сложные режимы подсветки синтаксиса, присваивая каждому ключевому слову документа уникальное имя. Она использует модифицированную версию формата списка свойств Apple ASCII для определения языковых грамматик. Эти грамматики позволяют определять правила вложенности с использованием библиотеки регулярных выражений Oniguruma, а затем присваивать им конкретные “scopes” (области): составные метки, которые идентифицируют их для последующего оформления. Каждой позиции в документе присваивается одна или несколько областей, определяющих местоположение позиции в документе, способ её оформления и поведение TextMate в этой точке. Например, заголовок одной из ссылок в разделе "Внешние ссылки" имеет следующую область:
text.html.mediawiki
markup.list.mediawiki
meta.link.inline.external.mediawiki
string.other.link.title.external.mediawiki
markup. list. mediawiki
meta. link. inline. external. mediawiki
string. other. link. title. external. mediawiki
Эта область указывает, что мы рассматриваем заголовок ссылки, находящейся внутри ссылки, внутри списка, в документе MediaWiki. Темы TextMate могут стилизовать любую область с различной степенью детализации. Например, одна тема может решить окрашивать все константы (constant.*) одинаково, в то время как другая может решить, что числовые константы (constant.numeric.*) должны быть окрашены иначе, чем экранированные символы (constant.character.escape.*). Иерархический синтаксис областей предоставляет авторам языков и тем различные уровни детализации, позволяя каждому выбирать между простотой и полнотой, в зависимости от потребностей. В документации TextMate приведён список общепринятых имён, используемых в различных языках программирования для обеспечения совместимости между пакетами.
Управление проектами
В окне проекта TextMate можно открыть одновременно несколько документов или папок, в котором предусмотрен выдвижной блок сбоку, отображающий имена файлов и папок, и ряд вкладок в верхней части. В TextMate 1.5 этот выдвижной блок позволяет пользователям организовывать файлы и папки из любой части файловой системы, а также создавать виртуальные папки для дополнительной организации. Эта функция была удалена в TextMate 2 и заменена обычным просмотрщиком файлов. Поиск и замена могут выполняться по всему проекту, а команды могут взаимодействовать с выбранными файлами или папками в выдвижном блоке. Пакеты для CVS, Subversion, darcs и других систем контроля версий позволяют TextMate управлять кодом, находящимся под контролем версий.
Награды
TextMate 1.5 получил премию Apple Design Award как лучший инструмент для разработчиков в 2006 году.