You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tde-i18n/tde-i18n-pt_BR/docs/tdebase/kate/advanced.docbook

919 lines
50 KiB

<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>&#234;</computeroutput></para>
<para>Entrada: <userinput>char:0x1234</userinput></para>
<para>Resultado: <computeroutput>&#x1234;</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>&quot;Droga!&quot; 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 &ndash; 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 &amp;foo, String &amp;bar String *p, int &amp;a, int &amp;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 &amp; 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+(&amp;)/ 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 &amp;foo, const String &amp;bar String *p, const int &amp;a, const int &amp;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=&lt;p&gt;Usage: &lt;code&gt;uppercase-selection&lt;/code&gt;&lt;/p&gt;
</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>