# Ferramentas em 'Plugins'

O &kdevelop; contém uma grande quantidade de pequenas ferramentas que o ajudam a desempenhar certas tarefas. A maioria delas está implementada sob a forma de 'plugins'. Isto significa que, se não necessitar de um 'plugin', podê-lo-á desactivar.

Isto também significa que, se está à procura de uma determinada funcionalidade que deveria lá estar e não está, então é porque provavelmente está implementada num 'plugin' e este está desactivado. Por exemplo, no menu de ficheiros, existe um menu de Abertura Rápida, se estiver activo na janela de Projecto - Opções do Projecto.

Tecnicamente, os 'plugins' são baseados na classe KDevPlugin que está definida em 'lib/interfaces/kdevplugin.h'. O seguinte é retirado de um comentário de lá (devidamente traduzida).

O KDevPlugin é a classe de base para todos os 'plugins' do KDevelop. Um 'plugin' é um componente que é carregado na plataforma do KDevelop no início ou a pedido. Um 'plugin' tem um âmbito que poderá ser:

- Nuclear

- Global

- Projecto

Os 'plugins' nucleares são 'plugins' globais que oferecem alguma funcionalidade "nuclear" e, como tal, não são seleccionados pelo utilizador, nas páginas de configuração dos 'plugins'.

Os 'plugins' globais são 'plugins' que só necessitam da plataforma para serem carregados e não operam na interface KDevProject e/ou não usam a informação ao nível do projecto. Por exemplo, o 'plugin' 'uimode' permite a um programador escolher a interface do utilizador que deseja usar.

Os 'plugins' do projecto necessitam de ter um projecto carregado e são normalmente carregados/terminados em conjunto com o projecto. Se um 'plugin' funcionar com informação relacionada com o projecto, então é um 'plugin' de projecto. O Gestor do Automake, por exemplo, só necessita de estar activo quando estiver carregado um projecto baseado no Automake.

Como foi dito acima, os 'plugins' do núcleo não poderão ser desactivados. Os 'plugins' globais podem ser activados/desactivados em Configuração Configurar o KDevelop... em 'Plugins'. Os 'plugins' do projecto podem ser activados/desactivados na opção Projecto Opções do Projecto... em 'Plugins'. Os 'plugins' activos poderão ter vários efeitos no KDevelop. Dependendo da sua função, poderão adicionar menus extra, opções extra, botões extra na barra de ferramentas, etc.

Os 'plugins' que estão desactivados não enchem os seus menus e não são carregados na memória.

A lista de 'plugins' que se segue é gerada por um pequeno programa ('listplugins.sh'), criado por Volker Paul. Todos os 'plugins' têm um ficheiro .desktop cujo nome e comentários estão escritos. Se, no que se segue, este comentários não forem muito úteis, foi porque os autores dos 'plugins' os fizeram assim.

Os 'plugins' estão organizados por âmbito (Nuclear, Global, Projecto).

Âmbito: Nuclear

- ## Assistente de Aplicações

  Assistente de Aplicações

- ## Visualizador de Diferenças

  Visualizador de Diferenças

- ## Criação de Ficheiros

  Criação de Ficheiros

- ## Ecrã Completo

  Ecrã Completo

- ## Dica do Dia

  Dica do Dia

- ## Selecção da Interface do Utilizador

  Oferece uma janela para a selecção do modo de interface do utilizador.

- ## Gestor de SCV

  Gestor do Sistema de Controlo de Versões

Âmbito: Global

- ## Expansão de Abreviaturas

  Oferece o suporte para as abreviaturas personalizadas - as palavras pequenas que se expandem em estruturas de código comuns necessárias.

- ## Documentação

  O 'plugin' de Documentação oferece a navegação e pesquisa na documentação local e 'online', com o suporte para vários sistemas de documentação.

- ## Lista de Ficheiros

  Oferece uma lista com todos os ficheiros abertos. (É útil quando a barra de páginas não é suficientemente larga.)

- ## Selector de Ficheiros

  Um utilitário de navegação de ficheiros transparente na rede e poderoso.

- ## Filtragem e Inserção da Linha de Comandos

  Oferece uma forma de manipular o texto do editor com base em ferramentas da linha de comandos. Aparece no menu Ferramentas.

- ## Interface do Grep

  Integra o "find|grep" no KDevelop - permite uma procura rápida em vários ficheiros, com padrões e expressões regulares.

- ## Konsole Embebido

  Este 'plugin' dá ao KDevelop um Konsole incorporado, para poder aceder fácil e rapidamente à linha de comandos.

- ## Adição do Menu "Abrir com"

  Este 'plugin' oferece alternativas adicionais para "abrir" nos vários menus de contexto do KDevelop.

- ## Ferramenta de Exploração de Componentes

  Uma ferramenta gráfica para efectuar pesquisas do tipo do KTrader acerca dos serviços registados

- ## Teste de Expressões Regulares

  Uma ferramenta para desenhar e testar expressões regulares, usando as sintaxes de expressões regulares normais.

- ## Componente de Substituição

  Este 'plugin' é uma ferramenta interactiva de "Procurar e Substituir" ao nível do projecto. Faça a pesquisa com a correspondência por texto ou expressões regulares, e seleccione as substituições a fazer, numa antevisão, antes de a acção terminar. Logo que esteja carregada, aparece no menu Editar.

- ## Programação

  O 'plugin' de Programação oferece capacidades de programação em KScript à aplicação KDevelop

- ## Excertos de Código

  Este 'plugin' permite-lhe gravar excertos de código e adicioná-los ao seu código

- ## Estrutura do Texto

  Oferece uma vista estrutural e de navegação para os ficheiros em HTML e TEX

- ## Adição ao Menu de Ferramentas

  Este 'plugin' oferece uma forma simples para adicionar aplicações externas ao menu e às barras de Ferramentas.

- ## Interface para o Valgrind

  O Valgrind é uma ferramenta que o ajuda a detectar problemas de gestão de memória nos programas. Veja em http://developer.kde.org/~sewardj/

Âmbito: Projecto

- ## 'Plugin' de anotações

  Descrição da anotação

- ## Formatador do Código-Fonte

  Um 'plugin' para formatar o código-fonte, de acordo com um conjunto bem definido de regras. Quando for carregado, está presente no menu Ferramentas.

- ## Favoritos

  Um 'plugin' que oferece a navegação e a apresentação de favoritos de código activos, mantendo-os persistentes entre sessões.

- ## Área de Classes

  Este 'plugin' mostra uma vista gráfica sobre todas as classes do projecto, completas com os métodos e atributos, oferecendo ainda uma forma de navegar directamente pelo código.

- ## Copiar Para

  Um 'plugin' de envio de ficheiros simples. Faz uma cópia de ficheiros através de qualquer protocolo suportado pelo KIO.

- ## Interface para o CTags

  O CTags é uma ferramenta para navegar no código, com o suporte para várias línguas. Quando for carregado, oferece um menu para procurar as declarações/definições dos tipos, assim como uma janela de pesquisa. Para mais informações, vá a http://ctags.sourceforge.net/

- ## Suporte de Empacotamento Final

  Ajuda na criação de pacotes e na publicação do projecto final. Só é suportado o formato de pacotes RPM, por agora.

- ## Suporte para Doxygen

  O 'plugin' do 'doxygen' oferece uma forma de indicar e controlar a geração da documentação para um projecto, com base no conteúdo do código-fonte. Deverá ter o 'doxygen' instalado para poder usar isto. Para mais informações, vá a http://www.doxygen.org

- ## Abertura Rápida

  Oferece uma forma eficiente de procurar/abrir ficheiros, classes e métodos num projecto grande. Aparece nos menus Ficheiro e Ferramentas, quando estiver carregado.

- ## Verificação de Segurança

  Verificação da segurança do código

Até agora, foi a lista de 'plugins' gerada.

## 'Plugins' de Gestão de Projectos do &kdevelop;

antproject | Gestor de Projectos do ANT (aplicações de &Java;)
autoproject | Gestor de Projectos do Automake
customproject | Gestor de Projectos Personalizados
trollproject | Gestor de Projectos baseado no QMake

Os 'plugin' acima indicados estão de momento (Maio de 2005) vazios. Talvez o suporte para a gestão de projectos seja implementado como 'plugins' no futuro.

## 'Plugins' de Suporte de Linguagens no &kdevelop;

cppsupport | Suporte para C/C++
fortransupport | Suporte para Fortran
javasupport | Suporte para &Java;
perlsupport | Suporte para Perl
phpsupport | Suporte para PHP
pythonsupport | Suporte para Python

No que se segue, alguns dos 'plugins' serão discutidos em detalhe.

- ## O 'plugin' `abbrev`

  Este 'plugin' expande as abreviaturas em excertos de código usados com frequência. É activado ao carregar em Ctrl Espaço. Por exemplo, quando indicar `"ife"` num ficheiro de C++ no editor e carregar em CtrlEspaço, irá obter um modelo de código `if-else`, poupando assim algum texto escrito manualmente. O conjunto de abreviaturas depende da linguagem de programação do ficheiro editado. Por exemplo, para o PHP, irá estar obviamente interessado noutros modelos de código que não os do &Java;.

  O conjunto de modelos de código é configurável. Se o 'plugin' estiver activo, poderá ver os que estão disponíveis na opção Configuração Configurar o KDevelop..., em Abreviaturas.

- ## O 'plugin' `filter`

  Este oferece duas funcionalidades. Se seleccionar a opção Ferramentas Executar o comando, poderá indicar um comando da consola. O resultado deste comando é introduzido na janela de edição, quando carregar no botão Iniciar.

  Está disponível uma funcionalidade relacionada em Ferramentas Filtrar a selecção pelo comando.... Para a usar, deverá seleccionar uma área de texto no editor. Se agora indicar um comando e carregar no botão Iniciar, o comando é iniciado e a selecção é usada como dados de entrada para ele. O resultado à saída do comando é então introduzido no editor, substituindo a selecção.

  Por exemplo, se você escrever documentação, terá de fazer referência aos itens do menu. Para o fazer correctamente, p.ex., para o comando Copiar do menu Editar, terá de escrever:

      <menuchoice><guimenu>Editar</guimenu><guimenuitem>Copiar</guimenuitem></menuchoice>

  Isto é difícil, como tal gostaria de escrever apenas "Editar - Copiar" e deixar que o computador faça a formatação. Aqui está como o poderá fazer. Poderá criar um pequeno programa chamado 'mef', que poderá pôr p.ex., na pasta 'bin' da sua pasta pessoal:

      sed s/"^\(.*\) - \(.*\)\$"/"<menuchoice><guimenu>\1<\/guimenu><guimenuitem>\2<\/guimenuitem><\/menuchoice>"/

  Não se esqueça de o tornar executável, e é tudo. Agora, no código .docbook da sua documentação, poderá escrever "Editar - Copiar". Se seleccionar o texto que acabou de escrever, escolha a opção Ferramentas Filtrar a selecção pelo comando... e invoque o '~/bin/mef'. Imediatamente o "Editar - Copiar" será substituído por

      <menuchoice><guimenu>Editar</guimenu><guimenuitem>Copiar</guimenuitem></menuchoice>

- ## O 'plugin' do &doxygen;

  Este 'plugin' ajuda a usar a ferramenta de documentação de APIs &doxygen; (). Poderá seleccionar a opção Projecto Executar o Doxygen para gerar a documentação da API para o seu projecto actual, com base na configuração indicada pelo ficheiro `Doxyfile` da pasta do seu projecto.

  Para além disso, poderá configurar o &doxygen; no menu Projecto Opções do projecto.... Esta janela é bastante semelhante à ferramenta &doxywizard;.

- ## O 'Plugin' do &ctags;

  Ainda que o navegador de classes lhe dê uma análise extensiva dos símbolos e classes do seu projecto, poderá também querer usar a ferramenta 'ctags'. Em particular, este suporta bastantes mais linguagens que o navegador de classes.

  Pode activar este 'plugin' em Ferramentas CTags.... Quando a iniciar da primeira vez, o utilizador será questionado para criar uma base de dados de procura. Quando aceitar essa opção, o programa &ctags; irá iniciar e irá criar um ficheiro chamado `tags` na pasta do seu projecto. Este é um ficheiro de texto que contém todos os símbolos dos seus ficheiros de código.

  Poderá procurar na base de dados de símbolos de duas formas: quando a opção Corresponder à expressão regular estiver assinalada, o texto que introduzir será interpretado como uma expressão regular (variante POSIX) e aplicada aos símbolos existentes. Por exemplo, o texto `.*Widget` irá procurar por todos os símbolos que terminem em `Widget`. Se a opção não estiver assinalada, a pesquisa será feita à letra.

  Ao procurar, irá obter uma lista dos símbolos correspondentes, acompanhada dos números de linha em que estes são definidos. Poderá saltar para o ponto respectivo, se carregar num item da lista.

  Para algumas linguagens, o &ctags; distingue os diferentes tipos de símbolos. Por exemplo, o Python tem classes e funções. Poderá optar por procurar apenas por classes, assinalando ou desligando os tipos respectivos na janela.

  A base de dados de símbolos normalmente não é actualizada com as modificações do seu código. Por consequência, ao fim de algum tempo, os números de linha já não estarão mais correctos, e irão faltar as classes e funções novas. Como tal, deverá actualizar o ficheiro `tags` com intervalos regulares, carregando no botão Gerar de novo.

- ## O 'plugin' `astyle`

  O 'astyle' é um 'plugin' para formatar o código-fonte, de acordo com um conjunto definido de regras.

- ## O 'plugin' `regexptest`

  A programação com expressões regulares poderá ser bastante complicada. Muitas das vezes, à primeira tentativa, uma expressão irá corresponder com demasiado texto. Em particular, ao lidar com uma linguagem compilada, os tempos em que se anda às voltas a depurar uma expressão regular poderão ser desgastantes. O 'plugin' 'regexptest' permite-lhe explorar directamente as alterações numa expressão regular. É activada ao escolher a opção Ferramentas Depurar a Expressão Regular....

  No grupo da variante, poderá escolher a variante do motor de expressões regulares usada. As versões suportadas de momento são as da norma do POSIX, que é usado pelo programa &grep;, e a sintaxe extendida do POSIX, que é usada pelo programa &egrep;.

  Quando introduzir uma expressão, irá obter uma reacção imediata sobre os erros de sintaxe da mesma. Ao indicar um texto qualquer no Texto de teste, poderá ver se a expressão corresponde a este texto. Em particular, se a sua expressão incluir grupos, como o `([a-z])`, o conteúdos dos sub-grupos será apresentado numa lista.