Ференц, Бен
- 1 year ago
- 0
- 0
TextMate — один из самых популярных текстовых редакторов для программистов на macOS . Включает готовые библиотеки макросов и фрагменты исходного кода или текста ( сниппеты ), пригодные для повторного использования для многих языков программирования .
TextMate 1.0 был выпущен 5 октября 2004 г., после 5 месяцев разработки, за ним последовала версия 1.0.1 21 октября 2004 г. Релиз был сфокусирован на хорошей реализации небольшого набора функций и не имел окна настроек или панели инструментов, не t интегрировал 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 года на Всемирной конференции разработчиков Apple в Сан-Франциско , штат Калифорния , TextMate был удостоен награды Apple Design Award за лучший инструмент для разработчиков и вызвал «бурные аплодисменты». В феврале 2006 года блог TextMate выразил намерение в отношении будущих направлений, включая улучшенное управление проектами, с системой подключаемых модулей для поддержки удаленных файловых систем, таких как FTP, и систем контроля версий, таких как Subversion . На протяжении 2007 года основное приложение менялось незначительно, хотя его «языковые пакеты» продолжали развиваться.
В июне 2009 года было объявлено, что TextMate 2 завершен примерно на 90 процентов, но окончательный список функций не разглашается. Публичная альфа-версия была доступна для загрузки в блоге TextMate в декабре 2011 года, а в конце 2016 года был выпущен релиз-кандидат. В сентябре 2019 года была выпущена финальная версия.
В августе 2012 года исходный код TextMate 2 был опубликован на GitHub в соответствии с условиями GPL-3.0 или более поздней версии - попытка разработчика противодействовать ограничениям, которые Apple наложила на программное обеспечение, распространяемое через Mac App Store . Одгаард заявил, что предпочитает получать исправления как общественное достояние, поскольку это сохраняет его возможность выпустить будущую версию под более разрешительной лицензией или сделать версию доступной в Mac App Store. Одгаард также заявил, что у него есть друг, который использует некоторые фреймворки TextMate в проекте с закрытым исходным кодом, и они не могут включать исправления, выпущенные под GPL.
TextMate позволяет пользователям создавать свои собственные произвольно сложные режимы выделения синтаксиса , используя модифицированную версию формата списка свойств Apple ASCII для определения языковых грамматик. Эти грамматики позволяют определять правила вложенности с помощью библиотеки регулярных выражений Oniguruma , а затем назначать определенные «области»: составные метки, которые идентифицируют их для окраски. Следовательно, каждой точке документа назначается одна или несколько областей, которые определяют, где в документе находится точка, как она должна быть окрашена и каким должно быть поведение TextMate в этой точке. Например, заголовок одной из ссылок в разделе «Внешние ссылки» имеет объем. Эта область говорит нам, что мы смотрим на заголовок ссылки внутри ссылки в списке в документе MediaWiki.
Темы TextMate могут размечать любую область с разной степенью точности. Например, одна тема может решить окрашивать каждую константу ( constant.*) одинаково, в то время как другая может решить, что числовые константы ( constant.numeric.*) должны быть окрашены иначе, чем экранированные символы ( constant.character.escape.*). Синтаксис иерархической области видимости позволяет авторам языков и темам различные уровни охвата, так что каждый может выбрать простоту или полноту по своему желанию.
TextMate поддерживает определяемые пользователем и редактируемые пользователем команды, которые интерпретируются bash или интерпретатором, указанным с помощью shebang . TextMate может отправлять команды многих типов ввода (текущий документ, выделенный текст, текущее слово и т. Д.) В дополнение к переменным среды, и их вывод может обрабатываться TextMate аналогичным образом различными способами. В самом простом случае команда может получить выделенный текст, преобразовать его и повторно вставить в документ, заменив выделенный фрагмент. Другие команды могут просто отображать всплывающую подсказку , создавать новый документ для вывода или отображать его как веб-страницу с помощью встроенного средства визуализации HTML TextMate.
Многие языковые пакеты, такие как bash, PHP или Ruby, содержат команды для компиляции и / или запуска текущего документа или проекта. Во многих случаях STDOUT и STDERR процесса кода будут отображаться в окне в TextMate.
В простейшем случае « фрагменты » TextMate представляют собой фрагменты текста, которые могут быть вставлены в документ в текущем месте с помощью нажатия контекстно-зависимой клавиши или завершения табуляции. Фрагменты «интеллектуальны», поддерживают динамическое обновление «табуляции», доступ к переменным среды и возможность запускать встроенные скрипты. Это допускает сложное поведение. Позиции табуляции можно циклически перемещать с помощью клавиши «табуляция» и поддержки текста по умолчанию, раскрывающихся списков, для завершения элементов фрагмента. Результаты этих позиций табуляции могут быть динамически изменены в другой части фрагмента по мере того, как пользователь заполняет позицию. Можно использовать переменные среды TextMate, поддерживающие информацию о текущей области, номере строки или имени автора и т. Д. Во фрагментах также есть возможность запускать встроенные сценарии оболочки.
Грамматики, фрагменты, макросы, команды и шаблоны языка TextMate могут быть сгруппированы в «пакеты» функциональности. Любой фрагмент, макрос или команда могут быть выполнены нажатием сочетания клавиш, путем ввода определенного слова и последующего нажатия клавиши «табуляции» (так называемые «триггеры табуляции») или путем выбора команды из меню. Триггеры табуляции особенно полезны; Комбинация триггеров табуляции и фрагментов значительно упрощает кодирование на подробных языках или языках с обычно типизированными шаблонами.
Фрагменты, макросы и команды могут быть ограничены определенной областью действия, так что, например, команда «закрыть тег html» не работает в сценарии python, освобождая это сочетание клавиш для использования в других целях. Это позволяет отдельным языкам и даже отдельным областям действия переопределять встроенные команды, такие как «Переформатировать абзац», более специализированными версиями. Даже специальные клавиши, такие как клавиша возврата и пробел, могут быть переопределены.
Доступен репозиторий Subversion, содержащий гораздо больше пакетов, чем поставляется с пакетом редактора, для всего, от Markdown до ведения блогов и языка ассемблера MIPS .
Несколько документов или папок могут быть открыты одновременно в окне проекта TextMate, в котором есть ящик со списком имен файлов и папок, а также ряд вкладок вверху. В TextMate 1.5 этот ящик предоставляет пользователям средства для организации файлов и папок по всей файловой системе, а также возможность создавать виртуальные папки для дальнейшей организации. Эта функция была удалена из TextMate 2 и заменена обычным файловым браузером . Поиск и замену можно выполнять по всему проекту, а команды могут взаимодействовать с выбранными файлами или папками в ящике. Пакеты для CVS , Subversion, darcs и других систем контроля версий позволяют TextMate управлять версионным кодом.
TextMate имеет много общих для редакторов программирования функций:
Кроме того, TextMate поддерживает функции для хорошей интеграции с графической средой OS X:
TextMate имеет несколько ограничений по сравнению с другими редакторами этого класса:
TextMate 1.5 выиграл премию Apple Design Award за лучший инструмент для разработчиков в 2006 году.