<chapter id="advanced-editing-tools"> <chapterinfo> <authorgroup> <author >&Anders.Lund; &Anders.Lund.mail;</author> <author >&Dominik.Haumann; &Dominik.Haumann.mail;</author> <othercredit role="translator" ><firstname >Lisiane</firstname ><surname >Sztoltz</surname ><affiliation ><address ><email >lisiane@conectiva.com.br</email ></address ></affiliation ><contrib >Tradução</contrib ></othercredit > </authorgroup> </chapterinfo> <title >Ferramentas Avançadas de Edição</title> <sect1 id="advanced-editing-tools-comment"> <title >Comentar/Descomentar</title> <para >Os comandos Comentar e Descomentar, disponíveis no menu <guimenu >Ferramentas</guimenu > permitem-lhe adicionar ou remover marcações de comentários à seleção ou à linha atual, se não existir texto selecionado, se os comentários são suportados pelo formato do texto que você está editando.</para> <para >As regras de como o comentário é feito são feitas nas definições de sintaxe; assim, se o realce de sintaxe não é usado, as ações de comentar/descomentar não são possíveis. </para> <para >Alguns formatos definem marcas de comentários para linhas únicas, outros suportam marcas de comentários para várias linhas e alguns suportam ambas. Se não estiverem disponíveis os comentários para várias linhas, o ato de comentar uma seleção que não inclui por completo a sua última linha não é possível.</para> <para >Se um marcador de linha única estiver disponível, é preferível comentar linhas simples onde for aplicável, pois isto ajuda a evitar problemas com comentários aninhados.</para> <para >Ao remover marcadores de comentários, textos sem comentários devem ser selecionados; ao remover marcadores de comentários de múltiplas linhas de uma seleção, qualquer espaço em branco fora do marcador é ignorado.</para> <para ><indexterm ><primary >comentar</primary ></indexterm > Para colocar marcações de comentários, use a opção do menu <menuchoice ><guimenu >Ferramentas</guimenu ><guimenuitem >Comentar</guimenuitem ></menuchoice > ou o atalho de teclado relacionado, que por padrão é <keycombo action="simul" >&Ctrl;<keycap >D</keycap ></keycombo >.</para> <para ><indexterm ><primary >descomentar</primary ></indexterm > Para remover marcações de comentários, use a opção do menu <menuchoice ><guimenu >Ferramentas</guimenu ><guimenuitem >Descomentar</guimenuitem ></menuchoice > ou o atalho de teclado relacionado, que por padrão é o <keycombo action="simul" >&Ctrl;&Shift;<keycap >D</keycap ></keycombo >.</para> </sect1> <sect1 id="advanced-editing-tools-commandline"> <title >A Linha de Comando do Componente de Edição</title> <para >O componente de edição do Kate possui uma linha de comando interna, que lhe permite efetuar várias ações a partir de uma interface mínima. A linha de comando é um campo de texto no fundo da área de edição onde, para mostrá-la, você poderá selecionar a opção <menuchoice ><guimenu >Ver</guimenu ><guimenuitem >Alternar para Linha de Comando</guimenuitem ></menuchoice > ou usar o atalho (que é, por padrão, o <keycombo action="simul" ><keycap >F7</keycap ></keycombo >). O editor oferece um conjunto de comandos, tal como está documentado abaixo, sendo oferecidos mais comandos através de 'plugins'.</para> <para >Para executar um comando, pressione a tecla Return. A linha de comando irá indicar se foi bem sucedida e, provavelmente, irá mostrar uma mensagem. Se você inseriu na linha de comando pressionando <keycap >F7</keycap >, ele ocultar-se-á automaticamente, ao fim de alguns segundos. Para limpar a mensagem e inserir um comando novo, pressione <keycap >F7</keycap > de novo.</para> <para >A linha de comando possui um sistema de ajuda embutido, podendo inserir o comando <command >help</command > para iniciá-lo. Para ver uma lista com todos os comandos disponíveis, invoque o comando <command >help list</command >; para ver a ajuda sobre um determinado comando, faça <command >help <replaceable >comando</replaceable ></command >.</para> <para >A linha de comando possui um histórico embutido, como tal, o usuário poderá reutilizar os comandos já digitados. Para navegar no histórico, use as teclas <keycap >Cima</keycap > e <keycap >Baixo</keycap >. Ao mostrar os comandos do histórico, a parte do argumento do comando será selecionada, o que lhe permite sobrepor facilmente os argumentos.</para> <sect2 id="advanced-editing-tools-commandline-commands"> <title >Comandos Padrão da Linha de Comando</title> <sect3 id="advanced-editing-tools-commandline-commands-configure"> <title >Comandos para Configurar o Editor</title> <para >Estes comandos são oferecidos pelo componente do editor e permitem-lhe configurar apenas o documento e a janela ativos. Isto poderá ser útil se quiser usar uma configuração diferente da pré-definida como, por exemplo, na indentação. </para> <variablelist> <title >Tipos de argumento</title> <varlistentry> <term >BOOLEANO</term> <listitem ><para >Isto é usado com os comandos que ativam ou desativam certas coisa. Os valores válidos são o <userinput >on</userinput >, <userinput >off</userinput >, <userinput >true</userinput >, <userinput >false</userinput >, <userinput >1</userinput > ou <userinput >0</userinput ></para ></listitem> </varlistentry> <varlistentry> <term >INTEIRO</term> <listitem ><para >Um número inteiro</para ></listitem> </varlistentry> <varlistentry> <term >TEXTO</term> <listitem ><para >Um texto</para ></listitem> </varlistentry> </variablelist> <variablelist> <varlistentry> <term ><cmdsynopsis ><command >set-tab-width</command ><arg >INTEIRO largura</arg ></cmdsynopsis ></term> <listitem ><para >Configura a largura da tabulação como sendo <userinput >largura</userinput ></para ></listitem> </varlistentry> <varlistentry> <term ><cmdsynopsis ><command >set-indent-width</command ><arg >INTEIRO largura</arg ></cmdsynopsis ></term> <listitem ><para >Configura a largura da indentação como <userinput >largura</userinput >. Só é usado se o usuário indentar com espaços.</para ></listitem> </varlistentry> <varlistentry> <term ><cmdsynopsis ><command >set-word-wrap-column</command ><arg >INTEIRO largura</arg ></cmdsynopsis ></term> <listitem ><para >Configura a largura da linha para uma quebra como tendo <userinput >largura</userinput > colunas. Isto é usado se você tiver o seu texto sendo quebrado automaticamente.</para ></listitem> </varlistentry> <varlistentry> <term ><cmdsynopsis ><command >set-icon-border</command ><arg >BOOLEANO ativar</arg > </cmdsynopsis ></term> <listitem ><para >Configura a visibilidade da borda dos ícones.</para ></listitem> </varlistentry> <varlistentry> <term ><cmdsynopsis ><command >set-folding-markers</command ><arg >BOOLEANO ativar</arg ></cmdsynopsis ></term> <listitem ><para >Configura a visibilidade da área de marcadores de dobra do código.</para ></listitem> </varlistentry> <varlistentry> <term ><cmdsynopsis ><command >set-line-numbers</command ><arg >BOOLEANO ativar</arg ></cmdsynopsis ></term> <listitem ><para >Configura a visibilidade da área de números de linha.</para ></listitem> </varlistentry> <varlistentry> <term ><cmdsynopsis ><command >set-replace-tabs</command ><arg >BOOLEANO ativar</arg ></cmdsynopsis ></term> <listitem ><para >Se estiver ativo, as tabulações são substituídas por espaços, à medida que você vai digitando. </para ></listitem> </varlistentry> <varlistentry> <term ><cmdsynopsis ><command >set-remove-trailing-space</command ><arg >BOOLEANO ativar</arg ></cmdsynopsis ></term> <listitem ><para >Se estiver ativo, os espaços finais serão removidos quando o cursor abandonar uma determinada linha.</para ></listitem> </varlistentry> <varlistentry> <term ><cmdsynopsis ><command >set-show-tabs</command ><arg >BOOLEANO ativar</arg ></cmdsynopsis ></term> <listitem ><para >Se estiver ativo, os caracteres de tabulação e espaços estarão visíveis através de um pequeno ponto.</para ></listitem> </varlistentry> <varlistentry> <term ><cmdsynopsis ><command >set-indent-spaces</command ><arg >BOOLEANO ativar</arg ></cmdsynopsis ></term> <listitem ><para >Se estiver ativo, o editor irá indentar com <option >largura-indentação</option > espaços por cada nível de indentação, em vez de usar o caracter TAB.</para ></listitem> </varlistentry> <varlistentry> <term ><cmdsynopsis ><command >set-mixed-indent</command ><arg >BOOLEANO ativar</arg ></cmdsynopsis ></term> <listitem ><para >Se estiver ativo, o &kate; irá usar uma mistura de TABs e espaços para a indentação. Cada nível de indentação irá ter um tamanho de <option >largura-indentação</option >, enquanto os restantes níveis de indentação serão otimizados para usar tantos caracteres TAB quantos possíveis.</para> <para >Quando for executado, este comando irá ativar a indentação com espaços e, se a largura de indentação não estiver definida, corresponderá a metade da <option >largura-tabulação</option > do documento, no momento da execução.</para ></listitem> </varlistentry> <varlistentry> <term ><cmdsynopsis ><command >set-word-wrap</command ><arg >BOOLEANO ativar</arg ></cmdsynopsis ></term> <listitem ><para >Ativa a quebra de linha dinâmica, de acordo com o parâmetro <userinput >ativar</userinput ></para ></listitem> </varlistentry> <varlistentry> <term ><cmdsynopsis ><command >set-replace-tabs-save</command ><arg >BOOLEANO ativar</arg ></cmdsynopsis ></term> <listitem ><para >Quando estiver ativo, as tabulações serão substituídas por espaços em branco, sempre que o documento for salvo.</para ></listitem> </varlistentry> <varlistentry> <term ><cmdsynopsis ><command >set-remove-trailing-space-save</command ><arg >BOOLEANO ativar</arg ></cmdsynopsis ></term> <listitem ><para >Quando estiver ativo, os espaços finais serão removidos de cada linha, sempre que o documento for salvo.</para ></listitem> </varlistentry> <varlistentry> <term ><cmdsynopsis ><command >set-indent-mode</command ><arg >nome</arg ></cmdsynopsis ></term> <listitem ><para >Configura o modo de indentação automática como <userinput >nome</userinput >. Se o <userinput >nome</userinput > não for conhecido, o modo é configurado como 'none' (nenhum). Os modos válidos são o 'cstyle', 'csands', 'xml', 'python', 'varindent' e 'none'.</para ></listitem> </varlistentry> <varlistentry> <term ><cmdsynopsis ><command >set-highlight</command ><arg >realce</arg ></cmdsynopsis ></term> <listitem ><para >Configura o sistema de realce de sintaxe para o documento. O argumento deverá ser um nome de realce válido, como pode ser visto no menu <menuchoice ><guimenu >Ferramentas</guimenu ><guisubmenu >Realce</guisubmenu ></menuchoice >. Este comando oferece uma lista de completação automática para o seu argumento.</para ></listitem> </varlistentry> </variablelist> </sect3> <sect3 id="advanced-editing-tools-commandline-commands-edit"> <title >Comandos de edição</title> <para >Estes comandos modificam o documento atual.</para> <variablelist> <varlistentry> <term ><cmdsynopsis ><command >indent</command ></cmdsynopsis ></term> <listitem ><para >Indenta as linhas selecionadas ou a linha atual.</para ></listitem> </varlistentry> <varlistentry> <term ><cmdsynopsis ><command >unindent</command ></cmdsynopsis ></term> <listitem ><para >Remove um nível de indentação das linhas selecionadas ou da linha atual.</para ></listitem> </varlistentry> <varlistentry> <term ><cmdsynopsis ><command >cleanindent</command ></cmdsynopsis ></term> <listitem ><para >Limpa a indentação das linhas selecionadas ou da linha atual, de acordo com a configuração de indentação no documento. </para ></listitem> </varlistentry> <varlistentry> <term ><cmdsynopsis ><command >comment</command ></cmdsynopsis ></term> <listitem ><para >Insere marcações de comentários para fazer da seleção, linhas selecionadas ou da linha atual um comentário, de acordo com o formato de texto definido pela definição do realce de sintaxe para o documento.</para ></listitem> </varlistentry> <varlistentry> <term ><cmdsynopsis ><command >uncomment</command ></cmdsynopsis ></term> <listitem ><para >Remove os marcadores de comentários da seleção, linhas selecionadas ou da linha atual, de acordo com o formato de texto definido pela definição do realce de sintaxe do documento.</para ></listitem> </varlistentry> <varlistentry> <term ><cmdsynopsis ><command >kill-line</command ></cmdsynopsis ></term> <listitem ><para >Remove a linha atual.</para ></listitem> </varlistentry> <varlistentry> <term ><cmdsynopsis ><command >replace</command ><arg >padrão</arg ><arg >substituição</arg ></cmdsynopsis ></term> <listitem ><para >Substitui o texto correspondente ao <userinput >padrão</userinput > por <userinput >substituição</userinput >. Se você quiser incluir espaços em branco no <userinput >padrão</userinput >, deverá colocar tanto o <userinput >padrão</userinput > como a <userinput >substituição</userinput > entre aspas simples ou duplas. Se os argumentos não estiverem entre estes caracteres, a primeira palavra é usada como <userinput >padrão</userinput > e o resto como a <userinput >substituição</userinput >. Se a <userinput >substituição</userinput > estiver em branco, cada ocorrência do <userinput >padrão</userinput > será removida.</para> <para >Você poderá configurar opções para modificar a procura, adicionando dois pontos (:), seguidos de uma ou mais letras, onde cada uma representa uma configuração, o que corresponderá ao formato <userinput >replace:opções padrão substituição</userinput >. As opções disponíveis são: <variablelist> <varlistentry> <term ><userinput >b</userinput ></term> <listitem ><para >Procura para trás.</para ></listitem> </varlistentry> <varlistentry> <term ><userinput >c</userinput ></term> <listitem ><para >Procura a partir da posição do cursor.</para ></listitem> </varlistentry> <varlistentry> <term ><userinput >e</userinput ></term> <listitem ><para >Procura apenas na área selecionada.</para ></listitem> </varlistentry> <varlistentry> <term ><userinput >r</userinput ></term> <listitem ><para >Faz uma pesquisa por uma determinada expressão regular. Se estiver ativo, você poderá usar o <userinput >\N</userinput >, onde o N é um número que representa as capturas no texto de substituição.</para ></listitem> </varlistentry> <varlistentry> <term ><userinput >s</userinput ></term> <listitem ><para >Faz uma pesquisa com distinção entre maiúsculas e minúsculas.</para ></listitem> </varlistentry> <varlistentry> <term ><userinput >p</userinput ></term> <listitem ><para >Pede permissão para substituir a próxima ocorrência.</para ></listitem> </varlistentry> <varlistentry> <term ><userinput >w</userinput ></term> <listitem ><para >Faz uma correspondência apenas com palavras inteiras.</para ></listitem> </varlistentry> </variablelist> </para> </listitem> </varlistentry> <varlistentry> <term ><cmdsynopsis ><command >date</command ><arg >formato</arg ></cmdsynopsis ></term> <listitem ><para >Insere um texto de data/hora, tal como está definido pelo <userinput >formato</userinput > indicado, ou com o formato <quote >aaaa-MM-dd hh:mm:ss</quote >, se não for indicada qualquer formatação. As traduções a seguir são feitas quando for interpretado o <userinput >formato</userinput >: <informaltable > <tgroup cols="2" > <tbody> <row ><entry ><literal >d</literal ></entry ><entry >O dia, como um número sem um zero inicial (1-31).</entry ></row> <row ><entry ><literal >dd</literal ></entry ><entry >O dia, como um número com um zero inicial (01-31).</entry ></row> <row ><entry ><literal >ddd</literal ></entry ><entry >O nome do dia abreviado, no formato regional (p.ex. 'Seg'..'Dom').</entry ></row> <row ><entry ><literal >dddd</literal ></entry ><entry >O nome do dia completo, no formato regional (p.ex. 'Segunda'..'Domingo').</entry ></row> <row ><entry ><literal >M</literal ></entry ><entry >O mês, como um número sem um zero inicial (1-12).</entry ></row> <row ><entry ><literal >MM</literal ></entry ><entry >O mês, como um número com um zero inicial (01-12).</entry ></row> <row ><entry ><literal >MMM</literal ></entry ><entry >O nome do mês abreviado, no formato regional (p.ex. 'Jan'..'Dez').</entry ></row> <row ><entry ><literal >aa</literal ></entry ><entry >O ano, como um número de dois algarismos (00-99).</entry ></row> <row ><entry ><literal >aaaa</literal ></entry ><entry >O ano, como um número de quatro algarismos (1752-8000).</entry ></row> <row ><entry ><literal >h</literal ></entry ><entry >As horas sem um zero inicial (0..23 ou 1..12 no caso do formato AM/PM).</entry ></row> <row ><entry ><literal >hh</literal ></entry ><entry >As horas com um zero inicial (00..23 ou 01..12 no caso do formato AM/PM).</entry ></row> <row ><entry ><literal >m</literal ></entry ><entry >Os minutos sem um zero inicial (0..59).</entry ></row> <row ><entry ><literal >mm</literal ></entry ><entry >Os minutos com um zero inicial (00..59).</entry ></row> <row ><entry ><literal >s</literal ></entry ><entry >Os segundos sem um zero inicial (0..59).</entry ></row> <row ><entry ><literal >ss</literal ></entry ><entry >Os minutos com um zero inicial (00..59).</entry ></row> <row ><entry ><literal >z</literal ></entry ><entry >Os milisegundos sem um zero inicial (0..999).</entry ></row> <row ><entry ><literal >zzz</literal ></entry ><entry >Os milisegundos com zeros iniciais (000..999).</entry ></row> <row ><entry ><literal >AP</literal ></entry ><entry >Usar o formato de horas AM/PM. O AP será substituído por "AM" ou por "PM".</entry ></row> <row ><entry ><literal >ap</literal ></entry ><entry >Usar o formato de horas am/pm. O ap será substituído por "am" ou por "pm".</entry ></row> </tbody> </tgroup> </informaltable> </para ></listitem> </varlistentry> <varlistentry> <term ><cmdsynopsis ><command >char</command ><arg >identificador</arg ></cmdsynopsis ></term> <listitem> <para >Este comando permite que você insira caracteres literais através de suas identificações numéricas, em decimal, octal ou hexadecimal. Para usá-lo, abra o diálogo de Edição de Comando e digite <userinput >char: [número]</userinput > na caixa de entrada e clique em <guibutton >OK</guibutton >.</para> <example> <title >exemplos do comando <command >char</command ></title> <para >Entrada: <userinput >char:234</userinput ></para> <para >Resultado: <computeroutput >ê</computeroutput ></para> <para >Entrada: <userinput >char:0x1234</userinput ></para> <para >Resultado: <computeroutput >ሴ</computeroutput ></para> </example> </listitem> </varlistentry> <varlistentry> <term> <indexterm ><primary >substituir no estilo sed</primary> <secondary >procurar no estilo sed</secondary ></indexterm> <command >s///[ig]</command > <command >%s///[ig]</command ></term> <listitem> <para >Este comando faz um sed como operação de procura/substituição na linha atual, ou em um arquivo inteiro (<command >%s///</command >).</para> <para >Em resumo, é procurado o texto que combine com o <emphasis >padrão de busca </emphasis >, a expressão regular entre a primeira e a segunda barra, e quando é encontrado, a parte que combina com o texto é substituída pela expressão entre a metade e a última parte da string. Os parênteses no padrão de busca criam <emphasis >referências anteriores</emphasis >, isto é, o comando lembra qual parte procurada combinou no parênteses; estas strings podem ser reutilizadas no padrão de substituição, referidas como <userinput >\1</userinput > para o primeiro conjunto de parênteses, <userinput >\2</userinput > para o segundo e assim por diante.</para> <para >Para procurar por um caractere literal <literal >(</literal > ou <literal >)</literal >, você precisa usar o caractere de <emphasis >escape</emphasis >, que é o caractere de barra invertida: <userinput >\(\)</userinput ></para> <para >Se você puser um <userinput >i</userinput > no fim da expressão, a correspondência não fará distinção entre maiúsculas ou minúsculas. Se, por outro lado, puser um <userinput >g</userinput > no fim, todas as ocorrências do padrão serão substituídas, caso contrário, só será substituída a primeira ocorrência.</para> <example> <title >Substituindo texto na linha atual</title> <para >Seu compilador parou, dizendo a você que a classe <classname > minhaClasse</classname >, mencionada na linha 3902 do seu arquivo fonte, não está definida.</para> <para >"Droga!" você pensa, é claro que é <classname >MinhaClasse</classname >. Você vai para a linha 3902, e em vez de tentar encontrar a palavra no texto, você lança o Diálogo de Edição de Comando, digita <userinput >s/minhaclasse/MinhaClasse/i</userinput >, clica no botão <guibutton >OK</guibutton >, salva o arquivo e compila – com sucesso, sem erros.</para> </example> <example> <title >Substituindo texto no arquivo inteiro</title> <para >Imagine que você tem um arquivo, onde está mencionado a string <quote >Senhorita Jensen</quote > várias vezes, quando alguém vem e lhe diz que ela casou com o <quote >Senhor Jones</quote >. Você quer, é claro, substituir toda ocorrência de <quote >Senhorita Jensen</quote > por <quote >Senhora Jones</quote >.</para> <para >Entre na linha de comando e digite o comando <userinput >%s/Srª Silva/Srª Braga/</userinput >, pressionando RETURN para terminar.</para> </example> <example> <title >Um Exemplo Mais Avançado</title> <para >Este exemplo tira partido das <emphasis >referências anteriores</emphasis > assim como das <emphasis >classes de palavras</emphasis > (se você não souber o que isso é, baseie-se na documentação referida abaixo).</para> <para >Suponha que você possui a seguinte linha: <programlisting >void MinhaClasse::DoStringOps( String &foo, String &bar String *p, int &a, int &b )</programlisting> </para> <para >Agora, você pode perceber que este não é um código bom, e decidir que deseja usar a palavra-chave <constant >const</constant > para todos os argumentos <quote >address of</quote >, aqueles caracterizados pelo operador & em frente ao nome do argumento. Você poderia também simplificar o espaço em branco, pois assim existiria somente um caractere de espaço em branco entre cada palavra.</para> <para >Abra o Diálogo de Edição de Comando, e digite <userinput >s/\s+(\w+)\s+(&)/ const \1 \2/g</userinput > e clique no botão <guibutton >OK</guibutton >. O caractere <userinput >g</userinput > no final da expressão faz com que a expressão regular recompile cada combinação, para recuperar as <emphasis >referências de volta</emphasis >.</para> <para >Saída <computeroutput >void MinhaClasse::DoStringOps( const String &foo, const String &bar String *p, const int &a, const int &b )</computeroutput ></para> <para >Missão completa! Agora, o que aconteceu? Bem, procuramos por espaços em branco (<literal >\s+</literal >) seguidos por um ou mais caracteres alfabéticos(<literal >\w+</literal >) seguidos por mais espaços em branco (<literal >\s+</literal >) seguidos por um E comercial, e no processo é salvo o pedaço alfabético e o E comercial para reutilização na operação de substituição. Quando substituímos a parte relacionada da nossa linha, com um espaço em branco, seguido por <quote >const</quote >, seguido por um espaço em branco, seguido por nosso pedaço alfabético (<literal >\1</literal >) seguido por um espaço em branco, em por fim, seguido por nosso E comercial salvo (<literal >\2</literal >)</para> <para >Em alguns casos, a parte alfabética foi <quote >String</quote >, em alguns <quote >int</quote >, assim, usar a classe de caractere <literal >\w</literal > e o quantificador <literal >+</literal > provê uma vantagem considerável.</para> </example> </listitem> </varlistentry> </variablelist> </sect3> <sect3 id="advanced-editing-tools-commandline-commands-navigation"> <title >Comandos de navegação</title> <variablelist> <varlistentry> <term ><cmdsynopsis ><command >goto</command ><arg >INT linha</arg ></cmdsynopsis ></term> <listitem ><para >Este comando vai para a linha indicada.</para ></listitem> </varlistentry> <varlistentry> <term ><cmdsynopsis ><command >find</command ><arg >padrão</arg ></cmdsynopsis ></term> <listitem ><para >Este comando vai para a primeira ocorrência do <userinput >padrão</userinput >, de acordo com a configuração. As ocorrências a seguir poderão ser encontradas com a opção <menuchoice ><guimenu >Editar</guimenu ><guimenuitem >Procurar Próximo</guimenuitem ></menuchoice > (o atalho por padrão é o <keycap >F3</keycap >).</para> <para >O comando de procura poderá ser configurado adicionando dois-pontos, seguidos de uma ou mais opções, sendo o formato <userinput >find:opções padrão</userinput >. São suportadas as seguintes opções: <variablelist> <varlistentry> <term ><userinput >b</userinput ></term> <listitem ><para >Procura para trás.</para ></listitem> </varlistentry> <varlistentry> <term ><userinput >c</userinput ></term> <listitem ><para >Procura a partir da posição do cursor.</para ></listitem> </varlistentry> <varlistentry> <term ><userinput >e</userinput ></term> <listitem ><para >Procura apenas na área selecionada.</para ></listitem> </varlistentry> <varlistentry> <term ><userinput >r</userinput ></term> <listitem ><para >Faz uma pesquisa por uma determinada expressão regular. Se estiver ativo, você poderá usar o <userinput >\N</userinput >, onde o N é um número que representa as capturas no texto de substituição.</para ></listitem> </varlistentry> <varlistentry> <term ><userinput >s</userinput ></term> <listitem ><para >Faz uma pesquisa com distinção entre maiúsculas e minúsculas.</para ></listitem> </varlistentry> <varlistentry> <term ><userinput >w</userinput ></term> <listitem ><para >Faz uma correspondência apenas com palavras inteiras.</para ></listitem> </varlistentry> </variablelist> </para> </listitem> </varlistentry> <varlistentry> <term ><cmdsynopsis ><command >ifind</command ><arg >padrão</arg ></cmdsynopsis ></term> <listitem ><para >Este comando oferece uma procura <quote >à-medida-que-digita</quote >. Você poderá configurar o comportamento da procura adicionando dois-pontos (:), seguidos de uma ou mais opções, como se segue: <userinput >ifind:opções padrão</userinput >. As opções permitidas são <variablelist> <varlistentry> <term ><userinput >b</userinput ></term> <listitem ><para >Procura para trás.</para ></listitem> </varlistentry> <varlistentry> <term ><userinput >r</userinput ></term> <listitem ><para >Faz uma procura por uma expressão regular.</para ></listitem> </varlistentry> <varlistentry> <term ><userinput >s</userinput ></term> <listitem ><para >Faz uma pesquisa com distinção entre maiúsculas e minúsculas.</para ></listitem> </varlistentry> <varlistentry> <term ><userinput >c</userinput ></term> <listitem ><para >Procura a partir da posição do cursor.</para ></listitem> </varlistentry> </variablelist> </para ></listitem> </varlistentry> </variablelist> </sect3> </sect2> </sect1> <sect1 id="advanced-editing-tools-code-folding"> <title >Usando o Desdobramento de Código</title> <para >O desdobramento ou dobragem de código permite-lhe ocultar partes de um documento no editor, tornando mais simples analisar globalmente arquivos grandes. No &kate;, as regiões desdobráveis são calculadas com base nas regras das definições de realce de sintaxe; como tal só está disponível em alguns formatos - tipicamente em código-fonte de programas, código em XML e semelhantes. A maioria das definições de realce que suportam o desdobramento de código também lhe permitem definir manualmente regiões desdobráveis, tipicamente com as palavras-chave <userinput >BEGIN</userinput > e <userinput >END</userinput >.</para> <para >Para usar a funcionalidade de desdobramento de código, ative os marcadores com a opção <menuchoice ><guimenu >Ver</guimenu ><guimenuitem >Mostrar as Marcações de Dobragem</guimenuitem ></menuchoice >, se não estiverem já visíveis. A área de Marcações de Dobragem, no lado esquerdo da tela, mostra uma visão gráfica sobre as regiões que poderão ser recolhidas ou expandidas, com símbolos +/- para indicar a operação possível numa determinada região: um '-' significa que a região é expandida; enquanto clicar no '-' irá recolher a região, clicar no '+' irá exibí-la.</para> <para >Estão disponíveis quatro comandos para manipular o estado das regiões dobradas; para tal, veja a <link linkend="view-code-folding" >documentação do menu</link >. </para> <para >Se você não quiser usar a funcionalidade de desdobramento do código, poderá desativar a opção <guilabel >Mostrar as marcações de dobragem (se disponíveis)</guilabel > na <link linkend="config-dialog-editor-appearance" >página de Aparência da configuração do editor</link ></para> </sect1> <sect1 id="advanced-editing-tools-scripting"> <title >Programando o componente do editor com Javascript</title> <sect2 id="advanced-editing-tools-scripting-introduction"> <title >Introdução</title> <para >Desde a versão 2.5, o componente de edição do &kate; suporta a programação em ECMA Script, também conhecido como JavaScript.</para> <para >Os programas só poderão ser usados através da <link linkend="advanced-editing-tools-commandline" >linha de comando embutida</link >. Os requisitos são que o arquivo esteja colocado numa pasta em que o &kate; o consiga encontrar, em conjunto com um arquivo .desktop opcional que define as propriedades relacionadas. Algumas pastas válidas são a <filename >katepart/scripts</filename > nas pastas de dados do &kde;. Você poderá encontrar as pastas de dados executando o comando <command >tde-config <option >--path</option > <parameter >data</parameter ></command > Você terá pelo menos uma pasta do sistema e uma pessoal. Claro que os programas na pasta de dados do sistema estão disponíveis para todos os usuários do sistema, enquanto os das pastas pessoais só estão disponíveis para o respectivo usuário.</para> <note ><para >Esta funcionalidade é experimental e poderá vir a mudar durante os desenvolvimentos futuros.</para> <para >Sabemos que muitos usuários poderão ficar desapontados, uma vez que não poderão adicionar os seus programas ao menu ou atribuir atalhos a eles. Infelizmente, só no futuro provavelmente isso será possível.</para> <para >Também não é possível passar argumentos aos seus programas ainda. Tenha paciência, que isso será implementado em breve no futuro ;)</para> </note> </sect2> <sect2 id="advanced-editing-tools-scripting-reference"> <title >A API de JavaScript do Kate</title> <para >Aqui está listado o conjunto completo de funções e propriedades disponíveis nos objetos <type >document</type > e <type >view</type >. Além disso, você poderá também usar todos os objetos-padrão, como o <type >Math</type >, o <type >String</type >, o <type >Regex</type > e assim por diante.</para> <para >Quando um programa é executado, o objeto <classname >document</classname > é o documento atual, enquanto o <classname >view</classname > é a janela atual.</para> <note ><para >Os tipos dos argumentos não são, obviamente, usados no JavaScript neste momento, servindo apenas para indicar que tipo de valor as funções estão esperando.</para ></note> <variablelist id="advanced-editing-tools-scripting-global"> <title >Funções Globais</title> <varlistentry> <term ><function >debug( <parameter ><replaceable >texto</replaceable ></parameter >) [função]</function ></term> <listitem> <itemizedlist> <title >parâmetros</title> <listitem ><para ><parameter >texto</parameter > a mensagem a exibir</para> </listitem> </itemizedlist> <para >Envia o texto para o <acronym >STDERR</acronym > com o <function >kdDebug()</function >. É usada uma área de saída dedicada para o texto, o qual será antecedido de <computeroutput >Kate (KJS Scripts):</computeroutput > </para> </listitem> </varlistentry> </variablelist> <variablelist id="advanced-editing-tools-scripting-document"> <title >A API do <classname >document</classname ></title> <varlistentry> <term ><function >document.attribute( <parameter ><replaceable >linha</replaceable > </parameter >, <parameter ><replaceable >coluna</replaceable ></parameter > ); [função]</function ></term> <listitem> <itemizedlist> <title >Parâmetros</title> <listitem ><para ><parameter >uint linha</parameter > A linha da posição onde encontrar o atributo.</para ></listitem> <listitem ><para ><parameter >uint coluna</parameter > A coluna da posição onde encontrar o atributo.</para ></listitem> </itemizedlist> <para >Devolve o ID numérico do atributo para a posição do documento [<parameter >linha</parameter >,<parameter >coluna</parameter >]. O atributo representa a aparência ou estilo visual do texto, e é usado também para calcular o realce de sintaxe para uma parte específica do texto, em formatos mixtos como o HTML ou o PHP.</para> </listitem> </varlistentry> <varlistentry> <term ><function >document.canBreakAt( <parameter >Char c</parameter >, <parameter >uint atributo</parameter > ); [função]</function ></term> <listitem> <itemizedlist> <title >Parâmetros</title> <listitem ><para ><parameter >c</parameter > O caracter a testar</para ></listitem> <listitem ><para ><parameter >atributo</parameter > O atributo na posição do <parameter >c</parameter >.</para ></listitem> </itemizedlist> <para >Devolve se é permitido quebrar a linha num caracter 'c' com o atributo 'atributo'. O resultado é decidido através da pesquisa do realce que contém o atributo, para o qual os caracteres permitem a quebra de linha.</para> </listitem> </varlistentry> <varlistentry> <term ><function >document.canComment( <parameter >uint atributo_inicio</parameter >, <parameter >uint atributo_fim</parameter > ); [função]</function ></term> <listitem> <itemizedlist> <title >Parâmetros</title> <listitem ><para ><parameter >atributo_inicio</parameter > O atributo no início do intervalo para converter num comentário.</para ></listitem> <listitem ><para ><parameter >atributo_fim</parameter > O atributo no fim do intervalo para converter num comentário.</para ></listitem> </itemizedlist> <para >Devolve se o atributo_inicio e o atributo_fim pertencem ao mesmo sistema de realce de sintaxe. Se sim, é seguro. </para> <example> <title >Usando o canComment</title> <programlisting >if ( document.canComment( document.attribute(1,0), document.attribute(5,0) ) ) { // o 1,0 e o 5,0 pertencem ao mesmo sistema de realce de sintaxe } </programlisting> </example> </listitem> </varlistentry> <varlistentry> <term ><function >document.clear(); [função]</function ></term> <listitem ><para >Limpa o documento.</para ></listitem> </varlistentry> <varlistentry> <term ><function >document.commentStart( <parameter >uint atributo</parameter > ); [função]</function ></term> <listitem> <itemizedlist> <title >Parâmetros</title> <listitem ><para ><parameter >atributo</parameter > O atributo do texto para qual deseja obter o texto do 'commentStart'.</para ></listitem> </itemizedlist> <para >Devolve o texto necessário para iniciar um comentário para várias linhas com um texto e um atributo, ou um texto vazio se não forem suportados comentários em várias linhas para esse texto.</para> </listitem> </varlistentry> <varlistentry> <term ><function >document.commentMarker( <parameter >uint atributo</parameter > ); [função]</function ></term> <listitem> <itemizedlist> <title >Parâmetros</title> <listitem ><para ><parameter >atributo</parameter > O atributo do texto para o qual deseja obter o texto do 'commentMarker'</para ></listitem> </itemizedlist> <para >Devolve o texto necessário para marcar o resto da linha como um comentário com um texto e um atributo, ou um texto vazio se não forem suportados comentários numa única linha para esse texto.</para> </listitem> </varlistentry> <varlistentry> <term ><function >document.commentEnd( <parameter >uint atributo</parameter > ); [função]</function ></term> <listitem> <itemizedlist> <title >Parâmetros</title> <listitem ><para ><parameter >atributo</parameter > O atributo do texto para o qual deseja obter o texto do 'commentEnd'</para ></listitem> </itemizedlist> <para >Devolve o texto necessário para terminar um comentário para várias linhas com um texto e um atributo, ou um texto vazio se não forem suportados comentários em várias linhas para esse texto.</para> </listitem> </varlistentry> <varlistentry> <term ><function >document.editBegin(); [função]</function ></term> <listitem> <para >Inicia um grupo de edição. Todas as ações feitas até à chamada do editEnd() serão agrupadas como uma ação anulável.</para> </listitem> </varlistentry> <varlistentry> <term ><function >document.editEnd(); [função]</function ></term> <listitem> <para >Termina um grupo de edição.</para> </listitem> </varlistentry> <varlistentry> <term ><function >document.highlightMode; [propriedade:apenas leitura]</function ></term> <listitem> <para >O nome do modo de realce do documento, como por exemplo JavaScript ou C++. Se não estiver definido qualquer modo de realce de sintaxe, o valor é igual a None. Lembre-se que terá de usar o nome em Inglês, no caso de ser diferente da versão traduzida.</para> </listitem> </varlistentry> <varlistentry> <term ><function >document.indentMode; [propriedade:apenas leitura]</function ></term> <listitem> <para >O nome do modo de indentação do documento, como por exemplo <literal >normal</literal > ou <literal >cstyle</literal >. Lembre-se que, se não estiver definido qualquer modo de indentação, o valor é igual a <literal >none</literal >. </para> </listitem> </varlistentry> <varlistentry> <term ><function >document.indentWidth; [propriedade:apenas leitura]</function ></term> <listitem> <para >A largura da indentação do documento. Isto é usado se você indentar com espaços.</para> </listitem> </varlistentry> <varlistentry> <term ><function >document.insertLine( <parameter >uint linha</parameter >, <parameter >string texto</parameter > ); [função]</function ></term> <listitem> <itemizedlist> <title >Parâmetros</title> <listitem ><para ><parameter >linha</parameter > número de linha do documento</para> </listitem> <listitem ><para ><parameter >texto</parameter > o texto a inserir</para ></listitem> </itemizedlist> <para >Insere uma linha nova com o texto <parameter >texto</parameter > na linha <parameter >linha</parameter >.</para> </listitem> </varlistentry> <varlistentry> <term ><function >document.insertText( <parameter >uint linha</parameter >, <parameter >uint coluna</parameter >, <parameter >string texto</parameter > ); [função]</function ></term> <listitem> <itemizedlist> <title >Parâmetros</title> <listitem ><para ><parameter >linha</parameter > o número de linha</para ></listitem> <listitem ><para ><parameter >coluna</parameter > o número da coluna</para ></listitem> <listitem ><para ><parameter >texto</parameter > o texto a inserir</para ></listitem> </itemizedlist> <para >Insere o texto <parameter >texto</parameter > na linha <parameter >linha</parameter > e coluna <parameter >coluna</parameter >.</para> </listitem> </varlistentry> <varlistentry> <term >document.length(); [função]</term> <listitem> <para >Devolve o tamanho do documento em 'bytes'.</para> </listitem> </varlistentry> <varlistentry> <term ><function >document.lines(); [função]</function ></term> <listitem> <para >Devolve o número de linhas do documento.</para> </listitem> </varlistentry> <varlistentry> <term >document.mixedIndent; [propriedade:apenas leitura]</term> <listitem> <para >Um booleano que lhe diz se a opção 'mixed-indent' está ativa para o documento. Se sim, a indentação é otimizada para conter uma mistura de tabulações e espaços, como acontece no editor Emacs.</para> </listitem> </varlistentry> <varlistentry> <term >document.removeLine( <parameter >uint linha</parameter > ); [função]</term> <listitem> <itemizedlist> <title >Parâmetros</title> <listitem ><para ><parameter >linha</parameter > o número de linha</para ></listitem> </itemizedlist> <para >Remove a linha especificada do documento.</para> </listitem> </varlistentry> <varlistentry> <term ><function >document.removeText( <parameter >uint linhaInicial</parameter >, <parameter >colunaInicial</parameter >, <parameter >uint linhaFinal</parameter >, <parameter >uint colunaFinal</parameter > ); [função]</function ></term> <listitem> <itemizedlist> <title >Parâmetros</title> <listitem ><para ><parameter >linhaInicial</parameter > corresponde à linha inicial</para ></listitem> <listitem ><para ><parameter >colunaInicial</parameter > corresponde à coluna inicial</para ></listitem> <listitem ><para ><parameter >linhaFinal</parameter > corresponde à linha final</para ></listitem> <listitem ><para ><parameter >colunaFinal</parameter > corresponde à coluna final</para ></listitem> </itemizedlist> <para >Remove o intervalo de texto da linha <parameter >linhaInicial</parameter > e coluna <parameter >colunaInicial</parameter > até à linha <parameter >linhaFinal</parameter > e coluna <parameter >colunaFinal</parameter >. </para> </listitem> </varlistentry> <varlistentry> <term ><function >document.setText( <parameter >string texto</parameter > ); [função]</function ></term> <listitem> <itemizedlist> <title >Parâmetros</title> <listitem ><para ><parameter >texto</parameter > o texto do documento</para ></listitem> </itemizedlist> <para >Configura o conteúdo inteiro do documento como <parameter >texto</parameter >.</para> </listitem> </varlistentry> <varlistentry> <term ><function >document.spaceIndent; [propriedade:apenas leitura]</function ></term> <listitem> <para >Um booleano que indica se o 'space-indent' está ativo para o documento. Se for o caso, o documento é indentado com larguraIndentacao espaços por nível, caso contrário, a indentação corresponde a uma tabulação por nível.</para> </listitem> </varlistentry> <varlistentry> <term ><function >document.textFull(); [função]</function ></term> <listitem> <para >Devolve o conteúdo completo do documento. Se o texto se espalhar por várias linhas, o carácter de mudança de linha é o <constant >\n</constant >.</para> </listitem> </varlistentry> <varlistentry> <term ><function >document.textLine( uint linha ); [função]</function ></term> <listitem> <itemizedlist> <title >Parâmetros</title> <listitem ><para ><parameter >linha</parameter > a linha</para ></listitem> </itemizedlist> <para >Devolve o texto da linha <parameter >linha</parameter >.</para> </listitem> </varlistentry> <varlistentry> <term ><function >document.textRange( <parameter >uint linhaInicial</parameter >, <parameter >uint colunaInicial</parameter >, <parameter >uint linhaFinal</parameter >, <parameter >uint colunaFinal</parameter > ); [função]</function ></term> <listitem> <itemizedlist> <title >Parâmetros</title> <listitem ><para ><parameter >linhaInicial</parameter > corresponde à linha inicial</para ></listitem> <listitem ><para ><parameter >colunaInicial</parameter > corresponde à coluna inicial</para ></listitem> <listitem ><para ><parameter >linhaFinal</parameter > corresponde à linha final</para> </listitem> <listitem ><para ><parameter >colunaFinal</parameter > corresponde à coluna final</para ></listitem> </itemizedlist> <para >Devolve o intervalo de texto indicado. Se o intervalo se espalhar por várias linhas, o caracter de mudança de linha é o <constant >\n</constant >.</para> </listitem> </varlistentry> </variablelist ><!--/ document API --> <variablelist id="advanced-editing-tools-scripting-view"> <title >A API do <classname >view</classname ></title> <varlistentry> <term ><function >view.clearSelection(); [função]</function ></term> <listitem> <para >Remove a seleção de todo o texto.</para> </listitem> </varlistentry> <varlistentry> <term ><function >view.cursorColumn(); [função]</function ></term> <listitem> <para >Devolve a coluna atual do cursor (os caracteres TAB são expandidos).</para> </listitem> </varlistentry> <varlistentry> <term ><function >view.cursorColumnReal(); [função]</function ></term> <listitem> <para >Devolve a coluna real do cursor (os caracteres TAB contam como um).</para> </listitem> </varlistentry> <varlistentry> <term ><function >view.cursorLine(); [função]</function ></term> <listitem> <para >Devolve a linha atual do cursor.</para> </listitem> </varlistentry> <varlistentry> <term ><function >view.hasSelection(); [função]</function ></term> <listitem> <para >Devolve <constant >true</constant > (verdadeiro) se a janela contiver algum texto selecionado, caso contrário devolve <constant >false</constant >.</para> </listitem> </varlistentry> <varlistentry> <term ><function >view.removeSelectedText(); [função]</function ></term> <listitem> <para >Remove o texto selecionado, se a janela tiver alguma seleção.</para> </listitem> </varlistentry> <varlistentry> <term ><function >view.selectAll(); [função]</function ></term> <listitem> <para >Seleciona todo o texto.</para> </listitem> </varlistentry> <varlistentry> <term ><function >view.selection(); [função]</function ></term> <listitem> <para >Devolve o texto selecionado. Se a seleção se espalhar por várias linhas, o caracter de mudança de linha é o <constant >\n</constant >.</para> </listitem> </varlistentry> <varlistentry> <term ><function >view.selectionEndColumn; [propriedade:apenas leitura]</function ></term> <listitem> <para >Devolve a coluna final da seleção.</para> </listitem> </varlistentry> <varlistentry> <term ><function >view.selectionEndLine; [propriedade:apenas leitura]</function ></term> <listitem> <para >Devolve a linha final da seleção.</para> </listitem> </varlistentry> <varlistentry> <term ><function >view.selectionStartColumn; [propriedade:apenas leitura]</function ></term> <listitem> <para >Devolve a coluna inicial da seleção.</para> </listitem> </varlistentry> <varlistentry> <term ><function >view.selectionStartLine; [propriedade:apenas leitura]</function ></term> <listitem> <para >Devolve a linha inicial da seleção.</para> </listitem> </varlistentry> <varlistentry> <term ><function >view.setCursorPosition( <parameter >uint linha</parameter >, <parameter >uint coluna</parameter > ); [função]</function ></term> <listitem> <itemizedlist> <title >Parâmetros</title> <listitem ><para ><parameter >linha</parameter > Indica a linha para o cursor.</para ></listitem> <listitem ><para ><parameter >coluna</parameter > Indica a coluna para o cursor.</para ></listitem> </itemizedlist> <para >Configura a posição atual do cursor na janela como sendo [<parameter >linha</parameter >, <parameter >col</parameter >]. A posição do cursor é a nível visual, isto é, um caracter TAB conta como <replaceable >tab-width</replaceable > espaços, dependendo da posição dentro da linha. A posição do cursor é tornada visível. Tanto a linha como a coluna começam em zero.</para> </listitem> </varlistentry> <varlistentry> <term ><function >view.setCursorPositionReal( <parameter >uint linha</parameter >, <parameter >uint coluna</parameter > ); [função]</function ></term> <listitem> <itemizedlist> <title >Parâmetros</title> <listitem ><para ><parameter >linha</parameter > Indica a linha para o cursor.</para ></listitem> <listitem ><para ><parameter >coluna</parameter > Indica a coluna para o cursor.</para ></listitem> </itemizedlist> <para >Configura a posição atual do cursor na janela como sendo [<parameter >linha</parameter >, <parameter >col</parameter >]. A posição do cursor é a nível do texto, isto é, um caracter TAB conta como 1. A posição do cursor é tornada visível. Tanto a linha como a coluna começam em zero.</para> </listitem> </varlistentry> <varlistentry> <term ><function >view.setSelection( <parameter >uint linhaInicial</parameter >, <parameter >uint colunaInicial</parameter >, <parameter >uint linhaFinal</parameter >, <parameter >uint colunaFinal</parameter > ); [função]</function ></term> <listitem> <itemizedlist> <title >Parâmetros</title> <listitem ><para ><parameter >linhaInicial</parameter > corresponde à linha inicial</para ></listitem> <listitem ><para ><parameter >colunaInicial</parameter > corresponde à coluna inicial</para ></listitem> <listitem ><para ><parameter >linhaFinal</parameter > corresponde à linha final</para ></listitem> <listitem ><para ><parameter >colunaFinal</parameter > corresponde à coluna final</para ></listitem> </itemizedlist> <para >Configura a seleção desde a linha <parameter >linhaInicial</parameter > e coluna <parameter >colunaInicial</parameter > até à linha <parameter >linhaFinal</parameter > e coluna <parameter >colunaFinal</parameter >.</para> </listitem> </varlistentry> </variablelist> <example id="advanced-editing-tools-scripting-example"> <title >Um programa de exemplo</title> <para >Como exemplo, será criado um pequeno programa que converte o texto selecionado para maiúsculas. É óbvio que se deverá ver primeiro se existe texto selecionado, para que se possa obter o texto, mudar a capitalização e depois substituir pelo novo. Uma implementação possível seria do género:</para> <programlisting >if ( view.hasSelection() ) { // seleção para maiúsculas column = view.selectionStartColumn; line = view.selectionStartLine; selection = view.selection().toUpperCase(); document.editBegin(); view.removeSelectedText(); document.insertText( line, column, selection ); document.editEnd(); } </programlisting> <para >Para agrupar esta ação em conjunto, para que possam ser anuladas com uma única ativação do <guimenuitem >Desfazer</guimenuitem >, as linhas <programlisting >view.removeSelectedText()</programlisting > e <programlisting >document.insertText()</programlisting > são encapsuladas com um <programlisting >document.editBegin()</programlisting > e <programlisting >document.editEnd()</programlisting >.</para> </example> <example id="advanced-editing-tools-desktop-example"> <title >Um arquivo <filename >.desktop</filename > de exemplo</title> <para >Aqui está um arquivo .desktop de exemplo que acompanha o programa acima.</para> <programlisting ># Exemplo de um arquivo .desktop [Desktop Entry] Encoding=UTF-8 Name=Kate Part JavaScript Uppercase Comment=Script to uppercase the selection X-Kate-Command=uppercase-selection X-Kate-Help=<p>Usage: <code>uppercase-selection</code></p> </programlisting> <para >Como você pode ver, você pode definir a codificação, definir um nome, comentário, um texto de ajuda com o X-Kate-Help e o nome da linha de comando com o X-Kate-Command. Os itens Name, Comment e X-Kate-Help são traduzidos automaticamente para outros idiomas pelas equipes de traduções do KDE, se os arquivos estiverem no repositório de SVN do KDE.</para> </example> <sect3> <title >Colocando tudo junto</title> <para >O &kate; irá procurar nas pastas de programas (ver <link linkend="advanced-editing-tools-scripting-introduction" >acima</link >) por arquivos <filename >*.js</filename >. Para cada um deles, verifica se existe um arquivo <filename >.desktop</filename > correspondente, como por exemplo, maiusculas.js corresponderia a maiusculas.desktop. </para> <para >Se não for encontrado um arquivo <filename >.desktop</filename >, o programa será registrado na linha de comando com o nome do arquivo sem o '.js' final, para que, no nosso exemplo, fosse <literal >maiusculas</literal >. Se o nome do comando for aceitável e não necessitar de funcionalidades extras de um arquivo <filename >.desktop</filename >, não será necessário um arquivo <filename >.desktop</filename >. </para> <para >Se o arquivo <filename >.desktop</filename > existir, o 'katepart' irá ler o nome sob o qual o programa será registrado, a partir do item do '.desktop' X-Kate-Command, como por exemplo X-Kate-Command=uppercase-selection.</para> </sect3> </sect2> </sect1> </chapter>