# Ferramentas de Edição

## Pedaços de Código

### Funcionalidades (introdução preliminar)

- O SnippetPart adiciona uma janela de ferramentas que fica acoplada por omissão à direita

- A adição, edição e remoção de excertos de código está disponível através de um menu

- Se fizer duplo-click sobre um excerto, introduzi-lo-á na área activa, na posição actual do cursor

- As dicas mostram o conteúdo de um excerto

- Os excertos são guardados na área pessoal dos utilizadores, como tal, cada utilizador poderá fazer os seus próprios excertos

- Os excertos de código poderão conter variáveis do estilo $`NOME_VARIAVEL`$. Ao usar o excerto, o utilizador deverá preencher o valor de substituição das variáveis

## Mapeamento do Teclado

A seguir, serão listadas as combinações de teclas por omissão do editor predefinido. Poderá configurá-las como desejar (como?)

Esquerda | Move-se um carácter para a esquerda
Direita | Move-se um carácter para a direita
&Ctrl; Esquerda | Move-se uma palavra para a esquerda
&Ctrl; Direita | Move-se uma palavra para a direita
Cima | Move-se uma linha para cima
Baixo | Move-se uma linha para baixo
Page Up | Move-se uma página para cima
Page Down | Move-se uma página para baixo
&Ctrl; Page Down | Move-se para o início do ficheiro
&Ctrl; Page Down | Move-se para o fim do ficheiro
Home | Move-se para o início da linha
End | Move-se para o fim da linha

Para todas as teclas acima, pode-se usar adicionalmente a tecla &Shift;, para marcar a partir da posição actual do cursor até à posição onde se for parar.

Backspace | Apaga um carácter à esquerda
Delete | Apaga o carácter por baixo do cursor
&Ctrl; C | Copia o texto seleccionado para a área de transferência
&Ctrl; V | Cola o texto seleccionado da área de transferência
&Ctrl; X | Apaga o texto seleccionado e coloca-o na área de transferência
&Ctrl; Z | Desfazer
&Shift;&Ctrl; Z | Refazer

## O Sistema de Comunicação de Problemas

(... ainda não escrito ...)

## Procurar e Descobrir

### Procurar por Texto

&Ctrl;F- Procurar &Ctrl;R- Substituir

### ISearch

A forma convencional de procurar com a opção Editar Procurar necessita que você indique o termo a procurar por completo, antes de iniciar a pesquisa. A maior parte do tempo, é muito mais fácil procurar incrementalmente. Se carregar no campo de texto chamado ISearch da barra de ferramentas, a pesquisa é efectuada à medida que vai escrevendo. Irá concluir que o termo desejado poderá ser encontrado logo ao fim de escrever 3 ou 4 letras.

### Grep

Ambos os mecanismos de procura descritos acima estão restringidos a procurar dento de um ficheiro de código. Existe uma outra ferramenta adicional que lhe permite procurar num (talvez grande) conjunto de ficheiros, através da opção do menu Procurar nos Ficheiros... do menu Editar. É, basicamente, uma interface para o programa &grep;(1).

Na janela, poderá indicar os ficheiros onde deseja procurar. Existe um conjunto de padrões especiais disponíveis que poderá usar numa lista. Desta forma, poderá restringir facilmente o mecanismo de procura aos ficheiros de inclusão, por exemplo. Para além disso, existe uma pasta que poderá indicar onde começar a procura. Se assinalar a opção Recursivo, a pesquisa irá percorrer todas as pastas que estejam abaixo desta na hierarquia.

O termo a procurar é, de um modo geral, uma expressão regular que segue a sintaxe do POSIX. Por exemplo, poderá usar o termo `"\<K.*"` se desejar procurar todas as palavras que comecem pela letra K. Os seguintes caracteres são interpretados de uma forma especial:

`.` | Corresponde a qualquer carácter
`^` | Corresponde ao início de uma linha
`$` | Corresponde ao fim de uma linha
`\<` | Corresponde ao início de uma palavra
`\>` | Corresponde ao fim de uma palavra
`?` | O item antecedente corresponde menos que uma vez
`*` | O item antecedente corresponde zero ou mais vezes
`+` | O item antecedente corresponde uma ou mais vezes
`{n}` | O item antecedente corresponde exactamente 'n' vezes
`{n,}` | O item antecedente corresponde 'n' ou mais vezes
`{,n}` | O item antecedente corresponde menos de 'n' vezes
`{n,m}` | O item antecedente corresponde pelo menos `n` mas menos que `m` vezes

As referências anteriores às expressões entre parêntesis estão também disponíveis, através da notação `\n`.

Para os programadores em C++, como bónus especial, existem alguns modelos de procura disponíveis para procurar padrões típicos. Estes permitem-lhe procurar, por exemplo, todas as chamadas a funções pertencentes a um dado objecto.

Logo que tenha iniciado a procura, após carregar no botão Procurar, esta será efectuada por um processo externo e assíncrono. Todos os itens encontrados irão aparecer na janela chamada Grep. Poderá então saltar para os itens encontrados, carregando neles. Lembre-se que o 'grep' procura os ficheiros da forma que eles estão guardados no sistema de ficheiros. Se tiver versões modificadas dos mesmos no seu editor, poderá ter algumas falhas de correspondência no número da linha ou mesmo obter alguns itens encontrados inválidos. Poderá evitar isto se gravar todos os ficheiros previamente.

## Completação de Código

(... ainda não escrito ...)

## Criar Ficheiros e Classes Novos

(... ainda não escrito ...)

### Editar os Modelos

(... ainda não escrito ...)