Авторы: | Enrico Troeger
Nick Treleaven Frank Lanitz |
---|---|
Переводчики: | Григорий Шмерлинг
Денис Корявов |
Дата: | 2010-05-22 |
Версия: | 0.19 |
Copyright © 2005-2010
Документ распространяется на условиях GNU General Public License, публикуемых Free Software Foundation; версии 2 или любой более поздней. Копии этой лицензии находятся в файле COPYING в исходных текстах программы, а также в главе GNU General Public License.
СОДЕРЖАНИЕ
Основной задачей при создании Geany было получить компактную и быструю интегрированную среду разработки (IDE) с минимальной зависимостью от других пакетов. Второй задачей Geany была независимость от любой оболочки (KDE, GNOME и т.п.) — Geany требует только наличия исполняемых библиотек GTK2.
Основные функции Geany:
Geany можно получить на сайте http://www.geany.org/. Возможно, Geany уже включен в ваш дистрибутив.
Geany распространяется на условиях GNU General Public License, публикуемых Free Software Foundation; версии 2 или любой более поздней. Копии этой лицензии находятся в файле COPYING в исходных текстах программы, а также в главе GNU General Public License.
Входящая в состав системы библиотека Scintilla library (находится в подкаталоге scintilla/) имеет свою собственную лицензию, приведенную в главе Лицензии на Scintilla и SciTE.
Документация распространяется в форматах HTML и текстовом. Последнюю версию документации можно найти на сайте http://www.geany.org/.
Если у вас есть желание дополнить документацию, см. Как принять участие в разработке документации.
В системе должны быть установлены библиотеки GTK (>= 2.8.0) и связанные (Pango, GLib и ATK). Обычно дистрибутив уже содержит все необходимое, и установка библиотек выполняется по умолчанию. Для Windows загрузите программы установки с сайта поддержки этих библиотек.
Доступно большое число пакетов программ в виде готовых бинарных кодов. Постоянно пополняемый список находится здесь: http://www.geany.org/Download/ThirdPartyPackages.
Скомпилировать Geany несложно. Понадобятся библиотеки GTK (>= 2.8.0) и заголовочные файлы, в том числе Pango, GLib и ATK. Все это имеется на http://www.gtk.org, но, как правило, включается в дистрибутивы с Geany.
Разумеется, понадобятся компиляторы C и C++. Рекомендуем использовать компиляторы лицензируемые согласно GNU.
Система сборки с использованием утилиты Make общеизвестна и хорошо отлажена.
Потребуется выполнить следующие команды:
$ ./configure $ make
% make install
Система сборки кода с использованием Waf новая, ее разработка продолжается, но системой уже можно пользоваться. В отличие от make, для работы waf должен быть установлен Python. Waf сборка немного быстрее. Главное ее преимущество проявляется в ситуации, когда сборку необходимо повторять несколько раз, внося небольшие изменения в исходные тексты — возможно, только в один-другой из множества файлов. При этом благодаря использованию специального кэша Waf оказывается намного быстрее. Подробности см. ниже в разделе Кэш Waf. При сборке Geany с помощью Waf выполняются команды:
$ ./waf configure $ ./waf build
% ./waf install
Используя кэш, Waf выполняет сборку исполняемого кода не затрачивая время на перекомпиляцию не менявшихся частей исходных текстов программы. Это весьма типичная ситуация в процессе отладки, когда изменения вносятся лишь в один из модулей и необходимо сразу проверить получаемый результат.
Кэш объявляется переменной окружения WAFCACHE. Размещается кэш обычно в каталоге ~/.cache/waf, который необходимо создать заранее командой
$ mkdir -p ~/.cache/waf
и затем объявить для вашей оболочки соответствующую переменную окружения (приводим пример для Bash):
export WAFCACHE=/home/username/.cache/waf
Не забудьте заменить username своим именем пользователя.
Дополнительную информацию о работе с кэшем Waf можно найти на сайте http://code.google.com/p/waf/wiki/CacheObjectFiles.
Следует присматривать за каталогом кэша, так как его размер может в ходе работы очень сильно расти. Waf пока этого не делает, так что кэшем придется заниматься вам. Проще всего дать команду, которая удалит из кэша все файлы старше 14 дней:
$ find /home/username/.cache/waf -mtime +14 -exec rm {} \;
Подробности о команде find, ее ключах и опциях см. в ее руководстве manual.
Скрипт конфигурирования поддерживает ряд вариантов, для получения справки по которым дайте команду
$ ./configure -help
или, если используете сборщик Waf,
$ ./waf -help
Варианты установки подробно рассмотрены в файле INSTALL. См. также раздел Опции компиляции.
Если ваша система не поддерживает динамическую загрузку, вероятно вы захотите включить опцию -disable-vte в скрипте configure. Это предотвратит компиляцию Geany с поддержкой динамической загрузки libvte.so.4 (в случае доступности).
Если при компиляции возникают какие либо ошибки, проверьте окружение при сборке и попытайтесь найти ошибку; в случае неудачи напишите в рассылку или одному из авторов. Можно также обратиться к поставщику вашего дистрибутива.
Если после инсталляции потребуется редактировать какие-либо конфигурационные файлы, вам необходимо знать префикс инсталляции, т.е. путь к каталогу в который установлен Geany.
Используйте -print-prefix опцию Geany для проверки (см. Опции командной строки). Первый путь и будет искомым префиксом.
Обычно это каталог /usr если вы устанавливали готовую систему или /usr/local если система компилировалась из исходных текстов.
Запустить Geany можно следующими способами:
С помощью меню рабочего стола:
Выберите в меню приложений для рабочего стола команду : Разработка -> Среда разработки Geany.
С помощью командной строки:
Наберите команду и нажмите Enter:
% geany
Так выглядит окно Geany. В нем имеются следующие области:
Модули для Geany могут добавлять на боковую и нижнюю панели дополнительные страницы.
Порядок закладок страниц можно настроить в интерфейсных предпочтениях (preferences).
Размеры панелей можно менять, перетаскивая мышью разделительные линии.
Кратко | Полностью | Описание действия |
---|---|---|
- | +число | Задает переход к строке с указанным номером в первом открываемом файле (так же как и -line). Например, "geany +7 foo.bar" откроет файл foo.bar и поместит курсор редактора в строку 7. Между знаком плюс и числом не должно быть пробела. |
- | -column | Задает переход к столбцу с указанным номером в первом открываемого файле. |
-c dir_name | -config= directory_name |
Использовать файлы конфигурации из альтернативного каталога (каталог по умолчанию — ~/.config/geany/. |
- | -ft-names | Вывести список имен внутренних типов файлов (полезно для настройки сниппетов). |
-g | -generate-tags | Сгенерировать файл глобальных тегов (см. Генерация файла глобальных тегов). |
-P | -no-preprocessing | Отключить препроцессинг файлов C/C++ при генерации тегов. |
-i | -new-instance | Не открывать запущенные файлы, создать новые экземпляры. Опция применима только если Geany скомпилирован с поддержкой сокетов. |
-l | -line | Задает переход к строке с указанным номером в первом открываемого файле. |
- | -list-documents | Возвращает список документов, открытых в Geany. Опцию можно использовать для доступа к списку открытых в данный момент документов из какой-либо внешней программы. Список построчный, включает полные имена файлов в кодировке UTF-8. Опция применима только если Geany скомпилирован с поддержкой сокетов. |
-m | -no-msgwin | Не показывать окно сообщений. Используйте эту опцию, если не требуется видеть сообщения компилятора и не нужна поддержка VTE. |
-n | -no-ctags | Не загружать данные для завершения имен и советы. |
-p | -no-plugins | Не загружать модули, отключить поддержку модулей. |
none | -print-prefix | Вывести (stdout) префикс установки, каталог данных, каталог библиотек, локальный каталог (в этом порядке, построчно). |
-s | -no-session | Не загружать файлы, с которыми работали в предыдущем сеансе. |
-t | -no-terminal | Не загружать поддержку терминала (когда не нужен эмулятор терминала). Поддержка терминала возможна только если Geany скомпилирован с поддержкой VTЕ. Если в системе не установлен libvte.so.4, поддержка терминала недоступна. |
- | -socket-file | Использовать это имя файла сокета для коммуникации с запущенной копией Geany. Можно использовать совместно с командой вызова Geany в текущем рабочем пространстве: geany -socket-file=/tmp/geany-sock-$(xprop |
- | -vte-lib | Указание полного пути или только имени файла библиотеки VTE, /usr/lib/libvte.so или libvte.so. Опция нужна только если не срабатывает автоматическое определение. Доступна если Geany скомпилирован с поддержкой VTE. |
-v | -verbose | Выводить сообщения о действиях и статусе. |
-V | -version | Вывести информацию о версии и завершить работу. |
-? | -help | Показать справочную информацию и завершить работу. |
- | [files ...] | Загрузить перечисленные файлы вместо тех, с которыми работали в прошлой сессии. Можно попросить Geany сразу показать нужную позицию в файле (строку и столбец). например, команда "geany foo.bar:10:5" откроет файл foo.bar, поместив курсор в 54-ю позицию на 10-й строке. Можно указать и открыть целый проект, но для этого файл проекта (*.geany) должен быть первым аргументом после ключей опций. Если при этом указаны и другие файлы, они игнорируются. |
Geany поддерживает и все общие опции GTK, список которых приведен в справке (см. geany --help для подробностей).
При запуске Geany загружает все файлы, которые были открыты в предыдущем сеансе работы. Можно отказаться от такой загрузки в настройке предпочтений (см. Общие настройки запуска). Если указать какие-либо файлы в командной строке запуска, будут открыты только эти файлы. При этом список файлов, с которыми вы работали раньше, можно открыть в меню "Недавние файлы". По умолчанию здесь показаны 10 последних файлов. Изменить это число можно в настройках предпочтений.
При запуске нескольких копий Geany только первая из них открывает файлы предыдущего сеанса работы. При запуске второй копии Geany не указывайте в командной строке открываемые файлы или отключите опцию их загрузки.
При запуске Geany проверяет, нет ли в памяти ранее запущенной копии, и при ее наличии открывает те же файлы, что были указаны в командной строке при первом запуске. Geany подобно файловому менеджеру не «захватывает» файлы, а позволяет просматривать и редактировать их из другой программы.
При открытии файла можно указать строку и столбец (позицию) в которую будет помещен курсор, например:
geany some_file.foo:55:4
файл some_file.foo будет открыт на строке 55, курсор в позиции 4.
Если почему-либо такое поведение программы вам не нравится, можно отключить опцию «копирования» открываемых файлов из командной строки первой копии соответствующим ключом командной строки - см. раздел Опции командной строки.
Если вы установили в системе libvte.so, Geany загружает его автоматически и в нижней части окна появляется значок-виджет терминала (закладка).
Если при запуске Geany не находит libvte.so, виджет не загружается. Эмулятор терминала можно отключить, см. раздел Опции командной строки.
С этим терминалом (далее будем называть его VTE) можно работать по большей части так же, как с любой терминальной программой, например xterm. Поддерживается работа с буфером обмена, с помощью которого текст можно копировать или переносить в окно VTE или из него (команды в меню при нажатии правой кнопки мыши). В системах с X Window System вставка из буфера делается средней кнопкой мыши; для двухкнопочных мышей действие средней кнопки часто воспроизводится нажатием сразу на обе имеющиеся).
Оболочку, которая будет использована в VTE, можно указать в настройке предпочтений. Для входа используйте командную строку, необходимые команды вы найдете в manual оболочки. Для zsh и bash используйте аргумент -login.
Замечание
Geany ищет для загрузки файл с именем libvte.so, а при его отсутствии некоторые другие имена. В случае проблем проверьте, правильно ли вы установили libvte. Заметим, что сам Geany будет работать и без этой библиотеки.
Возможно, файл библиотеки называется не libvte.so, а как-то иначе (например, для FreeBSD 6.0 — libvte.so.8). В таком случае укажите правильную ссылку:
# ln -s /usr/lib/libvte.so.X /usr/lib/libvte.so
Не забудьте только заменить X на номер вашего libvte.so.
Можно также задать имя библиотеки VTE в командной строке (см. Опции командной строки) или во время компиляции, указав опцию -with-vte-module-path для ./configure.
Для многих частей графического интерфейса Geany можно создать свой стиль виджетов. Для этого отредактируйте ваш .gtkrc-2.0 (обычно он находится в вашем домашнем каталоге в UNIX-подобных системах и в подкаталоге etc при установке Geany в Windows).
Для использования стиля необходимо приписать его как минимум одному из виджетов Geany, например, командой
widget "Geany*" style "geanyStyle"
Эта команда определяет стиль "geany_style" всех виджетов Geany. Можно ограничиться только некоторыми виджетами из числа следующих:
Пример задания стиля шрифта .gtkrc-2.0:
style "geanyStyle" { font_name="Sans 12" } widget "GeanyMainWindow" style "geanyStyle" style "geanyStyle" { font_name="Sans 10" } widget "GeanyPrefsDialog" style "geanyStyle"
Переключаться с одного файла (документа) на другой можно с помощью мыши и клавишными командами. Отметим, что в списке файлов их порядок алфавитный, а на страницах редактора — нет.
Закладки страниц можно расположить с любой стороны главного окна редактора, выбрав нужную сторону в настройке предпочтений.
В разделе Команды работы с окнами документов и их закладками указаны полезные клавиатурные сокращения, включая наиболее часто употребимые для переключения между документами.
Используя возможности библиотеки GLib, Geany автоматически определяет правильную кодировку файлов и поддерживает конвертирование из одной кодировки в другую..
Работать в редакторе можно только с текстовыми файлами. Geany попытается открыть любой заданный файл, но, если в нем обнаружится байт NULL, файл будет усечен по этому байту. Все следующие символы при последующем сохранении будут потеряны.
При открытии файла Geany попытается определить его кодировку. Как правило, это удается, но иногда кодировка может быть определена неверно. В таком случае задайте ее вручную, чтобы файл отображался правильно.
Вот какими способами может быть задана кодировка:
В диалоге открытия файлов
Для этого в диалоге имеется выпадающий список. При выборе варианта "Распознать по содержимому" используется автоматическое определение. Если выбрать вариант "Без кодировки (None)" файл будет открыт без попыток определить кодировку, как есть.
С помощью команды меню "Обновить как"
Данная команда повторно открывает текущий файл, позволяя при этом сменить кодировку.
С помощью команды меню "Установить кодировку"
Это команда перекодировки. В отличие от предыдущих, она не меняет кодировку загруженного файла, а устанавливает выбранную кодировку при его сохранении.
Указание кодировки в самом файле
Как мы уже отмечали, автоопределение кодировки удается не всегда. Обнаружив, что Geany неправильно открывает какой-либо файл, вы можете добавить в него явную спецификацию применяемой кодировки (character set), и Geany будет руководствоваться этой информацией.
Geany понимает мета-тег HTML, содержащий информацию о кодировании файла, например:
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-15" />
Для файлов других форматов (не HTML) задайте кодировку в закомментированной строке следующим образом:
/* geany_encoding=ISO-8859-15 */
или:
# geany_encoding=ISO-8859-15 #
# и /* .... */ — примеры символов, указывающих на комментарий, который будет пропущен компилятором. Формат записи комментариев зависит от конкретного языка программирования; для нас сейчас ограничивающие символы не важны: кодировка указана подстрокой " geany_encoding=ISO-8859-15 " (в которую входят начальный и концевой пробелы). Кодировку ISO-8859-15 Geany постоянно принимает за ISO-8859-1; после вставки в файл приведенной подстроки файл будет открываться правильно.
Начиная с версии Geany 0.15 для задания кодировки можно также использовать строку, соответствующую шаблону: coding[\t ]*[:=][\t ]*([a-z0-9-]+)[\t ]*
Заметим, что...
спецификацию кодировки необходимо разместить в пределах первых 512 байт файла.
Примеры:
# encoding = ISO-8859-15
или:
# coding: ISO-8859-15
Указание кодировки "None" означает, что не следует пытаться подобрать кодировку файла. Это может быть полезно, например, при попытке открыть файл неизвестного формата «как есть», хотя бы до первого нулевого байта 00h (NULL).
При открытии файлов в двухбайтовых кодировках Unicode Geany обнаруживает и учитывает ВОМ, если метка присутствует в файле (см. http://en.wikipedia.org/wiki/Byte_Order_Mark). В Unix-подобных системах использование ВОМ может вызвать проблемы с программами, которые ее не учитывают. Например, компилятор gcc останавливается с выдачей сообщения об ошибке, PHP не может разобрать содержащий ВОМ скрипт и т.д. В строке статуса Geany будет показано наличие ВОМ в файле.
Если требуется поставить или удалить BOM, используйте меню документов и соответствующую настройку.
Заметим, что...
если вы не знаете, есть ли в файле BOM, нужна ли эта метка и что с ней делать — можно про нее забыть.
Geany поддерживает свертывание, т.е. возможность временно скрывать и снова разворачивать фрагменты редактируемого исходного текста. При этом в окне редактора слева появляются небольшие серые значки [+] и [-], указывающие на наличие скрытого фрагмента текста и возможность скрытия соответственно. Секции отмечаются вертикальными линиями. Многие типы файлов поддерживают иерархическое свертывание (вложенность сворачиваемых фрагментов)..
Заметим, что...
Вы можете изменить стиль значков и линеек свертывания — см. filetypes.common Настройки свертывания.
Если свертывание текста вам не нравится или вы им не пользуетесь, можно отключить его в настройке предпочтений.
Отметка "Сворачивать/Разворачивать все вложенные элементы" в настройке предпочтений определяет, будут ли при наличии вложенного свертывания открываться сразу все уровни свернутого текста ниже текущего.
Если при щелчке по значку свертки нажата клавиша Shift, действие опции меняется на обратное, т.е. если, например, включено раскрытие всей иерархии — с Shift откроется только первый уровень.
Выделяя текст при нажатых клавишах Control и Shift (или Control и Alt, если первая комбинация не срабатывает), можно выделить прямоугольный блок. Внутри выделенного блока можно затем редактировать текст.
Выделенный фрагмент текста можно перетащить мышью на новое место, как во многих других текстовых редакторах. Если при перетаскивании нажать и удерживать клавишу Control, вместо перетаскивания текст будет скопирован.
Geany позволяет делать отступы как с помощью табуляций, так и вставкой ряда пробелов. Применяемый способ выбирается при настройке предпочтений редактирования (подробнее см. по ссылке). Эта настройка может быть изменена явным выбором в меню Документ->Тип отступа, а также установкой опции отступов Разпознать по содержимому, в последнем случае используется тот способ, который чаще применялся в конкретном файле.
Способ создания отступов в текущем документе показан в статус-строке:
Если включен этот режим, при завершении строки текста нажатием клавиши Enter отступ следующей строки устанавливается автоматически.
Для установки отступа предусмотрено четыре режима:
Чтобы отметить место в тексте, поставив закладку в определенную строку, щелкните левой кнопкой мыши на левой границе окна редактора или нажмите Ctrl-m. На полях появится маленький зеленый плюс: закладка поставлена. Повторный щелчок или нажатие клавиш Ctrl-m удаляет закладку. Закладок в документе может быть сколько угодно; удалить все сразу можно командой "Удалить маркеры" в меню "Документ".
Для перехода к следующей установленной закладке нажмите клавиши Ctrl-(точка), к предыдущей — Сtrl-(запятая). Вместе с командами перехода по открытым файлам (их закладкам в редакторе) Ctrl-PgUp/PgDn и Ctrl-Tab команды перехода по закладкам позволяют очень быстро перемещаться по открытым в редакторе текстам.
Выделенный фрагмент текста можно переслать из Geany в другое приложение, записав соответствующую команду в диалоге "Установить пользовательские команды" ("Правка -> Форматирование" или контекстное меню). Эту функцию можно использовать, например, для передачи фрагмента кода в текстовый процессор, а после форматирования или какой-то дополнительной обработки назад в Geany. Передача выполняется командой "Правка->Форматирование->Отправить выделенное в". Выделенный текст посылается на стандартный вход stdin команды пересылки, результат обработки передается на стандартный выход stdout, откуда считывается назад в Geany и в итоге замещает сделанное выделение. Стандартный выход сообщений об ошибках внешней программы stderror также передается в stdout Geany, что поможет разобраться в случае появления ошибок обработки.
Команда пересылки записывается в окне диалога после нажатия кнопки "Добавить" (можно ввести несколько разных команд, для каждой заводится своя строка). Для удаления команды достаточно очистить строку и нажать OK.
В настройке предпочтений можно записать команды (разные для различных типов файлов, см. "context_action_cmd" в разделе Формат файла), параметром которых будет слово или выделение в тексте, в котором находится курсор. Контекстное действие вызывается в контекстном меню редактора или клавишной командой).
Текущее слово или выделение подставляется в команду как параметр "%s".
Например, следующая команда открывает сайт с документацией по PHP:
firefox "http://www.php.net/%s"
Если выполнить команду, когда курсор находится в слове "echo", браузеру будет передана команда http://www.php.net/echo и открыта справка по echo.
Geany может предлагать список возможных вариантов завершения слов как для элементов языков программирования, так и для любых слов в документе.
Список вариантов появляется при наборе нескольких первых символов (по умолчанию 4, настраивается в Настройки завершений ввода) или по клавишной команде Завершить слово (по умолчанию Ctrl-Space, о настройке см. Команды редактора).
Если включен режим автозавершения для всех слов Автозавершение всех слов в документе (см. Настройки завершений ввода), в список вариантов попадут все уже имеющиеся в документе подходящие слова.
По мере продолжения ввода слова список автозавершения будет сокращаться, а если подходящих вариантов нет — закроется вовсе. Закрыть его можно в любое время нажатием Escape.
Выбор варианта из списка осуществляется стрелками вверх-вниз и нажатием Enter/Return, либо двойным щелчком мышью. В текст будет подставлен выбранный вариант, а если включен режим Отбрасывать окончания слов при завершении (см. Настройки завершений ввода), все символы после вставленного слова будут удалены.
При нажатии вместо Enter клавиши Tab (настройка по умолчанию) вызывает вставку выбранного варианта не сразу, а по частям, что может быть полезно при вводе программного кода. Например, для вставки префикса gtk_combo_box_entry_:
(Можно назначить этот вариант действий не Tab, а другой клавише - см. Команды редактора). Если изменить или очистить комбинацию клавиш для постепенного завершения, Tab будет срабатывать так же, как и Enter.
Пример:
struct { int i; char c; } foo;
Когда вы напечатаете foo., будет показан список автозавершения для имен 'i' и 'c'.
Это работает только для С-подобных языков в которых устанавливаются области видимости имен. Анализатор тегов С будет распознавать только общие объявления и не сможет работать для локально объявленных объектов и структур.
Сниппеты - своего рода сокращения, которые для ускорения ввода текста заменяются (или автозавершаются) на часто повторяющиеся фрагменты. Заготовив (и запомнив) их в нужном количестве, можно намного ускорить ввод регулярного текста.
Например, если вы часто вводите в текст свое имя, можно создать такой сниппет:
[Default] myname=Enrico Trоеger
Всякий раз, как только вы наберете myname <TAB> слово "myname" будет заменено на "Enrico Trоеger". Клавиша ТАВ, вызывающая замену, может быть изменена в настройках клавишных команд (Завершить фрагмент кода).
Следует ли использовать завершение или замену сокращений, Geany считывает при запуске из специального конфигурационного файла snippets.conf.
Общий файл конфигурации находится в каталоге $prefix/share/geany, где $prefix — каталог, в который установлен Geany (см. Префикс инсталляции). Не рекомендуется редактировать этот файл, поскольку при обновлении Geany он обновляется и внесенные изменения окажутся потеряны.
Для сохранения настроек скопируйте файл из $prefix/share/geany в свой каталог для конфигурационных файлов (обычно ~/.config/geany/).
Пример команды копирования:
% cp /usr/local/share/geany/snippets.conf /home/username/.config/geany/
Есть альтернатива: создать собственный конфигурационный файл ~/.config/geany/snippets.conf для своих настроек, при этом «стандартные» настройки Geany будет считывать из общего файла в $prefix/share/geany.
Файл snippets.conf содержит разделы, определяющие общие сниппеты и те, которые доступны для определенных типов файлов (например, для текстов на разных языках программирования).
Для всех типов файлов действуют разделы "Default" и "Special" . Раздел "Special" отличается тем, что в нем хранятся сниппеты, применяемые только внутри других сниппетов. Благодаря этому можно создать общий сниппет - «шаблон», в котором вводить по мере надобности те или другие элементы (подробнее см. в snippets.conf).
Вы можете определить новую секцию для файлов определенного типа, например файлов "C++". Сниппеты этой секции будут работать только в файлах заданного типа, причем при одинаковых именах они будут здесь приоритетны по сравнению со сниппетами секции "Default".
При подготовке сниппетов можно использовать специальный синтаксис.
Управляющие последовательности
\n or %newline% | Вставить новую строку (последовательность заменяется байтами, фиксирующими конец строки — LF, CR/LF, или CR). |
\t or %ws% | Сделать отступ. Последовательность заменяется в соответствии с настройками установки отступов в редактируемом документе. |
\s | вставить пробел перед значением или после него (чтобы получить в тексте 'key= value' , надо записать 'key=\svalue') |
%cursor% | После автозавершения поместить курсор в эту позицию. Позиций может быть несколько, тогда с помощью клавишной команды Move cursor in snippet после вставки сниппета можно перепрыгивать с одной на другую. |
%...% | имя ключа вложенного сниппета для секции "Special". Определив в "Special", например, "brace_open" последовательность %brace_open% можно использовать в любом другом сниппете. |
Имена сниппетов не должны содержать пробелов; с учетом этого ограничения можно использовать почти любую подстроку. Применение сниппетов не ограничено вводом типовых конструкций языков программирования наподобие if, for, switch. Можно использовать эту возможность для любых целей.
Начиная с версии Geany 0.15 в сниппетах можно использовать маски шаблонов, отмеченные в разделе Маски шаблонов как пригодные в сниппетах. Например, приведенный выше пример с именем автора можно улучшить так:
[Default] myname=My name is {developer} mysystem=My system: {command:uname -a}
Условное слово myname будет заменено на "My name is " с подстановкой имени разработчика developer.
Начиная с GTK 2.10 и следующих версий можно вставлять в текст символы из полной кодировки Unicode, в том числе отсутствующие в текущей кодировке. Для этого нажмите клавиши Ctrl-Shift-u и затем, удерживая Ctrl-Shift, наберите шестнадцатиричный код требуемого символа и, наконец, нажмите Enter or Return (не отпуская Ctrl-Shift!). Если отпустить эти клавиши, при нажатии Enter или любой другой клавиши кроме вставки кода юникодного символа произойдет и вставка новой строки или символа нажатой клавиши.
В некоторых ранних версиях Geany для этого приема предварительно необходимо освободить используемое по умолчанию сочетание клавиш Ctrl-Shift-u (см. клавишные команды, а затем выполнить команду Инструменты->Обновить настройки или рестартовать Geany. Работа данной функции зависит также от GTK.
Для GTK < 2.10 можно не нажимать Ctrl-Shift-u, но тогда возможны конфликты с другими клавишными определениями Geany.
Звездочкой в списке помечены действия, вызвать которые можно из контекстного меню редактора или клавишными командами. Не отмеченные присутствуют также и в основном меню "Поиск".
На панели имеются форма поиска и форма для перехода к строке по номеру. Для перехода к этим инструментам имеются сочетания клавиш (см. Команды переноса фокуса). Клавиша Esc возвращает курсор в окно редактора.
Искать какой-либо текст проще всего с помощью формы на панели. Такой поиск нечувствителен к регистру; при смене искомого контекста для повторения поиска нажимайте Enter.
Диалоговое окно поиска можно использовать для поиска как в текущем документе, так и в других открытых в Geany.
Синтаксис записи для Использования регулярных выражений рассмотрен в разделе Регулярные выражения.
Заметим, что
для регулярных выражений используются escape-последовательности.
Эти последовательности трансформируются в символы (спецсимволы) с использованием кодировки UTF-8. Например, \t означает символ табуляции. Распознаются последовательности: \\, \n, \r, \u#### (код Unicode).
При выборе варианта "Найти все" будет предложено выбрать область поиска:
(Цветные выделения затем можно удалить командой "Удалить маркеры" меню "Документ").
По умолчанию в диалоге используется моноширинный шрифт (с одинаковой шириной всех символов, например Courier), поскольку в нем легче различаются важные в программном коде мелкие знаки - точки, запятые и т.п.
Для изменения шрифта определите стиль в .gtkrc-2.0, указав имя шрифта. (в UNIX-подобных системах обычно находится в домашнем каталоге, в Windows — в подкаталоге etc инсталляции Geany):
style "search_style" { font_name="Monospace 8" } widget "GeanyDialogSearch.*.GtkEntry" style:highest "search_style"
Обратите внимание на слово ":highest" (высший) в последней строке: оно задает приоритет данного определения стиля. Если не «высший», стиль будет проигнорирован и ничего не изменится.
Поиск использования ("Найти использование") охватывает все открытые файлы. Он подобен варианту "Найти все - В сессии" в диалоге поиска.
В этом варианте контекстом поиска является текущее выделение, а при его отсутствии - текущее слово. Таковым считается слово, ближайшее к курсору редактора, либо слово, по которому был произведен щелчок правой кнопкой мыши для вызова контекстного меню. Результаты поиска выводятся в виде таблицы в окне сообщений.
Это мощная функция, осуществляющая поиск контекста в файлах, находящихся в заданном каталоге и его подкаталогах (неважно, открытых в Geany или нет). Работает такой поиск с помощью системной утилиты Grep, путь к которой должен быть указан в настройке предпочтений.
Здесь необходимо указать кодировку (выбор из списка) файлов, в которых будет вестись поиск. Введенный поисковый контекст конвертируется в указанную кодировку (а результаты поиска будут показаны в UTF-8). Остальные опции служат для передачи grep дополнительных аргументов.
Если будет проводиться поиск в дереве подкаталогов (Рекурсивно в подкаталогах), можно установить в поле "Дополнительные опции" фильтр, который ограничит отбор результатов поиска по шаблону имен файлов, передав в grep соответствующий аргумент для -exclude. Это может быть полезно при работе с системой контроля версий, когда в подкаталогах может оказаться множество версий файлов. Пример:
Пример для SVN: -exclude=*.svn-base
-exclude работает только с именами файлов, но не путями. Для GNU Grep >= 2.5.2 можно использовать аргумент -exclude-dir для отбрасывания CVS- и скрытых каталогов наподобие .svn.
Пример: -exclude-dir=.* -exclude-dir=CVS
Диалог замены аналогичен рассмотренному выше диалогу поиска, в нем применяются те же опции.
Для замены всех вхождений искомого контекста на заменяющий будут предложены три варианта:
Если текущее слово является именем тега (например, функции) и открыт файл, содержащий соответствующее определение, команда вызовет переход к строке начала определения в этом файле. Текущим считается слово, ближайшее к курсору редактора, либо слово, под которым был произведен щелчок правой кнопкой мыши для вызова контекстного меню.
Этот поиск аналогичен предыдущему, переход производится к объявлению (например, прототипа функции или extern), а не определению.
Переход к строке с заданным номером в текущем файле.
Поставив в диалоге поиска или замены отметку Регулярные выражения, можно использовать регулярные выражения (см. Настройки поиска). Синтаксис этих выражений приведен в таблице, он является POSIX-совместимым.
Заметим, что
В регулярные выражения могут включаться следующие интерпретируемые символьные последовательности:
. | Любой символ. |
( | Начало области разметки вхождений. |
) | Конец области разметки вхождений. |
\n | Здесь n - порядковые номера областей разметки вхождений от 1 до 9. Поиск (Wiki)\1 обнаружит вхождение WikiWiki. Поиск с заменой подстроки Fred([1-9])XXX на Sam\1YYY, будучи применен к Fred2XXX, даст Sam2YYY. |
\0 | Замена всего соответствующего текста. |
\b | Замена в границах слова. |
\c | d, D, s, S, w or W обозначают класс символов (как в текущем наборе, так и вне его).
|
\x | Позволяет использовать символы, имеющие специальное значение. Например, \[ будет интерпретировано как квадратная скобка а не начало набора символов, \\ как обратная наклонная черта. |
[...] | Вхождением будет считаться любой из символов последовательности в скобках. Если первый символ последовательности ^, все наоборот: остальные символы НЕ считаются искомыми). Сокращение S-E (start dash end) обозначает символы с S по E включительно. Символы ] и - не имеют специального значения в первой позиции набора могут быть и последними. Для из включения следует записать []A-Z-]. Примеры: []|-] поиск трех символов: ], |, - []-|] поиск символов от ] до | [a-z] поиск любых строчных букв [^]-] поиск любого символа кроме - и ] [^A-Z] поиск любого символа кроме прописных букв [a-z A-Z] поиск любой буквы |
^ | Поиск начала строки (кроме случая внутри описания набора символов, см. выше). |
$ | Поиск конца строки. |
* | Поиск любого числа вхождений начиная с 0. Например, по условию Sa*m будут найдены Sm, Sam, Saam, Saaam и т.д. |
+ | Поиск любого числа вхождений начиная с 1. По условию Sa*m будут найдены Sam, Saam, Saaam и т.д. |
? | Поиск 0 или 1 вхождения. например, по условию Joh?n будут найдены John и Jon. |
Заметим, что
эта таблица взята из документации по Scintilla и SciTE и адаптирована. Эта документация распространяется по лицензии License for Scintilla and SciTE.
Под тегами (именами) понимается информация, соотносящая коды в программе с объявлениями и определениями в исходных текстах.
Geany позволяет выводить сведения о имеющихся тегах ("workspace tags") в поддерживаемых типах файлов при открытии файла. Можно также автоматически загружать внешний файл тегов ("global tags files") при запуске или вручную командой Инструменты -> Загрузить теги.
В Geany применен собственный формат для файла тегов, подобный ctags, однако несовместимый с ним. Использование Geany для генерации файла глобальных тегов рассмотрено ниже.
Анализ тегов каждого документа производится всякий раз при его открытии или сохранении; результаты отображаются в списке имен в левой части окна Geany. Эти теги используются также для автозавершения и подсказок для всех документов текущего сеанса работы, имеющих одинаковый тип файлов.
Команду "Перейти к тегу" можно использовать для любого имени из списка (workspace tag). См. Переход к определению тега.
Глобальные теги можно использовать для тех же целей, причем даже если ни один из файлов с исходными текстами не открыт. Они определены в библиотеке API и обновляются при обновлении библиотеки.
Можно загрузить глобальные теги из специально подготовленного файла, причем разными способами:
Можно также создать свой собственный файл определений тегов. Он должен иметь имя
name.lang_ext.tags
где lang_ext — одно из расширений для типа файла, ассоциируемого с тегами. Подробнее см. в разделе Расширения типов файлов.
Для ряда языков программирования список глобальных тегов загружается при первом открытии файла соответствующего типа. В настоящее время такие файлы имеются для следующих языков:
Используются два формата:
Формат указывается в первой строке, которая должна быть комментарием (начинаться с символа # и пробела за ним). В строке записывается format=pipe или format=tagmanager соответственно, причем строчными буквами. Это помогает Geany правильно считать файл. Если такой строки нет, Geany пытается определить используемый формат, но при этом возможна ошибка.
Формат Tagmanager немного сложнее, он используется для файлов, создаваемых командой geany -g. Каждый тег помещается в новой строке, различные атрибуты (возвращаемое значение, список аргументов и др.) разделяются соответствующими символами.
В формате Pipe-separated теги также записываются построчно, здесь атрибуты разделяются символом | (pipe — труба, в синтаксисе командной строки прямая черта служит для передачи данных между программами. Прим.перев.). Строка выглядит так:
basename|string|(string path [, string suffix])|
За исключением первого поля (имени тега), остальные поля могут оставаться пустыми, но разделяющая их черта должна присутствовать.
Подготовив необходимый файл тегов в таком формате, сохраните его в каталоге для тегов, как описано выше в разделе Глобальные теги.
После разбора ряда исходных файлов вы можете создать собственный файл глобальных тегов. Для этого служит команда
geany -g [-P] <Файл тегов> <Список файлов>
Пример для программирования на языке D, библиотека wxD:
geany -g wxd.d.tags /home/username/wxd/wx/*.d
Генерация файлов тегов C/C++:
Для файлов тегов C/C++ требуются gcc и grep, поскольку заголовочные файлы обрабатываются препроцессором для включения других заголовков, с которыми они связаны.
Переменная окружения CFLAGS должна быть задана с правильными путями -I/path. Приводим пример для генерации тегов для библиотеки GnomeUI, работа в оболочке bash:
CFLAGS=`pkg-config -cflags libgnomeui-2.0` geany -g gnomeui.c.tags \ /usr/include/libgnomeui-2.0/gnome.h
Используя этот пример, вы можете адаптировать команду для использования CFLAGS и заголовочных файлов с любой нужной библиотекой.
Замена используемого по умолчанию файла тегов C/C++ :
По умолчанию Geany использует для C и C++ файл глобальных тегов c99.tags, обычно находящийся в каталоге /usr/share/geany. Этот файл можно заменить другим, содержащим теги, извлеченные из какого-то набора заголовочных файлов. При следующем запуске Geany вместо c99.tags будет загружен ваш новый файл тегов. Сохраняйте копию своего файла, так как при обновлении Geany он окажется заменен на стандартный и потерян.
Если определенные теги приводят к ошибкам при анализе кода, их можно игнорировать. Для этого создайте файл "ignore.tags" в каталоге конфигураций Geany (обычно ~/.config/geany/). Перечислите в этом файле теги, которые необходимо игнорировать, разделяя их пробелами или в отдельных строках.
Приводим более подробную информацию из руководства к Exuberant Ctags:
Составьте список идентификаторов, которые при разборе исходных файлов C and C++ должны обрабатываться особым образом. Эта опция предоставлена для обработки частных случаев, возникающих при использовании макросов препроцессора. Включенные в список идентификаторы при разборе исходных файлов они будут проигнорированы. Если идентификатор имеет суффикс '+', ctags будет игнорировать также любой следующий за ним список аргументов в скобках. Если два идентификатора записаны через знак равенства '=' , для целей разбора первый из них будет заменен вторым.
За дальнейшими подробностями обращайтесь к странице руководства Exuberant Ctags.
Для настройки Geany служит диалог, вызываемый командой Правка -> Настройки. Внесенные изменения подтверждаются нажатием кнопок "Применить" или "OK" и сохраняются между сеансами работы. Большинство опций настройки имеют пояснения; подсказка появляется при наведении курсора мыши.
Настройки вида, доступные в меню "Вид", также сохраняются при завершении работы с Geany, а вот настройки в меню "Документ" действуют только для работы с текущем документом и в следующем сеансе работы будут заменены на используемые по умолчанию.
Некоторые редко используемые настройки отнесены к скрытым, см. Скрытые предпочтения.
Заметим, что
в следующих разделах сначала приводятся иллюстрации, а за ними соответствующие пояснения.
Не показывать сообщения в строке статуса, отображать их только в окне сообщений.
Совет
Можно использовать сочетание клавиш "Перейти к редактору" — при этом обновляется статистика документа в статус-строке. См. Команды управления фокусом.
Подробности см. в разделе Отступы.
Как создавать отступы:
Вариант Tabs and Spaces в некоторых редакторах называется Soft tab support — «мягкая» табуляция. Позволяет более гибко регулировать отступы.
Способ автоматической установки отступа новой строки при нажатии Enter.
Установка отступа клавишей табуляции. Если опция выбрана, нажатие клавиши Tab устанавливает отступ текущей строки или выделения, а клавиш Shift-Tab — удаляет. Собственно, при этом клавиша tab просто вставляет символ табуляции (что может отличаться установки отступов по некоему способу).
Заметим, что
Для установки и удаления отступов можно также использовать настраиваемые клавишные сочетания. Действие клавиши Tab может быть различным в зависимости от контекста операции, например при установке отступа и вставке сниппета.
Автоматически продолжать многострочный комментарий в С - подобных языках при вставке новой строки внутри комментария. Если выбрана эта опция, Geany будет вставлять в каждую новую строку внутри комментария звездочку. Например, при нажатии Enter в конце строки кода
/* * Это многострочный коментарий, нажмите клавишу <Return>
Geany начнет новую строку так:
*
и с тем же отступом что у предыдущей строки. И будет это делать до тех пор, пока в очередной строке не окажется код закрытия комментария */.
Geany может при вводе открывающей скобки или кавычки автоматически вставлять закрывающую. Например, если вы ввели (, рядом автоматически появится скобка ). Следующие опции определяют, с какими символами будет работать эта функция.
С помощью этого диалога настраивается отображение текста и различных элементов в окне редактора.
Отмечать длинные строки. Длинные строки получат специальную отметку, что подскажет, что их не помешало бы разбить.
Виртуальные пробелы. Так здесь называется пустое пространство на экране после конца строки. Можно разрешить перемещать в эту область курсор, но ни пробелы, ни какие-либо другие символы туда при этом не вводятся до тех пор, пока с клавиатуры или командой вставки не будет введен реальный текст.
Опции этого раздела задают дополнительные операции, которые могут выполняться при сохранении документа. Все они могут быть отменены с помощью команды Undo.
Заменить знаки табуляции соответствующим числом пробелов.
Заметим, что
лучше уж сразу использовать для создания отступов пробелы. См. раздел Отступы.
Интервал в секундах для проверки состояния файла документа на диске (не был ли он изменен помимо Geany). Установка значения 0 отключает такую проверку.
Заметим, что
Такая проверка проводится только для локальных файлов. Удаленные файлы не проверяются из-за возможных проблем с производительностью (файлы в ~/.gvfs/ считаются удаленными ).
Заметим, что
пользователям Windows рекомендуется использовать grep.exe из проекта UnxUtils (http://sourceforge.net/projects/unxutils). grep.exe проекта Mingw в настоящее время может не работать с Geany.
В поля этой формы можно внести различные сведения, которые затем могут использоваться как мета-данные для вставки в документы (например, в заголовок файла).
Заметим, что
После внесения изменений необходимо выполнить команду Инструменты->Обновить настройки или рестартовать Geany.
Адрес e-mail.
Заметим, что
Можно ввести в публикуемый адрес искажения, затрудняющие работу собирающих адреса спаммерских ботов, например name<at>site<dot>ext.
Некоторые перечисленные в форме операции по умолчанию не связаны ни с сочетаниями клавиш, ни с командами меню.
Заметим, что
Более подробная информация представлена в разделе Сочетания клавиш.
См. также: Виртуальный эмулятор терминала (VTE).
Функции работы с проектом являются в Geany вспомогательными. В настоящее время поддерживаются:
Список файлов проекта используется, когда включена опция "Использовать файлы сессий для проектов" в группе "Проект" диалога настройки предпочтений.
Пока открыт определенный проект, меню "Сборка" будет содержать пункты, определенные в настройках проекта. См. также раздел конфигурирование меню сборки.
Настройки текущего проекта сохраняются при его закрытии или при выходе из Geany. При следующем запуске будет открыт файл проекта, с которым велась работа в конце предыдущей сессии.
Рассмотрим команды меню проектов.
Для создания нового проекта введите его имя в поле "Имя". По умолчанию новый файл проекта создается так: ~/projects/name.geany. Обычно лучше сохранять все файлы своих проектов в одном каталоге, независимо от каталогов с файлами исходных текстов.
В поле "Путь к каталогу" text записан путь к каталогу ~/projects/name. Вы можете изменить его на любой другой, не меняя файлы в каталоге.
Можно определить для проекту дополнительное описание (в настоящее время Geany это описание никак не использует).
В поле "Путь к каталогу" записывается каталог, в котором исполняются команды меню "Сборка". Здесь можно вводить как абсолютный путь, так и относительный начиная с каталога с файлом проекта.
Кнопка "Указать путь к каталогу проекта" заносит в поля рабочих каталогов для команд сборки путь к каталогу проекта %p.
Заметим, что
нажатие кнопки 'установить' переустановит все рабочие каталоги, ранее заданные для проекта.
Команда открытия проекта вызывает в каталоге ~/projects стандартный диалог выбора файлов. Имена файлов проектов имеют расширение .geany.
При включенной поддержке работы с проектами Geany закроет все ранее открытые файлы и откроет файлы, ассоциированные с проектом.
При закрытии проекта Geany закроет проектные файлы и откроет те, которые были закрыты при переходе к работе с проектом.
Начиная с версии 0.13 Geany поддерживает печать с использованием API GTK. Отпечатанные страницы будут выглядеть примерно так же, как на экране. Имеется и ряд дополнительных опций.
Дополнительно к тексту документа можно печатать номера строк, страниц и верхний колонтитул, включающий имя файла, номер страницы, дату и время распечатки. Имя файла по умолчанию выводится с полным путем доступа; изменить формат вывода можно в настройках предпочтений. Для даты и времени можно использовать варианты, предусмотренные для функции ANSI C strftime.
Настроить формат можно и в диалоге печати непосредственно перед ее началом. Для демонстрации превью в Unix-подобных системах GTK использует по умолчанию программу для просмотра файлов PDF evince. Если эта программа не установлена или желательно использовать другую, укажите такую программу в файле .gtkrc-2.0 (обычно находится в домашнем каталоге). Для этого просто добавьте в конец файла строку, например:
gtk-print-preview-command = "epdfview %f"
Для превью печати можно использовать xpdf, kpdf и пр.
К сожалению, поддержка печати с помощью GTK доступна только при сборке Geany с GTK версий 2.10 и старше и работает с этими же версиями GTK. В противном случае Geany предоставляет только базовую поддержку печати. Это означает, что файл можно распечатать системной командой. Напечатанный документ не будет содержать каких-либо синтаксических выделений. Команда печати записывается в настройках, по умолчанию применяется
% lpr %f
Параметр %f заменяется на имя текущего файла. Geany не покажет сообщения об ошибках, поэтому если потребуется проверить и уточнить команду печати, воспользуйтесь командной строкой.
Пример часто используемых настроек:
% a2ps -1 -medium=A4 -o - %f | xfprint4
Требуются утилиты a2ps и xfprint4, вместо последней можно также использовать gtklp и др.
Чтобы при старте Geany были загружены модули, предварительно в общих настройках должна быть включена опция "Включить поддержку модулей". Учтите, что при запуске из командной строки имеется опция -p, отключающая загрузку модулей. Модули для загрузки Geany ищет в каталогах
Большинство модулей добавляют те или иные функции в меню "Инструменты".
Начиная с версии 0.13 в Geany имеется менеджер модулей, который позволяет не только выбрать модули для загрузки при следующем запуске, но и загружать и выгружать их в текущем сеансе работы. По умолчанию модули не загружаются (пока нет выбранных). С помощью менеджера можно также настроить опции модулей, если они предусмотрены.
См. также Документация по модулям включенным в Geany.
Geany поддерживает клавишные команды (клавиатурные сокращения, горячие клавиши) редактора Scintilla. Список этих команд см. в разделе Клавишные команды Scintilla. Применяемые в Scintilla команды можно переопределить.
Приведенные ниже команды не конфигурируются, но могут быть переопределены.
Клавиши | Действие |
---|---|
Alt-[1-9] | Перейти к окнам открытых документов, номера закладок слева направо. |
Alt-0 | Перейти к документу под крайней справа закладкой. |
Ctrl-Shift-PgUp | Перейти к документу под крайней слева закладкой. |
Ctrl-Shift-PgDn | Перейти к документу под крайней справа закладкой. |
Для перечисленных ниже действий вы можете определить свои собственные сочетания клавиш. Для этого откройте диалог настройки предпочтений, выберите действие и щелкните команду "изменить". Нажав свою комбинацию клавиш и затем ОК, вы зафиксируете изменение. Для каждого действия можно ввести только одну клавишную команду, а одной команде можно приписать только одно действие.
Некоторые из команд, применяемые по умолчанию, являются общепринятыми. Например, Ctrl-N для создания нового файла и Ctrl-O для открытия файлов. Не стоит изменять эти команды, но для таких действий вы можете добавить и другие комбинации клавиш. Например, наряду с Ctrl-O можно использовать для вызова диалога открытия файлов и Alt-O.
Все команды, показанные в следующих таблицах, можно перенастроить. В случаях, когда по умолчанию сочетание клавиш не определено, соответствующая ячейка оставлена пустой. Общепринятые и используемые во многих приложениях помечены значком (C) .
Действие | Клавиши | Описание |
---|---|---|
Создать | Ctrl-N (C) | Создать новый файл. |
Открыть | Ctrl-O (C) | Открыть файл. |
Открыть выбранный файл | Ctrl-Shift-O | Открыть файл с выбранным именем. |
Открыть последнюю закрытую вкладку | Снова открыть закладку документа, закрытую последней. | |
Сохранить | Ctrl-S (C) | Сохранить файл. |
Сохранить как | Сохранить файл под новым именем. | |
Сохранить все | Ctrl-Shift-S | Сохранить все открытые файлы. |
Закрыть все | Ctrl-Shift-W | Закрыть все открытые файлы. |
Закрыть | Ctrl-W (C) | Закрыть файл. |
Обновить | Ctrl-R (C) | Перезагрузить файл. Все несохраненные изменения в ходе его правки будут потеряны. |
Печать | Ctrl-P (C) | Напечатать файл. |
Действие | Клавиши | Описание |
---|---|---|
Отменить | Ctrl-Z (C) | Отменить последнее действие. |
Вернуть | Ctrl-Y | Повторить последнее действие. |
Удалить строку(и) | Ctrl-K | Удалить текущую строку или, при наличии выделения, несколько строк. |
Удалить до конца строки | Ctrl-Shift-Delete | Удалить текст от позиции курсора до конца строки. |
Дублировать строку(и) | Ctrl-D | Сдублировать текущую строку или, при наличии выделения, несколько строк. |
Переставить строку | Ctrl-T | Заменить текущую строку на копию предыдущей. |
Прокрутить до текущей строки | Ctrl-Shift-L | Прокрутить текст так, чтобы текущая строка оказалась посередине окна. Положение курсора и/или имеющееся выделение не меняются. |
Прокрутить на строку вверх | Alt-Up | Прокрутка на строку вверх. |
Прокрутить на строку вниз | Alt-Down | Прокрутка на строку вниз. |
Завершить слово | Ctrl-Space | Закончить слово. Команда открывает список автозавершения. Если был открыт список автозавершения тегов, он заменяется списком обычных слов (даже если автозавершение не было включено). |
Показывать подсказки | Ctrl-Shift-Space | Показать подсказку по текущей функции или методу. |
Показывать список макросов | Ctrl-Return | Показать список доступных в рабочей области макросов и переменных. |
Завершить фрагмент кода | Tab | Завершить (вставить) сниппет. |
Подавлять автозавершение фрагментов кода | Отменить вставку сниппета. Если набрана ключевая подстрока сниппета, вместо него будет вставлен пробел или табуляция в зависимости от клавиш завершения. Например, при установке команды завершения с пробелом, установка этой команды на Shift+space вместо завершения сниппета вставит пробел. | |
Контекстное действие | Исполняет команду, используя как параметр текущее слово (под курсором или ближайшее к нему). См. Контекстные действия. | |
Перемещать курсор в фрагменте | Переводит курсор на следующую позицию в сниппете, если такие позиции в нем предусмотрены. | |
Автозавершение фрагментов кода | Tab | При открытом списке автозавершения завершает текущее выделение до части следующего слова. |
Переместить строку(и) вверх | Передвигает текущую строку или выделенные строки на одну строку вверх. | |
Переместить строку(и) вниз | Передвигает текущую строку или выделенные строки на одну строку вниз. |
Действие | Клавиши | Описание |
---|---|---|
Вырезать | Ctrl-X (C) | Вырезать выделенный фрагмент, поместив его в буфер. |
Копировать | Ctrl-C (C) | Скопировать выделенный фрагмент в буфер. |
Вставить | Ctrl-V (C) | Вставить содержимое буфера в позиции курсора. |
Вырезать строку(и) | Ctrl-Shift-X | Вырезать текущую строку или выделенные строки, поместив в буфер. |
Копировать строку(и) | Ctrl-Shift-C | Скопировать в буфер текущую строку или выделенные строки. |
Действие | Клавиши | Описание |
---|---|---|
Выделить все | Ctrl-A (C) | Выделить весь документ. |
Выделить слово | Alt-Shift-W | Выделить текущее слово (под курсором). |
Выделить параграф | Alt-Shift-P | Выделить текущий абзац (границей абзаца считаются две пустые строки). |
Выделить строку(и) | Alt-Shift-L | Выделить текущую строку (если есть частично выделенные строки, включая их). |
Выделить до начала слова | Выделить до предыдущего слова. | |
Выделить до окончания слова | Выделить до следующего слова. |
Действие | Клавиши | Описание |
---|---|---|
Вставить дату | Shift-Alt-D | Вставить дату. |
Вставить переменный пробел | Альтернативный отступ. Если для отступов предусмотрена табуляция, вставить вместо нее соотв. число пробелов; если предусмотрены пробелы - вставить табуляцию. |
Action | Default shortcut | Description |
---|---|---|
Переключить регистр в выделении | Ctrl-Alt-U | Сменить регистр символов в выделенном фрагменте. Если в нем есть символы и в нижнем и в верхнем регистрах - все переводятся в нижний. |
Комментировать | Закомментировать текущую строку или выделение. | |
Раскомментировать | Раскомментировать текущую строку или выделение. | |
Переключить комментарий | Ctrl-E | Включить-выключить комментирование для текущей строки. |
Увеличить отступ | Ctrl-I | Увеличить отступ для текущей строки или выделения. |
Уменьшить отступ | Ctrl-U | Уменьшить отступ для текущей строки или выделения. |
Увеличить отступ на один пробел | Увеличить отступ строки или выделения на 1 пробел. | |
Уменьшить отступ на один пробел | Уменьшить отступ строки или выделения на 1 пробел. | |
Использовать "умный" отступ | Установить отступ строки или выделения так же, как в предыдущей строке./td> | |
Передать пользовательской команде 1 (2,3) | Ctrl-1 (2,3) | Передать выделение выбранной внешней программе (как параметр для одной из трех первых настроенных для этого команд, см. Отправка текста внешним программам для выяснения подробностей). |
Отправить выделенное в терминал | Отправить текущую строку или выделение во встроенный терминал (VTE). | |
Переформатировать строки/блок | Если для текущего документа настроено ограничение длины строк, переформатировать выделенный фрагмент или текущий фрагмент с одинаковым отступом с учетом ограничения. |
Действие | Клавиши | Описание |
---|---|---|
Настройки | Ctrl-Alt-P | Открыть диалог настройки предпочтений. |
Настройки модулей | Открыть диалог настройки работы с модулями. |
Действие | Клавиши | Описание |
---|---|---|
Найти | Ctrl-F (C) | Открыть диалог поиска. |
Найти следующее | Ctrl-G | Найти следующее вхождение. |
Найти предыдущее | Ctrl-Shift-G | Найти предыдущее вхождение. |
Заменить | Ctrl-H (C) | Открыть диалог замены. |
Найти в файлах | Ctrl-Shift-F | Открыть диалог поиска в файлах. |
Следующее собщение | Перейти к строке, для которой имеется следующее сообщение в окне сообщений. | |
Предыдущее сообщение | Перейти к строке, для которой имеется предыдущее сообщение в окне сообщений. | |
Найти использование | Найти все вхождения текущего слова или выделения во всех открытых документах и вывести список результатов в окно сообщений. | |
Статистика документа | Найти все вхождения текущего слова или выделения в документе и вывести список результатов в окно сообщений. | |
Пометить все | Ctrl-Shift-M | Найти все вхождения текущего слова или выделения в документе и выделить их цветным фоном. Если ничего не найдено, убрать цветные выделения.. |
Действие | Default shortcut | Описание |
---|---|---|
Перейти на шаг вперёд | Перейти к следующей позиции, сохраненной в истории навигации (см. История навигации. | |
Вернуться на шаг назад | Перейти к предыдущей позиции, сохраненной в истори навигации (см. История навигации. | |
Перейти на строку | Ctrl-L | Перейти к форме перехода к строке по номеру. |
Перейти к парной скобке | Ctrl-B | Если курсор находится перед скобкой или за ней — перейти к скобке, образующей с ней пару. Повторное нажатие возвращает к первой скобке. |
Переключить маркер | Ctrl-M | Включение-выключение маркера (закладки) для текущей строки. |
Перейти к следующему маркеру | Ctrl-. | Перейти к следующей закладке. |
Перейти к предыдущему маркеру | Ctrl-, | Перейти к предыдущей закладке. |
Перейти определению тега | Перейти к определению тега (текущего слова). Если оно не найдено, например определения находятся в другом файле или команда дана не для имени а для обычного слова, Geany лишь выдаст звуковой сигнал. См. Переход к определению тега. | |
Перейти к объявлению тега | Перейти к объявлению тега (текущего слова). Если оно не найдено, Geany лишь выдаст звуковой сигнал. См. Переход к объявлению тега. | |
Перейти к началу строки | Home | Перейти к первому символу строки после отступа, при повторном нажатии — в начало строки. |
Перейти к концу строки | End | Перейти в конец строки. |
К концу текущей строки | Alt-End | Перейти в конец экранной строки. Когда используется перенос длинных строк по ширине окна, эта команда позволяет перейти в конец текущей строки на экране, а не к символу конца всей строки. Если перенос не применяется, команда аналогична Go to End of Line. |
Перейти к началу слова | Ctrl-/ | Перейти к предыдущей части текущего слова. |
Перейти к концу слова | Ctrl- | Перейти к следующей части текущего слова. |
Действие | Клавиши | Описание |
---|---|---|
На весь экран | F11 (C) | Полноэкранный просмотр. |
Показать/скрыть окно сообщений | Включение - выключение показа окна сообщений. | |
Показать/скрыть боковую панель | Включение - выключение боковой панели. | |
Показать/скрыть все дополнительные виджеты | Включение - выключение всех добавочных виджетов (элементов управления: закладок, панелей, окна сообщений, строки статуса). | |
Увеличить | Ctrl-+ (C) | Укрупнить изображение текста. |
Уменьшить | Ctrl- (C) | Сделать изображение текста меньше. |
Обычный размер | Ctrl-0 | Восстановить предыдущее увеличение (масштаб). |
Действие | Клавиши | Описание |
---|---|---|
Перейти к редактору | F2 | Перейти в окно редактора. При этом с короткой задержкой будет обновлена строка со статистикой документа. |
Перейти к заметкам | F6 | Перейти к окну для заметок. |
Переключиться в терминал | F4 | Перейти в окно терминала. |
Перейти к поиску | F7 | Перейти к форме поиска на панели инструментов (если она видна). |
Перейти к боковой панели | Перейти к боковой панели. | |
Переключиться на компилятор | Перейти к сообщениям компилятора. | |
Перейти к сообщениям | Перейти к окну сообщений. | |
Показывать окно сообщений | Показать вкладку окна сообщений. | |
Перейти к списку документов | Перейти к списку документов на боковой панели, если он виден. | |
Перейти к списку тегов | Перейти к списку имен на боковой панели, если он виден. |
Действие | Клавиши | Описание |
---|---|---|
Перейти на документ слева | Ctrl-PageUp (C) | Перейти к документу в окне слева. |
Перейти на документ справа | Ctrl-PageDown (C) | Перейти к документу в окне справа. |
Перейти на последний документ | Ctrl-Tab | Переход по часто используемым документам. Перейти к предыдущему документу, с которым работали до текущего (если он еще открыт). Если нажать и удерживать Ctrl (или другую назначенную клавишу - модификатор), будет открыт диалог, затем последующие нажатия вызовут переход ко второму, третьему и т.д. предыдущим документам. |
Переместить документ влево | Alt-PageUp | Передвинуть закладку окна текущего документа левее. |
Переместить документ вправо | Alt-PageDown | Передвинуть закладку окна текущего документа правее. |
Переместить документ в начало | Передвинуть закладку окна текущего документа на первое место. | |
Переместить документ в конец | Передвинуть закладку окна текущего документа на последнее место. |
Действие | Клавиши | Описание |
---|---|---|
Заменить табуляции пробелами | Заменить знаки табуляции рядами пробелов. | |
Заменить пробелы табуляциями | Заменить пробелы знаками табуляции. | |
Свернуть/развернуть текущий блок | Свернуть - развернуть текущий блок кода. | |
Свернуть все | Свернуть все блоки кода. | |
Развернуть все | Развернуть все блоки. | |
Обновить список тегов | Ctrl-Shift-R | Перезагрузить список тегов / имен. |
Переключить режим переноса строк | Включить - выключить пословный перенос строк по ширине окна. | |
Переключить перенос строк | Включить - выключить автоматический обрыв строк в заданной позиции. | |
Удалить маркеры | Удалить все маркеры (закладки), сделанные командой 'Mark All' в диалоге поиска или вручную. | |
Убрать индикаторы ошибок | Убрать в документе все индикаторы ошибок. |
Действие | Клавиши | Описание |
---|---|---|
Скомпилировать | F8 | Скомпилировать текущий файл. |
Сборка | F9 | Собрать (если требуется скомпилировать и слинковать) файл. |
Сделать всё | Shift-F9 | Собрать текущий файл с помощью утилиту Make. |
Сделать указанную цель | Ctrl-Shift-F9 | Собрать исполняемый файл с заданным именем с помощью Make. |
Сделать объект | Скомпилировать текущий файл в объект с помощью Make. | |
Следующая ошибка | Перейти в исходном тексте к следующей строке, в которой при сборке обнаружена ошибка. | |
Предыдущая ошибка | Перейти в исходном тексте к предыдущей строке, в которой при сборке была обнаружена ошибка. | |
Запустить | F5 | Запустить файл на исполнение в эмуляторе терминала. |
Установить команды сборки | Открыть диалог настройки команд сборки. |
Действие | Клавиши | Описание |
---|---|---|
Показать выбор цвета | Выбрать цвет. |
Действие | Клавиши | Описание |
---|---|---|
Справка | F1 (C) | Открыть руководство. |
ВНИМАНИЕ
Для работы с файлами конфигурации необходимо использовать кодировку UTF-8 без BOM.
В меню Инструменты имеется подменю Файлы настроек, предоставляющее доступ ко всем конфигурационным файлам, с которыми может работать пользователь. Щелчок по выбранному файлу загрузит его в редактор; когда вы сохраните файл по завершении правки, Geany перезагрузит его и внесенные изменения вступят в силу.
Заметим, что
другие конфигурационные файлы, не указанные в этом меню, необходимо открывать вручную. Они не будут перезагружены автоматически после сохранения (см. ниже Обновить настройки).
Команду Обновить настройки следует применять после обновления какого-либо конфигурационного файла или модификации шаблона, для обновления цветов синтаксических выделений
Заметим, что
есть исключение: после правки и сохранения файла filetypes.common цвета подсветки синтаксиса исходных текстов не меняются, так как это потребовало бы заметного времени.
В этом файле хранятся общие настройки, не переопределенные в локальных конфигурационных файлах пользователей.
Файл находится в каталоге $prefix/share/geany/geany.conf (где $prefix — путь инсталляции Geany, см. Префикс инсталляции) и загружается при запуске Geany, если отсутствует пользовательский файл конфигурации. В нем могут сохраняться любые настройки, но не обязаны содержаться все применяемые настройки.
Заметим, что
Положение и использование общего конфигурационного файла зависит от решений системного администратора при установке Geany для многопользовательской работы.
В этих файлах хранятся настройки, специфичные для работы с файлами определенных типов. Это цвета разметки синтаксиса, символы для комментирования строк, настройки компилятора и линкера и др.
При запуске Geany ищет файлы filetypes.*.conf в системном и пользовательском каталогах для типов файлов и добавляет все найденные файлы типов с именами, отвечающими приведенному шаблону.
Собственные типы предоставляют меньше возможностей настройки, чем встроенные. В настоящее время поддерживаются:
Распознавание и установка типа файла (после создания пользователем соответствующего файла filetype_extensions.conf).
Команды сборки.
Загрузка файлов глобальных имен(пространство имен разделяется с именами полученными анализом тегов).
Общесистемные файлы конфигурации находятся в каталоге $prefix/share/geany и имеют имена filetypes.$ext, где $prefix — путь инсталляции Geany (см. Префикс инсталляции); $ext — имя типа файла. Для каждого типа файла имеется соответствующий файл. Файл filetypes.common содержит общие настройки, неспецифичные для конкретных типов файлов.
Предупреждение
Не рекомендуется редактировать файлы с общесистемными настройками, поскольку они будут переписаны при обновлении Geany и внесенные изменения окажутся потеряны.
Для изменения настроек скопируйте файлы из каталога $prefix/share/geany в подкаталог filedefs вашего каталога для конфигураций (обычно ~/.config/geany/).
Например,
% cp /usr/local/share/geany/filetypes.c /home/username/.config/geany/filedefs/
Теперь вы можете редактировать эти файлы, не опасаясь потери изменений после очередного обновления Geany. Другой способ — создать файл ~/.config/geany/filedefs/filetypes.X и вносить в него только те настройки, которые вы изменяете. Отсутствующие части будут считаны из общего файла в $prefix/share/geany.
Наряду с рассмотренными ниже секциями, каждый из файлов определений для типов может содержать секцию [build-menu], которая рассмотрена в разделе Секция [build-menu].
В этой секции определяются цвета подсветки синтаксиса. Формат определения:
Цвета кодируются шестнадцатиричными значениями уровней в каналах RGB с добавлением префикса 0x. Например, код чистого красного цвета 0xff0000, синего — 0x0000ff. Регистр здесь не важен, но мы предпочитаем использовать строчные буквы. Bold и italic — флаги установки жирного и курсивного начертаний, они могут принимать значения "true" или "false" (любой другой вариант будет воспринят как "false").
Если какие-либо из полей строки пропущены, для них будут использованы значения из стиля по умолчанию "default",
Например, код key=0xff0000;;true определяет красный шрифт, фон по умолчанию, жирное начертание.
Второй возможный способ — сослаться на имя стиля, определенного в файле filetypes.common.
Параметры bold и italic опциональны, их действие заключается в реверсировании соответствующих флагов именованного стиля на который сделана ссылка. В отличие от булевых параметров стиля, это строки, вместо точки с запятой разделителем здесь служит запятая.
Например, запись key=comment,italic
определяет стиль с параметрами стиля "comment" но с курсивным шрифтом (если в образце шрифт прямой).
Имена и параметры стилей можно увидеть в секции [named_styles] файла filetypes.common.
Секция содержит ключевые слова для различных списков, специфичных для типа файла. Некоторые типы файлов не поддерживают ключевые слова, для них добавление в секцию новых ключей работать не будет. Можно изменять только существующие списки, добавляя или удаляя слова.
Важно
Ключевые слова должны быть записаны в одну строку.
Секция специальных настроек для Scintilla, записываемых в формате key.name.field=some.value.
Расширение файла, по умолчанию используемое при сохранении файла (не включая точку). Используемое расширение должно соответствовать одному из ассоциированных с данным типом файлов (см. Расширения файлов).
Пример: extension=cxx
Символы, которые могут служить границей слов. Используются при пословном выделении и при поиске.
Пример: (смотрите в системных файлах типов filetypes.* files)
Символ(ы), открывающие в коде строки комментариев. Если используются многострочные комментарии, необходимо задать и закрывающие символы.
Пример: comment_open=/*
Символ(ы), закрывающие многострочный комментарий.
Пример: comment_close=*/
Поставьте 'false', если символы начала комментария должны располагаться начиная с самого начала строки, или 'true', если перед ними возможен отступ.
Примеры:
Если comment_use_indent=true, команда комментирования (Ctrl-D) сгенерирует такую строку:
#command_example();
А если comment_use_indent=false, такую::
# command_example();
Отметим, что эта настройка имеет смысл только для однострочных комментариев, например, начинающихся с '//', '#' или ';'.
Пример: comment_use_indent=true
Команда, которая может вызываться для обработки текущего слова или выделения (подставляется на место параметра %s).
Пример использования: открыть документацию по API для функции, на названии которой стоит курсор.
Такая команда может быть задана для конкретных типов файлов, если же она отсутствует, будет использована общая команда. Команды (имена программ) можно указывать без полного пути, так как их поиск осуществляется с учетом переменной окружения $PATH. Для повышения безопасности можно указывать и полные пути.
Совет: для файлов PHP весьма полезна следующая настройка: context_action_cmd=firefox "http://www.php.net/%s"
Пример: context_action_cmd=devhelp -s "%s"
В Geany v0.19 эта секция заменена секцией [build-menu]. Настройки из секции [build-menu] имеют преимущество в случае наличия в файле и старой секции.
Расширенное регулярное выражение для разбора сообщений выдачи при сборке исполняемого файла (нахождения имен файлов и номеров строк с ошибками).
Geany считывает только два первых полученных результата. Цифровая часть интерпретируется как номер строки, остальное как имя файла.
Пример: error_regex=(.+):([0-9]+):[0-9]+
Пример разбираемого сообщения: test.py:7:24: E202 whitespace before ']'
Команды сборки
При конфигурировании любой команды меню "Сборка" с помощью формы "Сборка" в настройках проекта результаты работы сохраняются в секции [build-menu], заменяя предыдущие настройки.
Команда запуска компилятора. Однако, ее можно использовать и для интерпретируемых языков, таких как Perl или Python. Для этих языков опцию можно применить для проверки синтаксиса, выдача которой будет направлена в окно сообщений компилятора.
Для работы с именами файлов, содержащими пробелы, такие имена следует заключать в кавычки. Доступны следующие шаблоны имен файлов:
Пример: compiler=gcc -Wall -c "%f"
Команда сборки файла. Если файл еще не скомпилирован, это будет сделано предварительно. Geany автоматически добавляет опцию -o. Команды хорошо работают с GNU gcc, но с другими компиляторами и линкерами возможны проблемы.
Пример: linker=gcc -Wall "%f"
Команда запуска готового исполняемого файла. Параметр %e означает только имя этого файла без расширения; для подстановки полного имени используйте параметр %f (например, для скриптов оболочки).
Пример: run_cmd="./%e"
В файле filetypes.common хранятся общие настройки, не зависящие от конкретного типа файлов.
Объявленные в этой секции именованные стили могут использоваться для ссылок в секциях [styling] остальных файлах описания типов filetypes.* file.
Пример.
В файле filetypes.common:
[named_styles] foo=0xc00000;0xffffff;false;true bar=foo
В файле filetypes.c:
[styling] comment=foo
Эта ссылка заменяет копирование и перенос описания стиля в другие файлы.
Заметим, что
Для именованных стилей можно определить алиасы (дублирующие имена), что собственно и показано выше на примере: bar. Алиас должен объявляться после основного стиля.
Стиль по умолчанию, используется для файлов типов, не связанных с исходными текстами.
Пример: default=0x000000;0xffffff;false;false
Стиль для показа выделений. Формат:
Цвета будут использованы только при установке для 3-го и 4-го аргументов значения 'true'. По умолчанию цвет фона темно-серый, цвет шрифта зависит от синтаксического выделения.
Пример: selection=0xc0c0c0;0x00007F;true;true
Стиль для подсвечивания парных скобок.
Пример: brace_good=0xff0000;0xFFFFFF;true;false
Стиль для подсвечивания скобок, для которых не найдены парные.
Пример: brace_bad=0x0000ff;0xFFFFFF;true;false
Стиль курсора. Интерпретируются только первый и третий аргументы. Установка третьего аргумента изменит вид курсора на «block».
Пример: caret=0x000000;0x0;false;false
Ширина курсора в пикселах, максимум — 3. Интерпретируется только первый аргумент. Значение 0 сделает курсор невидимым.
Пример: caret=1;0;false;false
Окраска фона текущей строки. Интерпретируются только второй (цвет фона) и третий (true/false - вкл./выкл фон) аргументы.
Пример: current_line=0x0;0xe5e5e5;true;false
Окраска линий размера отступов. Интерпретируются только первый и второй аргументы.
Пример: indent_guide=0xc0c0c0;0xffffff;false;false
Окраска пробельного пространства (табуляций и пробелов). Третий аргумент определяет, использовать ли заданный здесь цвет переднего плана или цвет, заданный для определенного типа файла в соотв. файле настроек.
Пример: white_space=0xc0c0c0;0xffffff;true;true
Значки сворачивания блоков текста. Интерпретируются только первый и второй аргументы.
Возможные значения первого аргумента, определяющие тип значков:
Возможные значения второго аргумента:
По умолчанию: folding_style=1;1;
Стрелки: folding_style=3;0;
Тонкая горизонтальная линия в месте сворачивания текста. Интерпретируется только первый аргумент, его возможные значения:
Пример: folding_horiz_line=0;0;false;false
Визуальные отметки, показывающие что данная строка переносится по ширине окна. Значения для первого аргумента:
Второй аргумент определяет, показывать ли отметку около границы окна или вплотную к тексту. Значения:
Остальные аргументы не интерпретируются.
Пример: line_wrap_visuals=3;0;false;false
Первый аргумент - размер отступа для подстрок при переносе строки по ширине окна в количестве пробелов. Используется только если второй аргумент - 0.
Второй аргумент: сделать отступ перенесенных подстрок как у первой подстроки или увеличить. Возможные значения:
Интерпретируется только первый аргумент.
Пример: line_wrap_indent=0;1;false;false
Уровни непрозрачности для текущей строки (первый аргумент) и выделения (второй аргумент). Допустимы значения от 0 до 256.
Для Windows 95, 98 and ME следует всегда устанавливать 256 для отключения прозрачности, в противном случае Geany может зависнуть.
Интерпретируются только первый и второй аргументы.
Пример: translucency=256;256;false;false
Стиль для подсветки строки (например, при использовании команд перехода). Первый аргумент, цвет символов, используется только если включены маркеры (см. меню "Вид").
Интерпретируются только первый и второй аргументы.
Пример: marker_line=0x000000;0xffff00;false;false
Маркер пометки результатов поиска (когда в диалоге поиска включена опция "Mark"). Интерпретируется только второй аргумент, задающий цвет фона при отображении прямоугольника.
Пример: marker_search=0x000000;0xb8f4b8;false;false
Отмеченные строки (команда "Переключить маркер", Ctrl-M). Первый аргумент, цвет символов, используется только если включены маркеры (см. меню "Вид").
Интерпретируются только первый и второй аргументы.
Пример: marker_mark=0x000000;0xb8f4b8;false;false
Уровни непрозрачности для маркера строк (первый аргумент) и маркера поиска (второй аргумент). Допустимы значения от 0 до 256.
Для Windows 95, 98 and ME следует всегда устанавливать 256 для отключения прозрачности, в противном случае Geany может зависнуть.
Интерпретируются только первый и второй аргументы.
Пример: marker_translucency=256;256;false;false
Межстрочный интервал. Первый аргумент задает верхний отступ, второй - нижний (от базовой линии шрифта).
Интерпретируются только первый и второй аргументы.
Пример: line_height=0;0;false;false
Подсказки.
Пример: calltips=0xc0c0c0;0xffffff;false;false
Символы, считающиеся дающими пробельное пространство (а также знаки препинания и спецсимволы, прим.перев.). Эти символы игнорируются при операциях выделения, переноса и удаления по границам слов (см. Клавишные команды Scintilla).
Сюда должны входить пробел (\s) и табуляция (\t).
Пример: whitespace_chars=\s\t!\"#$%&'()*+,-./:;<=>?@[\\]^`{|}~
Изменение расширения, по умолчанию используемого для сохранения файлов определенного типа, рассмотрено в разделе Файлы определений для типов файлов .
Можно переопределить список расширений используемых Geany, который находится в файле filetype_extensions.conf.
Чтобы ваша настройка заменила системную, скопируйте этот файл из $prefix/share/geany в свой каталог конфигураций, обычно это ~/.config/geany/. $prefix - путь к инсталляции Geany, см. Префикс инсталляции).
Пример:
% cp /usr/local/share/geany/filetype_extensions.conf /home/username/.config/geany/
Удалите строки с теми списками расширений, менять которые вы не хотите. Для редактирования списков вносите изменения в строку справа от знака =, записывая возможные для данного типа файла расширения через точку с запятой.
Например, список задания набора расширений для Make /home/username/.config/geany/filetype_extensions.conf должен выглядеть примерно так:
[Extensions] Make=Makefile*;*.mk;Buildfile;
Файл ~/.config/geany/geany.conf содержит все выбранные вами настройки и опции работы Geany. Его не следует редактировать во время работы Geany, поскольку при выходе будут сохранены настройки текущего сеанса работы и файл окажется перезаписан.
Имеется ряд редко используемых настроек, не показанных в диалоге Preferences. Они могут быть изменены редактированием файла настроек, после чего следует перезагрузить настройки (Инструменты->Обновить настройки) или рестартовать Geany. Ищите требуемый ключ и меняйте его значение. Пример:
brace_match_ltgt=true
В следующей таблице приведены имена ключей скрытых настроек в файле конфигурации.
Ключ | Описание | По умолчанию |
---|---|---|
Редактирование | ||
brace_match_ltgt | Подсветка угловых скобок <, >. | false |
show_editor_scrollbars | Показ линеек прокрутки. | true |
use_gtk_word_boundaries | Искать ли конец слова при выполнении связанных с границами слов команд Scintilla (см. Клавишные команды Scintilla). | true |
complete_snippets_whilst_editing | Разрешать ли завершение сниппета если продолжается правка строки (когда за курсором уже имеется какой-то текст). Параметр используется только если клавишная команда Complete snippet связана с пробелом. | false |
Интерфейс | ||
show_symbol_list_expanders | Показ маленьких значков сворачивания ветвей дерева списка имен (только в GTK 2.12 и старше). | true |
allow_always_save | Выполнение команды сохранения файла даже при отсутствии его изменений. | false |
compiler_tab_autoscroll | Автоматическая прокрутка сообщений в окне компилятора (до последней строки). | true |
Эмулятор терминала VTE | ||
emulation | Режим эмуляции терминала. Изменяйте только в случае если VTE termcap файлы отличны от vte/termcap/xterm. | xterm |
send_selection_unsafe | По умолчанию Geany при передаче выделения в терминал отбрасывает любые хвостовые строки, чтобы предотвратить исполнение содержащегося в них кода. Это делается главным образом для безопасности. Если почему-либо вы хотите отказаться от отсечения строк и исполнять всю передачу напрямую, установите true. | false |
Работа с файлами | ||
use_safe_file_saving | Безопасный режим записи файлов на диск. По умолчанию опция отключена, и файлы записываются напрямую. В случае недостатка места на диске это приведет к потере данных. В безопасном режиме данные сначала сбрасываются во временный файл, который в случае успеха перемещается в конечный файл. Это обеспечивает лучшую защиту от ошибок в случае исчерпания дискового пространства. Однако нарушаются жесткие ссылки на оригинальный файл и его разрешения (например, сбрасываются флаги исполнения). Используйте эту опцию осторожно, она и сама может вызвать серьезные проблемы. Лучше заранее позаботиться о достаточном дисковом пространстве. | false |
Меню "Сборка" | ||
number_ft_menu_items | Максимальное число команд в секции меню "Сборка" для типов файлов. | 2 |
number_non_ft_menu_items | Максимальное число команд в секции меню "Сборка" не связанной с типом файлов. | 3 |
number_exec_menu_items | Максимальное число команд в секции запуска на исполнение меню "Сборка". | 2 |
В секции [build-menu] описывается конфигурация меню "Сборка". Такая секция может входить в файлы конфигурации для типов файлов, предпочтений, проектов; во всех случаях она имеет описанный1 ниже формат. Разные команды меню загружаются из разных файлов, см. таблицу в разделе Конфигурация меню "Сборка". Все настройки могут быть сделаны с помощью окон диалога, за исключением команд исполнения в описаниях типов файлов и определений типов файлов в файле проекта, которые требуют ручного редактирования.
Для каждой команды меню в секции build-menu имеется запись следующего формата:
GG_NN_FF
где
Кроме относящихся к проекту настроек такой файл может содержать список файлов текущего сеанса работы с Geany.
Файл проекта может содержать в секции [build-menu] добавочные поля сверх тех, что были рассмотрены выше в разделе Секция [build-menu].
Команды меню связанные с типами файлов, настроенные для проекта, хранятся в файле проекта. Список типов файлов находится в разделе filetypes.
Формат записей для типов файла соответствует приведенному в разделе Секция [build-menu], но ключи имеют префикс из имени типа, как оно приведено в списке filetypes, например запись для команды меню в разделе типов для языка С должна быть следующей:
CFT_00_LB=Label
Geany поддерживает работу со следующими шаблонами:
Для использования этих шаблонов откройте меню "Правка" или контекстное меню окна редактора, выберите команду "Вставить комментарии" выберите и вставьте необходимый шаблон.
Заголовок файла и запись об изменениях всегда вставляются в начале файла.
Для вставки описания функции курсор должен находиться внутри нее, чтобы автоматически могло быть найдено имя функции. Описание вставляется на одну строку выше функции. Если имя функции найти не удалось, в тексте описания вместо правильного имени появится "unknown".
Заметим, что
Geany автоматически перезагружает шаблоны, обнаружив сохранение файла в каталоге для шаблонов. Перезагружаются шаблоны и по команде Инструменты->Обновить настройки.
Мета-данные могут использоваться со всеми шаблонами, но по умолчанию применяются только для заголовка файла и записей об изменениях.
В диалоге конфигурации имеется страница "Шаблоны" (см. Настройка шаблонов). Здесь можно определить данные, по умолчанию вставляемые в шаблоны. Чтобы изменения вступили в силу, вызовите команду Инструменты->Обновить настройки или перезагрузите Geany.
Это шаблоны для создания новых файлов. Чтобы воспользоваться ими, выберите в меню "Файл" команду "Создать из шаблона".
Несколько шаблонов для разных типов файлов устанавливаются по умолчанию. Можно добавить шаблоны, создав соответствующие файлы.
Их содержимое - требуемый текст образца документа, в который могут включаться параметры подстановки, например {fileheader}.
Шаблоны считываются из следующих каталогов:
Соответствующий тип файла определяется по расширению имени файла шаблона, если оно имеется. Например, созданный файл module.c появится в меню для создания с помощью шаблонов файлов с типом 'C'.
Заметим, что
вместо этих шаблонов рекомендуется использовать собственные шаблоны файлов.
Шаблоны типов файлов считываются из каталога ~/.config/geany/templates и имеют имена, состоящие из слова "filetype." и имени типа, например "filetype.python", "filetype.sh" и т.п. Если вы сомневаетесь по поводу расширения, оно такое же как расширение файла конфигурации типа, обычно находящегося в каталоге /usr/share/geany, с префиксом "filetypes.".
Имеется также файл шаблона filetype.none, используемый при вызове команды "Создать" без указания типа файла. По умолчанию этот шаблон пустой.
Шаблоны находятся в каталоге ~/.config/geany/templates/. Открыв тот или иной шаблон, вы можете отредактировать его по своему желанию. There are some wildcards which will be automatically replaced by Geany at startup.
В шаблонах могут содержатся параметры - ключевые слова, заменяемые при загрузке. Все они помещаются в тексте в фигурные скобки "{" and "}", например {date}.
Параметры для подстановки символов
Параметр | Описание | Доступность |
---|---|---|
ob | { открывающая фигурная скобка. | Шаблоны файлов, заголовки файлов, сниппеты. |
cb | } закрывающая фигурная скобка. | Шаблоны файлов, заголовки файлов, сниппеты. |
pc | % Процент (сам символ % используется в формате сниппетов). | Сниппеты. |
Общие параметры
Являются настраиваемыми, см. Настройки шаблонов.
Параметр | Описание | Доступность |
---|---|---|
developer | Разработчик. | Шаблоны файлов, заголовки файлов, описания функций, журнал изменений, bsd, gpl, сниппеты. |
initial | Сокращение имени разработчика, например "JFD" вместо John Foobar Doe. | Шаблоны файлов, заголовки файлов, описания функций, журнал изменений, bsd, gpl, сниппеты. |
E-mail разработчика. | Шаблоны файлов, заголовки файлов, описания функций, журнал изменений, bsd, gpl, сниппеты. | |
company | Компания, организация. | Шаблоны файлов, заголовки файлов, описания функций, журнал изменений, bsd, gpl, сниппеты. |
version | Начальная версия при создании файла. | Шаблоны файлов, заголовки файлов, описания функций, журнал изменений, bsd, gpl, сниппеты. |
Дата и время
Формат настраиваемый, см. Настройка шаблонов. Можно использовать спецификации, предусмотренные для функции ANSI C strftime. Подробности см. на http://man.cx/strftime.
Параметр | Описание | Доступность |
---|---|---|
year | Текущий год. ФОрмат по умолчанию YYYY. | Шаблоны файлов, заголовки файлов, описания функций, журнал изменений, bsd, gpl, сниппеты. |
date | Текущая дата. Формат по умолчанию YYYY-MM-DD. | Шаблоны файлов, заголовки файлов, описания функций, журнал изменений, bsd, gpl, сниппеты. |
datetime | Дата и время.Формат по умолчанию: DD.MM.YYYY HH:mm:ss ZZZZ. | Шаблоны файлов, заголовки файлов, описания функций, журнал изменений, bsd, gpl, сниппеты. |
Динамические параметры
Параметр | Описание | Доступность |
---|---|---|
untitled | Слово "untitled" (в локализациях переводится). | Шаблоны файлов, заголовки файлов, описания функций, журнал изменений, bsd, gpl, сниппеты. |
geanyversion | Версия Geany version, например. "Geany 0.19". | Шаблоны файлов, заголовки файлов, описания функций, журнал изменений, bsd, gpl, сниппеты. |
filename | Имя текущего файла. Для новых файлов будет подставлено при первом сохранении, если параметр находится в пределах трех первых строк файла. | Шаблоны файлов, заголовки файлов, описания функций, журнал изменений, bsd, gpl, сниппеты. |
project | Название проекта, если оно имеется. | Шаблоны файлов, заголовки файлов, сниппеты. |
description | Описание проекта, если оно имеется. | Шаблоны файлов, заголовки файлов, сниппеты. |
functionname | Имя функции на которой стоит курсор. | Описание функции. |
command:path | Исполняет указанную команду и подставляет вместо параметра ее выдачу. Подробнее см. Специальный параметр {command:} | Шаблоны файлов, заголовки файлов, описания функций, журнал изменений, bsd, gpl, сниппеты. |
Вставка фрагментов
Параметр | Описание | Доступность |
---|---|---|
gpl | Краткая ссылка на лицензию GPL. | Заголовок файла. |
bsd | Краткая ссылка на лицензию BSD. | file header. |
fileheader | Шаблон заголовка файла. Параметр замещается только в шаблонах типов файлов. | Сниппеты, файловые шаблоны |
Параметр вызывает исполнение указанной команды, а ее выдача (stdout) вставляется в файл.
Пример:
{command:uname -a}
Получаемый результат:
Linux localhost 2.6.9-023stab046.2-smp #1 SMP Mon Dec 10 15:04:55 MSK 2007 x86_64 GNU/Linux
Используя этот прием, поместите в шаблон рядом с параметром необходимый поясняющий текст.
В окружении вызываемой команды установлены переменные GEANY_FILENAME, GEANY_FILETYPE и GEANY_FUNCNAME. Эти переменные имеются всегда, но могут быть пустыми. Их значения устанавливаются только тогда, когда они известны Geany. Например, переменная GEANY_FUNCNAME будет содержать значение только в шаблоне описания функции. Посмотреть значения переменных можно командами оболочки, например
$GEANY_FILENAME
Заметим, что
если указанная команда (программа) не нашлась или не была запущена, в текст будет подставлена пустая строка. Определить в чем дело можно с помощью сообщения об ошибке (stderror) которое будет показано в окне сообщений и в диалоге Справка->Сообщения отладки.
С помощью редактора панели или ручного редактирования файла ui_toolbar.xml можно добавлять, удалять и переставлять кнопки и другие элементы панели инструментов.
Редактор панели вызывается из настройки предпочтений на самой панели инструментов или щелчком по ней правой кнопкой мыши и выбором из контекстного меню.
Для получения приоритета над общими системными настройками скопируйте файл ui_toolbar.xml из каталога $prefix/share/geany в свой каталог конфигураций, обычно ~/.config/geany/. $prefix - путь к инсталляции Geany.
Пример:
% cp /usr/local/share/geany/ui_toolbar.xml /home/username/.config/geany/
Затем можно редактировать файл, добавляя любые доступные элементы перечисленные в файле, удаляя и переставляя существующие, в том числе разделители. Если при правке возникнут ошибки формата XML, вместо исправленного файла Geany использует общий.
Заметим, что
Действие | Описание |
---|---|
Создать | Создать новый файл |
Открыть | Открыть файл |
Сохранить | Сохранить файл |
Сохранить всё | Cохранить все открытые файлы |
Обновить | Повторно загрузить файл с диска |
Закрыть | Закрыть файл |
Закрыть всё | Закрыть все открытые файлы |
Печать | Напечатать файл |
Вырезать | Вырезать выделенный фрагмент в буфер обмена |
Копировать | Скопировать выделенный фрагмент в буфер обмена |
Вставить | Вставить содержимое буфера обмена |
Удалить | Удалить выделенный фрагмент |
Отменить | Отменить последнее действие |
Вернуть | Снова вернуть последнее действие |
Назад | Перейти к предыдущему положению |
Вперед | Перейти к следующему положению |
Скомпилировать | Скомпилировать файл |
Сборка | Собрать файл (действие определяется в подменю для команд Make. Geany запоминает последнее выбранное действие и затем использует его по умолчанию при щелчке по кнопке). |
Запустить | Запустить полученную программу на исполнение (или просмотр) |
Выбор цвета | Открыть диалог выбора цвета с палитры |
Увеличить | Укрупнить текст (масштаб) |
Уменьшить | Уменьшить текст (масштаб) |
Уменьшить отступ | Уменьшить отступ |
Увеличить отступ | Увеличить отступ |
Заменить | Замена |
Поиск | Поле ввода для элемента 'Поиск' |
Найти | Искать в файле введенный текст (работает вместе с 'Поиск') |
Перейти | Поле ввода места перехода для 'Перейти к' (может использоваться самостоятельно) |
Перейти к | Перейти к строке по номеру (работает вместе с 'GotoEntry') |
Настройки | Открыть диалог настроек |
Выход | Выход |
Модуль дает каждому вновь созданному файлу случайное имя, устанавливая тип файла по использованному шаблону. Это позволяет быстро компилировать файл и делать прочие операции, не отвлекаясь на диалог "Сохранить как". Это может быть полезно, если вы часто пишете небольшие фрагменты чтобы их тут же протестировать.
При сохранении текущего файла модуль создаст его резервную копию с предыдущим состоянием. В менеджере модулей можно задать каталог для сохранения копий и указать, какое расширение им присваивать.
Этот документ, (geany.txt) создан в reStructuredText (or "reST"). Его исходный файл находится в подкаталоге doc Geany. Если вы хотите внести изменения в документацию, следует скачать исходный файл непосредственно с SVN, чтобы быть уверенным что это последняя версия. Для экспорта отредактированного файла в форматы HTML или PDF запустите в этом же каталоге "make doc" или "make pdf" соответственно. В первом случае будет обновлен файл geany.html, во втором создан файл geany-0.19.pdf.
Если вы довольны результатами работы, создайте патч:
% svn diff geany.txt > foo.patch
и предложите этот файл для списка рассылки.
Для сборки документации у вас должен быть установлен пакет утилит Python docutils. Пакет для систем Debian и Fedora называется python-docutils.
Copyright В© 1998, 2006 Neil Hodgson <neilh(at)scintilla(dot)org>
Данное приложение распространяется на условиях лицензии для Scintilla и SciTE. Копия текста лицензии включена в комплект исходных кодов программы (scintilla/License.txt) и дана в приложении к настоящему документу, см. Лицензия на Scintilla и SciTE.
20 June 2006
Клавишные команды для Scintilla в основном следуют общепринятым соглашениям для Windows и GTK+. Все клавиши перемещения (стрелки, page up/down, home, end) позволяют менять размеры выделения при удержании клавиши Shift для потокового выделения и клавиш Shift и Ctrl для прямоугольного выделения. Некоторые команды могут оказаться недоступны при работе с теми или иными локализациями раскладки клавиатуры, так как будут использованы в системных целях. В меню указаны клавишные эквиваленты команд. Некоторые менее употребительные команды не имеют эквивалентных команд меню:
Действие | Клавиши |
---|---|
Увеличить размер текста. | Ctrl+Keypad+ |
Уменьшить размер текста. | Ctrl+Keypad- |
Вернуть размер текста к нормальному. | Ctrl+Keypad/ |
Сделать отступ для блока текста. | Tab |
Убрать отступ. | Shift+Tab |
Удалить до начала слова. | Ctrl+BackSpace |
Удалить до конца слова. | Ctrl+Delete |
Удалить до начала строки. | Ctrl+Shift+BackSpace |
Перейти в начало документа. | Ctrl+Home |
Расширить выделение к началу документа. | Ctrl+Shift+Home |
Перейти к началу подстроки в окне. | Alt+Home |
Расширить выделение к началу подстроки в окне. | Alt+Shift+Home |
Перейти в конец документа. | Ctrl+End |
Расширить выделение до конца документа. | Ctrl+Shift+End |
Расширить выделение до конца подстроки в окне. | Alt+Shift+End |
Предыдущий абзац. Shift расширяет выделение. | Ctrl+Up |
Следующий абзац. Shift расширяет выделение. | Ctrl+Down |
Предыдущее слово. Shift расширяет выделение. | Ctrl+Left |
Следующее слово. Shift расширяет выделение. | Ctrl+Right |
Следующие свойства унаследованы от X-Windows (GTK поддерживает их в Windows):
Ряд опций может быть изменен только при компиляции Geany. Для их изменения необходимо редактировать соответствующие файлы исходных текстов, находящиеся в подкаталоге src subdirectory. Найдите блок строк начинающийся с #define GEANY_*. При этом не должны изменяться никакие определения, кроме перечисленных ниже.
Заметим, что
большинству пользователей все это ни к чему.
Опция | Описание | По умолчанию |
---|---|---|
GEANY_STRING_UNTITLED | Строка, задающая имя для новых файлов, предлагаемое по умолчанию. Переводится в локализациях. | untitled |
GEANY_WINDOW_MINIMAL_WIDTH | Минимальная ширина главного окна. | 620 |
GEANY_WINDOW_MINIMAL_HEIGHT | Минимальная высота главного окна. | 440 |
GEANY_WINDOW_DEFAULT_WIDTH | Ширина главного окна при первом запуске по умолчанию. | 900 |
GEANY_WINDOW_DEFAULT_HEIGHT | Высота главного окна при первом запуске по умолчанию. | 600 |
Только для Windows | ||
GEANY_USE_WIN32_DIALOG | Если 1, для открытия и сохранения файлов используются диалоги Windows (только для 32-разрядных версий!) вместо диалогов GTK. Диалоги Windows не позволяют выбрать кодировку файлов. | 0 |
Опция | Описание | По умолчанию |
---|---|---|
GEANY_PROJECT_EXT | Расширение для файлов проектов Geany по умолчанию. | geany |
Опция | Описание | По умолчанию |
---|---|---|
GEANY_WORDCHARS | Символы,которые могут входить в состав слов; важны для действий со словами как таковыми. | строка символов: a-z, A-Z, 0-9 и символ подчеркивания. |
Эти настройки по умолчанию могут быть переопределены в диалоге Настройка предпочтений.
Опция | Описание | По умолчанию |
---|---|---|
GEANY_MIN_SYMBOLLIST_CHARS | Набор какого числа символов вызовет список автозавершения. | 4 |
GEANY_DISK_CHECK_TIMEOUT | Время в секундах между проверками неизменности файла на диске (на изменение какой-либо другой программой). | 30 |
GEANY_DEFAULT_TOOLS_MAKE | Используемая утилита make по умолчанию (опция может также включать путь). | "make" |
GEANY_DEFAULT_TOOLS_TERMINAL | Эмулятор терминала по умолчанию (должен принимать опцию командной строки "-e"). Опция может включать путь. | "xterm" |
GEANY_DEFAULT_TOOLS_BROWSER | Интернет-браузер по умолчанию. Опция может включать путь.. | "firefox" |
GEANY_DEFAULT_TOOLS_PRINTCMD | Программа печати по умолчанию. Должна позволять работать с «плоскими», т.е. чисто текстовыми файлами. Опция может включать путь. | "lpr" |
GEANY_DEFAULT_TOOLS_GREP | Утилита grep по умолчанию. Должна быть совместима с GNU grep. Опция может включать путь. | "grep" |
GEANY_DEFAULT_MRU_LENGTH | Длина списка "Недавние файлы" (ранее открывавшихся файлов). | 10 |
GEANY_DEFAULT_FONT_SYMBOL_LIST | Шрифт, используемый на боковой панели для показа имен и открытых файлов. | "Sans 9" |
GEANY_DEFAULT_FONT_MSG_WINDOW | Шрифт для окна сообщений | "Sans 9" |
GEANY_DEFAULT_FONT_EDITOR | Шрифт по умолчанию используемый для редактора. | "Monospace 10" |
GEANY_TOGGLE_MARK | Строка, используемая для отметки комментариев при включении/выключении их показа. | "~ " |
GEANY_MAX_AUTOCOMPLETE_WORDS | Максимальная длина списка слов для автозавершения. | 30 |
Опция | Описание | По умолчанию |
---|---|---|
GEANY_BUILD_ERR_HIGHLIGHT_MAX | Число сообщений об ошибках, которые следует подсвечивать в окне компилятора и в исходном коде (обычно интерес представляют несколько первых ошибок, последующие являются уже их следствием). | 100 |
Опция | Описание | По умолчанию |
---|---|---|
PRINTBUILDCMDS | Всякий раз при расчете приоритета команд меню "Сборка" выводить состояние меню в таблице конфигурирования. Может быть полезно при отладке перезагружаемого файла конфигурации. Выдача может оказаться громоздкой. Может быть также включено или отключено отладчиком установкой printbuildcmds в 1/0, что имеет приоритет над опцией компиляции. | FALSE |
GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software-to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. <one line to give the program's name and a brief idea of what it does.> Copyright (C) <year> <name of author> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items-whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. <signature of Ty Coon>, 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License.
Copyright 1998-2003 by Neil Hodgson <neilh(at)scintilla(dot)org>
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation.
NEIL HODGSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL NEIL HODGSON BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.