<appendix id="plugin-tools">
<title
>Подключаемый инструментарий</title>

<indexterm zone="plugin-tools">
  <primary
>модули</primary
></indexterm>

<para
>&kdevelop; содержит большое количество небольших инструментов, помогающих вам быстрее выполнить определённую задачу. Большинство из них реализованы в виде модулей. Это значит, что если они вам не нужны, вы можете их отключить их.</para>
<para
>Это также значит, что если если вам не хватает каких-то функций, которые по-идее должны присутствовать в программе подобного рода, возможно они уже реализованы в виде модуля, отключенного по умолчанию. Например, в меню Файл может присутствовать пункт "Быстрое открытие", но только если включен соответствующий параметр в окне Проект-Параметры проекта. </para>
 
<para
>Все модули реализуют класс KDevPlugin, определяемый в lib/interfaces/kdevplugin.h. Далее приведена выдержка из комментария к нему.</para>

<para
>Базовым классом для всех модулей KDevelop является KDevPlugin. Модуль - это компонент, загружаемый в среде KDevelop во время её запуска или по запросу. Каждый модуль имеет свою область действия, они делятся на: <itemizedlist>
<listitem
><simpara
>Базовые</simpara
></listitem>
<listitem
><simpara
>Глобальные</simpara
></listitem>
<listitem
><simpara
>Модули работы с проектами</simpara
></listitem>
</itemizedlist>
</para>

<para
>Базовые (Core) модули - это глобальные модули с важной функциональностью, и поэтому их отключение в настройках невозможно.</para>

<para
>Для глобальных модулей требуется только сама среда KDevelop, интерфейс KDevProject и какие-либо данные, относящиеся к проектам, ими не используются. Например, модуль uimode позволяет выбирать графический интерфейс для среды разработки. </para>

<para
>Модули работы с проектами требуют наличия загруженного проекта и, обычно, сами загружаются/освобождаются вместе с проектами. Пример такого модуля - Менеджер Automake - загружается только при открытии проектов, использующих Automake для сборки. </para>

<para
>Как уже сказано выше, базовые модули не могут быть отключены. Отключить и включить глобальные модули можно в окне <menuchoice
><guimenu
>Настройка</guimenu
> <guimenuitem
>Настроить KDevelop...</guimenuitem
></menuchoice
>, на странице <guibutton
>Модули</guibutton
>. Модули работы с проектами включаются и отключаются в окне <menuchoice
><guimenu
>Проект</guimenu
> <guimenuitem
>Параметры проекта...</guimenuitem
></menuchoice
>, также на странице <guibutton
>Модули</guibutton
>. Загруженные модули могут влиять на многие параметры KDevelop. Например, они могут добавлять новые меню, панели инструментов, комбинации клавиш. </para>

<para
>Отключенные модули не добавляют свои элементы в меню и вообще не загружаются в память. </para>


<para
>Ниже приведен список модулей, сгенерированный сценарием listplugins.sh. Для каждого модуля имеется файл .desktop с информацией нём, такой как его имя и описание, оно и приводится в списке.</para>
<para
>Модули сгруппированы по области действия (базовые, глобальные, работы с проектами).</para>

<para
>Базовые модули</para>
<itemizedlist>
<listitem
><formalpara id="KDevAppWizard">
<title
>Мастер приложений</title>
<para
>Мастер приложений</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevDiff">
<title
>Просмотрщик различий</title>
<para
>Просмотрщик различий</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevFileCreate">
<title
>Мастер создания файлов</title>
<para
>Мастер создания файлов</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevFullScreen">
<title
>Полноэкранный режим</title>
<para
>Полноэкранный режим</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevTipOfDay">
<title
>Полезный совет</title>
<para
>Полезный совет</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevUIChooser">
<title
>Выбор интерфейса пользователя</title>
<para
>Предоставляет диалог выбора режима интерфейса пользователя.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevVCSManager">
<title
>VCSManager</title>
<para
>Управление системами контроля версий </para
></formalpara
></listitem>
</itemizedlist>

<para
>Глобальные модули</para>
<itemizedlist>
<listitem
><formalpara id="KDevAbbrev">
<title
>Расшифровщик сокращений</title>
<para
>Предоставляет поддержку для настраиваемых сокращений - коротких слов, которые заменяются на часто используемые структуры кода.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevDocumentation">
<title
>Документирование</title>
<para
>Модуль документации позволяет упростить работу с документацией.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevfilelist">
<title
>Список файлов</title>
<para
>Список открытых в данных момент файлов (полезно, когда они не помещаются на панели вкладок).</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevFileSelector">
<title
>Селектор файлов</title>
<para
>Средство просмотра списка файлов с поддержкой работы по сети.</para
></formalpara
></listitem>
<listitem
><formalpara>
<title
>Фильтрация и вставка с помощью команд оболочки</title>
<para
>Предоставляет функции работы с текстом в редакторе с использованием утилит командной строки.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevGrepView">
<title
>Интеграция Grep</title>
<para
>Интегрирует "find|grep" в KDevelop - позволяет производить быстрый поиск по нескольким файлам с использованием шаблонов или регулярных выражений.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevKonsoleView">
<title
>Встроенный эмулятор терминала</title>
<para
>Предоставляет встроенную консоль для быстрого вызова командной строки.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevOpenWith">
<title
>Дополнение меню "Открыть с помощью"</title>
<para
>Этот модуль предоставляет различные возможности открытия файлов, используя контекстные меню KDevelop.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevPartExplorer">
<title
>Средство опроса компонентов</title>
<para
>Графическое средство для выполнения запросов KTrader о зарегистрированных службах.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevRegexpTest">
<title
>Проверка регулярных выражений</title>
<para
>Средство для определения и проверки регулярных выражений на предмет соответствия их наиболее распространённым вариантам синтаксиса.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevReplace">
<title
>Замена по проекту</title>
<para
>Этот модуль предоставляет интерактивные возможности поиска и замены по файлам в проекте. Сначала проводится поиск по строке или регулярному выражению, далее выбор с предпросмотром и применение замен из списка доступных вариантов.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevscripting">
<title
>Сценарии</title>
<para
>Модуль сценариев позволяет автоматизировать работу с помощью KScript</para
></formalpara
></listitem>
<listitem
><formalpara id="Code_Snippets">
<title
>Заготовки кода</title>
<para
>Модуль сохранения часто используемых частей кода в одно место для быстрого доступа к ним</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevTextTools">
<title
>Отображение структуры текста</title>
<para
>Отображает структуру документов в формате HTML и TEX, а также предоставляет возможности навигации по ним.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevTools">
<title
>Дополнение меню инструментов</title>
<para
>Предоставляет возможности добавления в меню пунктов вызова внешних приложений.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevvalgrind">
<title
>Интерфейс к Valgrind</title>
<para
>Valgrind - это средство нахождения проблем управления памятью в программах. http://developer.kde.org/~sewardj/</para
></formalpara
></listitem>
</itemizedlist>

<para
>Модули работы с проектами</para>
<itemizedlist>
<listitem
><formalpara id="KDevannotation">
<title
>Модуль Аннотации</title>
<para
>Модуль Аннотации</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevAStyle">
<title
>Форматировщик исходного кода</title>
<para
>Модуль для форматирования кода по установленным правилам.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevBookmarks">
<title
>Закладки</title>
<para
>Модуль, который обеспечивает навигацию и просмотр активных закладок в коде, а также их сохранение в проекте.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevClassView">
<title
>Обзор классов</title>
<para
>Этот модуль отображает список классов в проекте, включая методы и атрибуты а также предоставляет возможности навигации по коду.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevcopyto">
<title
>CopyTo</title>
<para
>Простой модуль передачи файлов на сервер, с помощью KIO.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevCTags2">
<title
>Интерфейс к CTags</title>
<para
>CTags - это средство навигации по коду, поддерживающее многие языки. Будучи загружено, оно предоставляет контекстное меню для нахождения описания и определения типа выбранного символа, а также диалог запроса. http://ctags.sourceforge.net/</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevdistpart">
<title
>Сборка и распространение пакетов</title>
<para
>Помогает в сборке и распространении пакетов программ. В данное время поддерживается только формат RPM.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevDoxygen">
<title
>Поддержка Doxygen</title>
<para
>Модуль поддержки doxygen предоставляет возможности контроля генерации проектной документации на основе содержимого исходных файлов. Для использования необходим doxygen. Подробнее об этом смотрите на http://www.doxygen.org.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevQuickOpen">
<title
>QuickOpen</title>
<para
>Предоставляет эффективное средство нахождения и открытия файлов и классов в больших проектах.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevSecurity">
<title
>Проверка безопасности</title>
<para
>Проверка безопасности кода</para
></formalpara
></listitem>
</itemizedlist>
 


<table id="table-project-parts">
<title
>Модули &kdevelop; для управления проектом</title>
<tgroup cols="2"
><tbody>
<row>
  <entry
>antproject</entry>
  <entry
>ANT (&Java;)</entry>
</row>
<row>
  <entry
>autoproject</entry>
  <entry
>Automake</entry>
</row>
<row>
  <entry
>customproject</entry>
  <entry
>Специальный проект</entry>
</row>
<row>
  <entry
>trollproject</entry>
  <entry
>Менеджер проектов, основанный на QMake</entry>
</row>
</tbody
></tgroup>
</table>
 


<table>
<title
>Модули &kdevelop; по поддержке языков программирования</title>
<tgroup cols="2">
<tbody>
<row
><entry
>cppsupport</entry
><entry
>Поддержка C/C++</entry
></row>
<row
><entry
>fortransupport</entry
><entry
>Поддержка Fortran</entry
></row>
<row
><entry
>javasupport</entry
><entry
>Поддержка &Java;</entry
></row>
<row
><entry
>perlsupport</entry
><entry
>Поддержка Perl</entry
></row>
<row
><entry
>phpsupport</entry
><entry
>Поддержка PHP</entry
></row>
<row
><entry
>pythonsupport</entry
><entry
>Поддержка Python</entry
></row>
</tbody
></tgroup>
</table>


<para
>Далее некоторые модули будут рассмотрены более подробно</para>

<itemizedlist>
<listitem>
<formalpara>
<title
>Модуль <command
>abbrev</command
></title>
<indexterm zone="plugin-tools"
><primary
><command
>abbrev</command
></primary
></indexterm>

<para
>Этот модуль заменяет сокращения на часто используемые части кода. Он активируется нажатием <keycombo
><keycap
>Ctrl</keycap
> <keycap
>Пробел</keycap
></keycombo
>. Например, вы ввели <literal
>"ife"</literal
> в редактор языка C++. Теперь нажмите <keycombo
><keycap
>Ctrl</keycap
><keycap
>Пробел</keycap
></keycombo
>, и вы получите шаблон кода <literal
>if-else</literal
>. Набор поддерживаемых сокращений зависит от языка программирования. Например, для PHP вам вряд ли будут интересны сокращения кода для &Java;. </para>
</formalpara>

<para
>Набор сокращений можно настраивать. Если модуль активен, то это можно сделать в окне <menuchoice
><guimenu
>Настройка</guimenu
> <guimenuitem
>Настроить KDevelop...</guimenuitem
></menuchoice
>, вкладка <guibutton
>Сокращения</guibutton
> </para>
</listitem>

<listitem>
<formalpara id="KDevFilter">
<title
>Модуль <command
>filter</command
></title>
<indexterm zone="plugin-tools"
><primary
><command
>filter</command
></primary
></indexterm>

<para
>Предоставляет две функции. <menuchoice
><guimenu
>Сервис</guimenu
> <guimenuitem
>Выполнить команду</guimenuitem
></menuchoice
> позволяет ввести команду оболочки. После нажатия на кнопке <guibutton
>Запуск</guibutton
> вывод команды будет помещён в буфер обмена. </para>
</formalpara>

<para
>Вторая функция доступна через пункт меню <menuchoice
><guimenu
>Сервис</guimenu
><guimenuitem
>Фильтровать выделение через команду...</guimenuitem
></menuchoice
>. Для её использования выделите текст в редакторе. Выделенный текст будет передан на стандартный ввод указанной команде, а в вместо него будет вставлен вывод команды. </para>

<para
>Например, принаписании документации часто требуется ссылаться на команды меню. Например, для команды Скопировать из меню Правка нужно написать: <programlisting
>&lt;menuchoice&gt;&lt;guimenu&gt;Edit&lt;/guimenu&gt;&lt;guimenuitem&gt;Copy&lt;/guimenuitem&gt;&lt;/menuchoice&gt;</programlisting
>. Но значительно проще ввести просто "Edit - Copy" и оставить утомительную работу по вставку тегов компьютеру. Для этого напишем маленький сценарий и сохраним его в файле с именем mef в домашнем каталоге: <programlisting
>sed s/"^\(.*\) - \(.*\)\$"/"&lt;menuchoice&gt;&lt;guimenu&gt;\1&lt;\/guimenu&gt;&lt;guimenuitem&gt;\2&lt;\/guimenuitem&gt;&lt;\/menuchoice&gt;"/</programlisting
> Сделаем его исполняемым. Теперь ведите и выделите текст "Edit - Copy", затем вызовите меню  <menuchoice
><guimenu
>Сервис</guimenu
><guimenuitem
>Фильтровать выделение через команду...</guimenuitem
></menuchoice
> и запустите ~/mef. "Edit - Copy" будет заменено таким текстом: <programlisting
>&lt;menuchoice&gt;&lt;guimenu&gt;Edit&lt;/guimenu&gt;&lt;guimenuitem&gt;Copy&lt;/guimenuitem&gt;&lt;/menuchoice&gt;</programlisting>
</para>


</listitem>

<listitem>
<formalpara>
<title
>Модуль &doxygen;</title>
<indexterm zone="plugin-tools"
><primary
>&doxygen;</primary
></indexterm>
<indexterm zone="plugin-tools"
><primary
>средство документирования</primary
></indexterm>
<indexterm zone="plugin-tools"
><primary
>API-документация</primary
></indexterm>

<para
>Упрощает использования средства API-документирования &doxygen; (<ulink url="http://www.doxygen.org"
></ulink
>). <menuchoice
><guimenu
>Проект</guimenu
> <guimenuitem
>Запустить Doxygen</guimenuitem
></menuchoice
> приведёт к генерированию API-документации к текущему проекту, основываясь на конфигурационном файле <filename
>Doxyfile</filename
> в каталоге проекта. </para>
</formalpara>

<para
>Более того, вы можете настроить &doxygen; через диалог <menuchoice
><guimenu
>Проект</guimenu
> <guimenuitem
>Параметры проекта...</guimenuitem
></menuchoice
>. Он подобен мастеру &doxywizard;. </para>
</listitem>

<listitem>
<formalpara>
<title
>Модуль &ctags;</title>
<indexterm zone="plugin-tools"
><primary
>&ctags;</primary
></indexterm>

<para
>Этот инструмент является расширением обзора классов, основанным на программе ctags, и поддерживает больше языков программирования. </para>
</formalpara>

<para
>Активируйте модуль через меню <menuchoice
><guimenu
>Сервис</guimenu
> <guimenuitem
>CTags...</guimenuitem
></menuchoice
>. При первом запуске, вам будет предложено создать базу данных поиска. При этом в каталоге проекта будет создан файл <filename
>tags</filename
>. Это текстовый файл со списком идентификаторов исходных файлов проекта. </para>

<para
>В такой базе данных вы можете выполнять поиск двумя способами: если <guilabel
>Совпадение с регулярным выражением</guilabel
> включено, вводимый вами текст будет интерпретироваться как регулярное выражение (стандарта POSIX) и сравниваться в существующими идентификаторами. Например, текст <literal
>.*Widget</literal
> приведёт к поиску всех идентификаторов, заканчивающихся на <literal
>Widget</literal
>. Иначе, поиск будет дословным. </para>

<para
>При поиске будет выводиться список подходящих идентификаторов, сопровождающийся номерами строк с их объявлениями. Чтобы перейти к объявлению, щёлкните на идентификаторе. </para>

<para
>Для некоторых языков программирования, &ctags; распознаёт разные типы идентификаторов. например, в Python есть классы и функции, и вы можете выборочно искать отдельно либо классы, либо функции. </para>

<para
>База данных не обновляется каждый раз при изменении исходников. Поэтому вам нужно самостоятельно периодично обновлять её с помощью кнопки <guibutton
>Обновить</guibutton
>. </para>
</listitem>

<listitem>
<formalpara>
<title
>Модуль  <command
>astyle</command
></title>
<indexterm zone="plugin-tools"
><primary
><command
>astyle</command
></primary
></indexterm>
<indexterm zone="plugin-tools"
><primary
><application
>Оформление исходного кода</application
></primary
></indexterm>
<indexterm zone="plugin-tools"
><primary
>выставление отступов</primary
></indexterm>

<para
>Astyle - это модуль для форматирования кода в соответствии с определённым набором файлов. </para>
</formalpara>
</listitem>

<listitem>
<formalpara>
<title
>Модуль <command
>regexptest</command
></title>
<indexterm zone="plugin-tools"
><primary
><command
>regexptest</command
></primary
></indexterm>
<indexterm zone="plugin-tools"
><primary
>отладка</primary
><secondary
>регулярные выражения</secondary
></indexterm>
<indexterm zone="plugin-tools"
><primary
>регулярные выражения</primary
><secondary
>отладка</secondary
></indexterm>

<para
>Составление регулярных выражений может быть долгой работой, обычно первая попытка поиска по введённому выражению выводит много результатов. Модуль regexptest позволяет вам напрямую отслеживать изменения в регулярном выражении. он активируется через <menuchoice
><guimenu
>Сервис</guimenu
> <guimenuitem
>Проверить регулярное выражение...</guimenuitem
></menuchoice
>. </para>
</formalpara>

<para
>Вы можете выбрать синтаксис регулярного выражения. На текущий момент поддерживается стандарт POSIX, используемый командой &grep;, и расширенный стандарт POSIX, используемый в команде &egrep;. </para>

<para
>При вводе регулярного выражения, вам сразу будет сообщаться об ошибках в нём. Введением текста в <guilabel
>Строка для проверки</guilabel
>, вы можете проверить, подходит ли текст введённому вами выражению. В частности, если регулярно выражение содержит группы, такие как <literal
>([a-z])</literal
>, содержание подходящих подгрупп будет отображено в списке. </para>
</listitem>

<!--
<listitem>
<formalpara>
<title
>The <command
>konsole</command
> Plugin</title>
<indexterm zone="plugin-tools"
><primary
><command
>konsole</command
></primary
></indexterm>
<indexterm zone="plugin-tools"
><primary
>terminal</primary
><secondary
>embedded</secondary
></indexterm>
<para
></para>
</formalpara>
</listitem>
-->

</itemizedlist>

</appendix
> <!-- plugin-tools -->

<!-- ====================================================================== -->
