Предисловие
3 года назад мне потребовалась программа для реализации проекта по построению сайта средствами XML + XSLT. Однако найти такое ПО в далёком 2005 было весьма непросто. Большинство приложений подобного рода (а мне была нужна именно IDE - Integrated Development Environment, "интегрированная среда разработки") были написаны на языке Java: знаменитый jEdit, молодой тогда ещё Eclipse, платный XML-редактор oXygen с некоторыми функциями IDE.
Неудобства заключались в следующем: постоянное "пожирание" памяти виртуальной машиной Java на моём довольно не мощном ПК давало о себе знать примерно каждые полчаса - с большим количеством текста программы не справлялись; отсутствие дополнительных возможностей, таких как встроенный файловый менеджер, терминал, сказывалось на моей производительности, потому что каждый раз приходилось "бегать" по файловой системе в поисках нужной информации и использовать её для компоновки.
Конечно, были и родные аналоги: в Bluefish я сделал несколько простых Web-страниц, но для работы с серьёзным проектом ее было явно недостаточно. Многие спросят о KDevelop или Anjuta, последняя из коих на то время был вообще в непотребном состоянии. Но данные пакеты тянули за собой множество зависимостей из библиотек, а об их стабильности и говорить не приходилось. Кроме того, для того же создания графического интерфейса был разработан Glade.
Первое знакомство
Желание найти что-то подходящее было сильнее лени, потому как это могло упростить работу не только над текущим проектом, но и в будущем по специальности вообще. Блуждая по просторам Сети, я наткнулся на релиз Geany 0.1. Тогда сайт geany.uvena.de смотрелся весьма примитивно и блекло на фоне домашних страниц многих других законченных проектов. В то же время он был удобен для навигации и обладал исчерпывающей информацией о программе и её возможностях. В первых версиях они были невелики, но очень чётко обозначены и имели некую логическую законченность: это редактор с подсветкой синтаксиса основных языков (C/C++, Java, Perl, PHP, XML); список открытых файлов (вкладок) для редактирования; поддержка разных типов окончания строки и кодировок; автоматическое дополнение в XML-тегах.
Но самое главное, что меня тогда привлекло в программе - это её размер при таком количестве возможностей. Всего несколько десятков килобайт. Этот довольно лёгкий и быстрый редактор с возможностями IDE сразу показал себя с хорошей стороны, когда я написал первую законченную часть проекта (он был посвящён Сталинградской битве, поэтому несложно представить, сколько текстовой информации пришлось обработать и хранить одновременно в окнах Geany).
Основные возможности
С течением времени проект развивался (первые 5 релизов выходили с частотой в 2-3 недели), и количество возможностей Geany постоянно увеличивалось. При этом сохранялся принцип KISS (Keep It Simple, Stupid), который так нелегко отыскать в современных проектах. Программа оставалась лёгкой, быстрой и функциональной. Итак, на сегодняшний день Geany - это:
- подсветка синтаксиса множества языков программирования, скриптинга, разметки и даже запросов: ASM, C, C++, CAML, CSS, D, Diff, Fortran, Haskell, X(HTML), Java(Script), LaTeX, Lua, Make, Pascal, Perl, PHP, Python, Ruby, Sh, SQL, TCL, XML и др.;
- автоматическое определение конструкций кода, которые можно сворачивать (code folding);
- автодополнение известных конструкций, таких как if, for, while и т.д.;
- автодополнение тегов XML и HTML;
- автоматическое определение и создание отступов;
- списки символов функций, классов, объектов;
- поддержка построения проекта (compile, link, run);
- встроенный эмулятор терминала посредством VTE;
- дополнительные возможности: диалоговое окно выбора цвета, поиск, настройка "горячих" клавиш, поиск;
- поддержка встроенных и созданных пользователем шаблонов;
- менеджер проектов (обеспечивает лёгкую работу с несколькими работами);
- интерфейс для написания модулей к Geany.
Нужно сказать, что последнее - очень важная особенность, которой не хватает многим современным IDE. Благодаря ней, программу легко "пичкать" новым функционалом от сторонних разработчиков.
Секреты мастерства
Конечно же, основа любого, даже самого простого, но удобного редактора для программиста - это подсветка синтаксиса. У Geany не свой движок, написанный с нуля. Энрико Трогер (Enrico Troger), замечательный программист, написавший несколько программных продуктов для рабочей среды XFCE, пошёл по пути наименьшего сопротивления: в Geany он использует наработки людей, специализирующихся на подсветке синтаксиса, - движок Scintilla, которому очень много лет, но его разработка до сих пор идет в правильном направлении.
После того, как проект встал на ноги, потребовалась очередная полезная возможность - наличие встроенного терминала. Используя библиотеку VTE, реализовать его было довольно просто. Зато после появления терминала Geany позволила пользователям отказаться от лишних окон для прямой работы с проектами.
Таким образом, Geany на первых стадиях, возможно, и не представила ничего сверхъестественного для IDE - она лишь вобрала в себя всё лучшее от существующих библиотек и предоставила к этому понятный, простой и удобный интерфейс.
В одном из последних релизов появился модульный API, в результате чего некоторые функции (встроенный файловый менеджер, автосохранение, создание diff-файлов, экспорт и др.) были вынесены в модули, которые можно включать/отключать посредством менеджера плагинов в программе.
Модульный интерфейс сделал программу очень мощным инструментом, благодаря которому теперь можно повышать не только свою производительность, но и скорость загруженности/работы самой Geany. Ненужные модули отключаются простым кликом мышки.
Настройка
Управление всем функционалом, который сейчас способна предоставить Geany, очень важно правильно организовать. Настроек действительно много:
- Сессии и сохранение файлов внутри проекта.
- Настройка сообщений.
- Расположение основных элементов интерфейса (редакторское окно, панель инструментов, список открытых файлов, список символов).
- Редакторское окно: отступы, шрифты, цвета.
- Установка типов файлов и кодировки по умолчанию.
- Основные параметры шаблонов.
- Горячие клавиши.
- Параметры печати.
- Настройки встроенного терминала.
Шаблоны и модули
Развитие успешного проекта повлекло за собой интерес сторонних разработчиков. Моё первое письмо к Энрико заключалось в просьбе добавить подсветку синтаксиса для языка Lua и шаблон для лицензии BSD. С тех пор многие помогали улучшать программу и наращивать функционал.
Помимо множества шаблонов, среди которых - различные лицензии, базовые конструкции программ, время/дата и другое, в настоящее время создано несколько проектов, занимающихся разработкой модулей для Geany:
- GeanyLua - плагин для использования скриптов на языке Lua (графические элементы, события);
- GeanyDebug - плагин для использования GNU debugger (gdb) в Geany;
- GeanySendMail - плагин для отправки текущего файла в качестве прикреплённого в выбранном почтовом клиенте;
- geanyvc - плагин для работы с системами управлением исходным кодом: CVS, Bazaar, GIT, Mercurial, Subversion, SVK;
- GeanyLaTeX - плагин, улучшающий использование файлов LaTeX в Geany;
- geanyprj - альтернативный менеджер управления проектами;
- geanydoc - позволяет выполнять команды при выборе слова рядом с текущей позицией курсора;
- Spell Check - проверка орфографии в Geany при помощи Aspell;
- Backup Copy - создание временных копий после сохранения файлов проекта;
- Instant Save - сохранение новых файлов без лишнего диалогового окна.
Большинство из них написано энтузиастами, которым не хватало в Geany какой-либо важной для их пользовательского процесса мелочи. Кроме того, существует список плагинов, представленный пользователями в качестве пожеланий к следующим версиям. Многие сторонние разработчики берут из него идеи и создают целые серии плагинов для Geany.
Дополнительные возможности
Многие мелочи в Geany могут приятно удивить. Например, кнопка с диалоговым окном выбора цвета будет особенно полезна Web-разработчикам, когда не нужно открывать графический редактор или вспомогательную программу для просмотра Web-интерпретации цветового оттенка.
Конечно же, поиск и автоматическая замена для любого редактора является обязательной. Geany здесь не исключение. Переход к конкретной строке в файле в виде удобного окошка в панели инструментов также помогает при навигации. Автоматическая замена всех символов <tab> на пробелы может помочь разработчикам на языке Python правилам PEP-8.
Поддержка
В настоящее время поддержка проекта осуществляется множеством людей: основными координаторами проекта, переводчиками (за время существования Geany программу перевели на 22 языка мира), высылающими патчи по улучшению возможностей и исправлению ошибок (их список можно увидеть здесь). У проекта существует множество средств связи: IRC-канал #geany на Freenode (irc.freenode.net), списки рассылки для пользователей (geany), переводчиков (geany-i18n) и разработчиков (geany-devel), а также, конечно, электронная почта.
Заключение
Вот так, спустя 3 года из крохотного проекта развилась полноценная IDE, занимающая высокие места в рейтингах и получающая отличные оценки среди специалистов. Но самое главное, что миру Open Source достался продукт, который вполне может конкурировать с тем же Komodo от ActiveState, превосходя последнего в производительности и функциональной мощи.
Ссылки по теме