domingo, 26 de fevereiro de 2012

Como usar o Notepad++ como uma IDE

Olá, programadores de plantão.

Se você é como eu que adora editar código-fonte no Notepad++ e compilar, linkar e testar seus projetos de software direto pela linha de comando, este artigo foi escrito especialmente para você.

O Notepad++, que é o mais avançado editor de texto sem formatação que existe, pode ser transformado em uma IDE (ambiente de desenvolvimento integrado) simples que é capaz de compilar, linkar e executar seu projeto em qualquer linguagem bastando apenas um clique, com a máxima flexibilidade possível e sem as frescuras de um Visual Studio, Code::Blocks, Netbeans, Eclipse ou qualquer outra IDE gigante, bugada e ultrapassada.

O procedimento para conseguir usar o Notepad++ como uma IDE, é relativamente simples. Você precisa entender muito bem como funciona o seu compilador/linker, o prompt de comando do Windows (ou o shell do Linux), saber o que é um arquivo de comandos em lote (também conhecido como .bat, de "batch file"), e aproveitar a função "Executar" do Notepad++ (ou "Run" caso não esteja com a versão em português) que interage com ela.

Por isso antes de explicar como funciona o procedimento, é necessário explicar estes detalhes e esta função valiosa do editor... Se você já entende tudo sobre linhas de comando e sobre o menu "Executar" do Notepad++, clique aqui para pular essa explicação e ir direto ao que interessa.


Como funciona o menu "Executar" (ou "Run") do Notepad++?


A função "Executar..." é acessível através do menu de mesmo nome. Ao clicar em "Executar...", abre uma pequena janela com um campo de texto, um botão com três pontos ("...") bem do lado desse campo, e três botões embaixo, "Executar", "Salvar" e "Cancelar" ("Run", "Save" e "Cancel" na versão em inglês). Neste caso o que nos importa aqui é só o campo de texto e o botão "Salvar".

No campo de texto, você pode digitar uma linha de comando com parâmetros da mesma forma como faria no prompt de comando do Windows (ou shell do Linux), sempre lembrando de colocar os caminhos entre aspas quando existirem espaços nos nomes de pastas ou arquivos.

Além disso, o Notepad++ aceita que você digite neste campo, até se for misturado com os comandos e parâmetros, algumas variáveis que têm significado especial. Estas variáveis quando interpretadas, são substituídas por valores obtidos da informação do arquivo que estiver aberto e em foco no editor, no momento em que o comando é executado. Elas precisam ser escritas sempre imediatamente depois de um cifrão ($) e estar entre parênteses, conforme mostrado abaixo:


$(FULL_CURRENT_PATH)
Substituído pelo caminho completo do arquivo atual.

$(CURRENT_DIRECTORY)
Substituído pelo caminho da pasta onde o arquivo atual se encontra.

$(FILE_NAME)
Substituído pelo nome do arquivo (sem o caminho, somente o nome e extensão).

$(NAME_PART)
Substituído pelo nome do arquivo sem o caminho nem a extensão.

$(EXT_PART)
Substituído pela extensão do arquivo.

$(NPP_DIRECTORY)
Substituído pelo caminho da pasta onde o executável do Notepad++ se encontra.

$(CURRENT_WORD)
Substituído pela palavra que estiver selecionada no arquivo atual.

$(CURRENT_LINE)
Substituído pelo número da linha onde o cursor estiver no arquivo atual (a primeira linha é a zero).

$(CURRENT_COLUMN)
Substituído pelo número da coluna onde o cursor estiver no arquivo atual (a primeira coluna é a zero).


Com essas variáveis você pode criar comandos bem sofisticados, como por exemplo, abrir a pasta atual onde o arquivo atual se encontra, executar o Google Chrome ou o Firefox e abrir a página HTML que estiver sendo editada como a página inicial, e até pesquisar na Wikipédia ou no Google a palavra que estiver selecionada no arquivo, entre muitos outros.

Depois de digitar o comando e os parâmetros, ao clicar no botão "Salvar", você pode dar um nome para o comando e associar um atalho qualquer. Depois de salvo, o comando passará a aparecer sempre no menu "Executar" e você poderá usar o atalho associado a ele a qualquer momento.

Claro, essa é a parte mais fácil, saber como funciona a funcionalidade de "Executar" do Notepad++. Mas para transformá-lo em uma pseudo-IDE, você vai precisar aprender mais alguns truques...


Como funciona um arquivo de comandos em lote?


Um "arquivo de comandos em lote" é um tipo de arquivo executável do Windows, terminando com a extensão .BAT, que contém comandos a serem executados em sequência na linha de comando. É um tipo de arquivo que você pode abrir no bloco de notas e editar normalmente como qualquer outro arquivo de texto, porém deve ter o cuidado redobrado, pois tudo o que você digitar nesse arquivo será interpretado e executado pelo sistema.

Cada linha de um arquivo .BAT deve conter quaisquer comandos válidos, quantos forem necessários. Ao clicar duas vezes encima de um arquivo .BAT ou digitar o nome dele direto na linha de comando, o CMD.EXE (que é o prompt de comando) executa estes comandos, um seguido do outro, na mesma ordem em que eles aparecem no arquivo. Um arquivo .BAT pode executar quaisquer outros arquivos executáveis, inclusive outros arquivos .BAT.

Geralmente é possível interromper a execução de um arquivo .BAT pressionando Control+C. Ao terminar de executar os comandos, o prompt de comando pode fechar sozinho ou continuar aberto, dependendo das configurações do sistema e dos comandos que foram executados.

Enquanto executa o arquivo .BAT, o prompt mostra a saída dos comandos. É possível esconder ou mostrar a saída textual dos comandos ou até redirecionar a saída deles para um arquivo de texto usando um comando específico do sistema. Para uma referência dos comandos do seu sistema, experimente entrar na linha de comando e digitar "help" (sem as aspas). No Windows, o comando HELP no prompt de comando exibe uma lista com todos os comandos disponíveis, e se você digitar HELP seguido de um dos comandos ele exibe um texto com todos os detalhes e parâmetros daquele comando.

Enfim, agora que você já sabe o suficiente sobre arquivos de comandos em lote, vamos logo ao que interessa!


Afinal, como transformar o Notepad++ em uma mini IDE?!


Agora tudo vai depender da estrutura do seu projeto, do seu compilador/linker/ferramentas e da configuração do seu sistema operacional.

A idéia principal é que, já que o comando "Executar" do Notepad++ executa qualquer coisa que você é capaz de executar pela linha de comando do sistema, então ele é capaz de executar qualquer comando de sistema ou qualquer outro tipo de arquivo executável como .BAT ou .EXE, desde que você saiba o caminho completo até ele ou o caminho dele já tenha sido adicionado ao PATH do sistema, lembrando das diversas variáveis especiais que o Notepad++ aceita na hora de definir o comando. Para executar diversos comandos usando um único comando e um único atalho, o truque é usar um arquivo de comandos em lote .BAT contendo todos os comandos a serem executados.


Exemplo de como construir seu projeto com um único clique e sem sair do Notepad++:


Eu tenho um projeto de software em C++ usando o framework Qt. Meu compilador é o G++ (parte do MinGW). Programas escritos em C++ usando o Qt precisam ser construídos de forma especial. O Qt tem um comando chamado qmake que precisa ser invocado com o parâmetro -project dentro da pasta do projeto para gerar um arquivo de projeto .PRO. Então, é necessário invocar denovo o comando qmake sem parâmetros para interpretar o arquivo .PRO e gerar os makefiles e demais arquivos do projeto. Por fim, é necessário invocar o comando make do MinGW para compilar e linkar o projeto.

Tudo isso seria um saco. Seria extremamente entediante ficar digitando esse monte de comandos a cada alteração num código-fonte do meu projeto. Então o que eu fiz: criei um arquivo de comandos em lote chamado build.bat contendo todos esses comandos, salvei ele dentro da pasta do projeto, e no Notepad++ criei um comando que vai até a pasta do arquivo atual que eu estiver editando (que é a pasta do projeto) e executa o build.bat pra gerar os arquivos de projeto, compilar e linkar tudo, com um único clique.


Conteúdo do meu arquivo de comandos em lote build.bat:
F:
cd proj\_CURRENT\CodeMaker
qmake -project >> build_log.txt
qmake >> build_log.txt
make >> build_log.txt

O comando F: faz o sistema entrar na unidade F:, que é onde está o caminho do meu projeto. O comando cd serve para entrar na pasta indicada pelo parâmetro, que nesse exemplo é a pasta do meu projeto. Os demais comandos são qmake e make, que finalmente constróem o projeto. Aqueles sinais de maior (>>) no final de cada linha seguidos de build_log.txt fazem com que o sistema não mostre a saída daqueles comandos direto na tela, mas ao invés disso envie a saída textual para um arquivo chamado build_log.txt que ele cria naquela pasta.


Comando criado no Notepad++ para executar o build.bat:

cmd /c "$(CURRENT_DIRECTORY)\build"

O cmd é o comando do sistema para abrir o prompt de comando do Windows. Aquele "/c" faz com que o prompt de comando feche sozinho depois de terminar de executar os comandos. Se quizesse que ele não fechasse, trocaria o "/c" por um "/k". Em seguida na linha do comando vem uma variável do Notepad++, a que ele substitui pelo caminho do arquivo atualmente em foco sendo editado. O final onde aparece "\build" é apenas o nome do arquivo de lote build.bat. Não aparece o .BAT no final pois no Windows os arquivos executáveis (que terminam em .BAT e .EXE, entre outros) não precisam ter a extensão indicada para serem executados.

Enfim, espero que este tutorial te ajude a compilar, linkar e executar seus projetos e programas com um único clique sem precisar sair do Notepad++!

Dúvidas e sugestões basta deixar o seu comentário.