Navegar pelo código-fonte

Na secção anterior, discutimos a exploração do código-fonte, isto é obter informações sobre os símbolos, ficheiros e projectos. O passo seguinte é então navegar pelo mesmo, isto é circular por ele todo. Existem de novo vários níveis possíveis para tal: local, dentro de um ficheiro ou dentro de um projecto.

Nota

Muitas das formas de navegar pelo código estão acessíveis através do menu Navegar da janela principal do KDevelop.

Navegação local

O KDevelop é muito mais que um editor, mas também é um editor de código. Como tal, obviamente poderá mover o cursor para cima, baixo, esquerda ou direita num ficheiro de código. Poderá também usar as teclas PageUp e PageDown, assim como todos os comandos a que está habituado em qualquer outro editor útil.

Navegação ao nível do ficheiro e modo de contorno

Ao nível do ficheiro, o KDevelop oferece muitas formas possíveis de navegar pelo código-fonte. Por exemplo:

  • Contorno: Poderá ter uma visão geral do que se encontra no ficheiro actual, pelo menos de três formas diferentes:

    • Se carregar na área de Contorno no canto superior direito da janela principal, ou se carregar em Alt+Ctrl+N, irá abrir uma lista que apresenta todas as declarações de funções e classes:

      Poderá então seleccionar para onde desejar saltar ou — se existirem bastantes — começar a escrever o texto que possa aparecer nos nomes apresentados; nesse caso, à medida que vai escrevendo, a lista vai ficando cada vez menor, dado que os nomes não correspondentes ao texto introduzido por si vão sendo retirados, até que esteja pronto para seleccionar uma das opções.

    • Posicionando o cursor ao nível do ficheiro (isto é fora de qualquer declaração ou definição de funções ou classes) e tendo a ferramenta do Navegador do Código aberta:

      Isto também lhe dá uma ideia geral do que se passa no ficheiro actual, permitindo-lhe seleccionar para onde deseja ir.

    • Se passar o rato sobre o separador da página de um dos ficheiros abertos também lhe dará uma visão geral do ficheiro nessa página.

  • Os ficheiros de código estão organizados como uma lista de declarações ou definições de funções. Se carregar em Alt+Ctrl+PgUp e Alt+Ctrl+PgDown, irá respectivamente para a definição de função anterior ou seguinte neste ficheiro.

Navegação ao nível do projecto e sessão. Navegação semântica

Como foi mencionado noutros locais, o KDevelop não tem em consideração normalmente os ficheiros de código individuais mas olha sim para os projectos como um todo (ou para todos os projectos que façam parte da sessão actual). Por consequência, oferece várias possibilidades para navegar pelos projectos inteiros. Alguns destes são derivados do que já foi discutido na secção como Explorar o código-fonte, enquanto outras são completamente diferentes. O tema em comum é que estas funcionalidades de navegação baseiam-se numa compreensão semântica do código, isto é elas oferecem-lhe algo que necessitar de processar os projectos por inteiro e interligar os dados. A seguinte lista mostra-lhe algumas formas de navegar pelo código-fonte que esteja espalhado por uma grande quantidade de ficheiros:

  • Como foi visto na secção sobre Explorar o código-fonte, poderá obter uma dica que explica os nomes dos espaços de nomes, classes, funções ou variáveis individuais, passando o cursor do seu rato sobre eles ou mantendo a tecla Alt carregada durante algum tempo. Aqui está um exemplo:

    Se carregar nas ligações para a declaração de um símbolo ou se expandir a lista de utilizações, poderá saltar para esses locais, abrindo se necessário o respectivo ficheiro e colocando o cursor na posição correspondente. Poderá obter um efeito semelhante se usar a ferramenta do Navegador de Código, que também foi descrita anteriormente.

  • Abertura rápida: Uma forma bastante poderosa de saltar para outros ficheiros ou locais é usar os vários métodos de abertura rápida no KDevelop. Existem quatro versões destes:

    • Abrir rapidamente a classe (NavegarAbrir rapidamente a classe ou Alt+Ctrl+C): Irá obter uma lista com todas as classes nesta sessão. Comece a escrever (uma parte de) o nome de uma classe para que a lista se vá reduzindo para mostrar apenas as que corresponderem ao texto escrito por si até agora. Se a lista for pequena o suficiente, seleccione um elemento, com as teclas de cursor para cima ou baixo, para que o KDevelop o leve para o local em que a classe está declarada.

    • Abrir rapidamente a função (NavegarAbrir rapidamente a função ou Alt+Ctrl+M): Irá obter uma lista com todas as funções 'membros' que fazem parte dos projectos na sessão actual, podendo seleccionar, a partir desta, da mesma forma que foi descrito acima. Lembre-se que esta lista poderá incluir tanto as declarações como as definições das funções.

    • Abrir rapidamente o ficheiro (NavegarAbrir rapidamente o ficheiro ou Alt+Ctrl+O): Irá obter uma lista com todos os ficheiros que fazem parte dos projectos na sessão actual, onde poderá escolher o ficheiro em questão da mesma forma que foi descrita acima.

    • Abertura rápida universal (NavegarAbertura rápida ou Alt+Ctrl+Q): Se se esquecer da combinação de teclas associada a algum dos comandos acima, este é o 'canivete suíço' universal — apresenta-lhe simplesmente uma lista combinada com todos os ficheiros, funções, classes e outros itens que possa seleccionar.

  • Ir para a declaração/definição: Ao implementar uma função-membro, normalmente uma pessoa precisa de voltar ao ponto em que foi declarada uma função, por exemplo para manter a lista de argumentos da função sincronizada entre a declaração e a definição ou para actualizar a documentação. Para o fazer, coloque o cursor sobre o nome da função e seleccione a opção NavegaçãoIr para a declaração (ou carregue em Ctrl+.) para ir para o local onde está declarada a função. Existem várias formas de voltar ao local original:

    • Seleccionando a opção NavegaçãoIr para a definição (ou carregando em Ctrl+,).

    • Seleccionando a opção NavegaçãoContexto visitado anterior (ou carregando em Meta+Esquerda), como descrito em baixo.

Nota

Ir para a declaração de um símbolo é algo que não só funciona quando colocar o cursor sobre o nome da função que se encontra a implementar de momento, mas também funciona para outros símbolos: se colocar o cursor sobre uma variável (local, global ou membro) e for para a sua declaração, irá também levá-lo para a localização da sua declaração. Da mesma forma, poderá colocar o cursor sobre o nome de uma classe, por exemplo sobre a declaração da variável de uma função, e ir para o local da sua declaração.

  • Alternar entre a declaração/definição: No exemplo acima, para ir para o local da declaração da função actual, terá primeiro de colocar o cursor sobre o nome da função. Para evitar este passo, poderá seleccionar a opção NavegaçãoAlternar entre a definição/declaração (ou carregue em Shift+Ctrl+C) para ir para a declaração da função onde se encontra o cursor de momento. Se seleccionar uma segunda vez a mesma opção, voltará para o local em que está definida a função.

  • Uso anterior/seguinte: Se colocar o cursor sobre o nome de uma variável local e seleccionar a opção NavegaçãoUso seguinte (ou carregar em Meta+Shift+Direita) irá para a utilização seguinte desta variável no código. (Lembre-que isto não pesquisa apenas pela ocorrência seguinte da variável mas também tem em conta variáveis com o mesmo nome, mas em âmbitos diferentes). O mesmo resulta para a utilização dos nomes das funções. Se seleccionar NavegaçãoUso anterior (ou carregar em Meta+Shift+Esquerda), irá para a utilização anterior de um dado símbolo.

Nota

Para ver uma lista com todas as utilizações de um nome, coloque o cursor sobre ele e abra a ferramenta do Navegador do Código ou carregue e mantenha carregada a tecla Alt. Isto é explicado com mais detalhe na secção sobre como Explorar o código.

  • A lista de contextos: os navegadores Web têm esta funcionalidade, na qual poderá recuar e avançar pela lista das páginas visitadas mais recentemente. O KDevelop tem o mesmo tipo de funcionalidades, excepto que, em vez de páginas Web, você visita os contextos. Um contexto é a localização actual do cursor e o utilizador podê-la-á alterar se navegar para fora dela, usando tudo menos os comandos de cursores — por exemplo, se carregar num local indicado por uma dica, na área de ferramentas do Navegador de Código, uma das opções indicadas no menu de Navegação ou qualquer outro comando de navegação. Se usar as opções NavegaçãoContexto Visitado Anterior (Meta+Esquerda) e NavegaçãoContexto Visitado Seguinte (Meta+Direita) irá percorrer esta lista de contextos visitados, assim como acontece nos botões para recuar e avançar num navegador para as páginas Web visitadas.

  • Finalmente, existem áreas de ferramentas que lhe permitem navegar para diferentes locais do seu código. Por exemplo, a ferramenta de Classes oferece-lhe uma lista com todos os espaços de nomes e classes de todos os projectos da sessão actual, permitindo-lhe expandi-la para ver as funções e variáveis membros de cada uma destas classes:

    Se fizer duplo-click sobre um item (ou se percorrer o menu de contexto com o botão direito do rato) poderá ir para a localização de declaração do item. Outras ferramentas permitem coisas do género; por exemplo, a área de Projectos oferece uma lista dos ficheiros que fazem parte de uma sessão:

    Mais uma vez, se fizer duplo-click sobre um ficheiro, abri-lo-á.