Já faz um tempo que eu tinha começado o projeto de desenvolver um plugin de auto-complete para Python no Gedit. A idéia surgiu após perceber que esse é um recurso desejado por muitos usuários desse editor. O plugin também é interesse do grupo que mantém o projeto e encontra-se na página deles como plugin desejado. Em breve, estarei inserindo uma entrada no wiki dos plugins do GEdit com o link para o plugin.
Certo dia resolvi olhar o código do VIm responsável pelo auto-complete de código python nesse editor. Para minha surpresa o código era também escrito em python. Depois de ler o código percebi que ele poderia ser portado para outros editores. Um dos motivos da escolha do GEdit é pela facilidade que ele proporciona aos desenvolvedores para escrever novos plugins. Recomendo a leitura do Python Plugin How to que ensina como desenvolver plugins nesse editor. Na página do projeto a escrita de plugins em python é ainda mais encorajada pela facilidade de desenvolvimento e manutenção do código proporcionada pela linguagem. Seguindo como base o plugin de completar palavras do Osmo Salomaa o trabalho exigido pelo auto-complete de código python ficou ainda mais fácil.
Em resumo o meu trabalho foi apenas juntar as duas partes: o código de auto-complete do VIm pertecente ao Aaron Griffin e o código do Osmo Salomaa. Aqui é um bom exemplo onde o software livre demonstra benefícios claramente, me proporcionando a facilidade de não ter que repetir o trabalho de ambos os autores, fazendo uso do código dos mesmo para prover a funcionalidade em outro editor.
Durante a jornada, a qual apesar de teoricamente simples acabou dando um certo trabalho, cometi a besteira de perder os códigos no antigo computador. Deixei o trabalho parado até encontrar ânimo de recomeçar novamente. O recomeço foi ainda melhor. O desenvolvimento foi muito mais ágil e tive a sorte de conseguir concertar os antigos erros mais rapidamente, alguns eu nem cheguei a esbarrar novamente.
O plugin funciona no Gedit através do atalho Ctrl+Alt+Space e permite completar código python em tempo real. Módulos do python também são suportados. Ele tem basicamente o mesmo funcionamento do auto-complete do VIm mas eu acabei fazendo alguns pequenos ajustes no código. O Aaron Griffin me alertou que o código continha alguns pequenos problemas conhecidos e que em breve ele poderia corrigir. Vou me manter informado para não deixar o plugin desatualizado. Talvez os meus pequenos ajustes tenham corrigido algum desses pequenos bugs que ele mencionou.
Essa é uma versão alpha, ainda não realizei grandes testes. Acredito que ela já possa ser usada, mas certamente bugs aparecerão. Estou disposto a auxiliar quem se interessar pelo plugin. Abaixo segue um conjunto de screenshots demonstrando o funcionamento do plugin. Atualmente o Gedit conta com diversos plugins para desenvolvimento de código Python, os quais o estão aproximando de um ambiente para desenvolvimento Python. Apesar de tudo eu ainda continuo usando o VIm.
A instalação do plugin é relativamente fácil. O usuário deve apenas descompactar o arquivo dentro do diretório .gnome2/gedit/plugins de sua home, reiniciar o gedit e ativar o plugin em editar -> preferências -> plugins. O plugin só funciona com código python, em outro formato de arquivo o atalho não terá funcionalidade alguma. Espero que o plugin conte com a ajuda da comunidade e se torne cada vez mais maduro.
O código do plugin de auto completar código Python no Gedit esta disponível aqui.
UPDATE 18/05/08:
Peço desculpa à todos pela ausência, assim como pela falta de atualização do blog. Estamos nos programando para voltarmos com força total. Enfim, fazendo o mínimo o qual já deveria ter feito, adicionei o plugin no github e assim o acesso fica muito mais fácil. Também vou poder contar melhor com a colaboração dos interessados. Plugin disponível aqui.
[...] por Rodrigo Fenrrir (fenrirrΘgmail·com) - referência [...]
Parabéns pelo trabalho colega, está realmente muito bom!
É tão lento quanto o do VIM?
Opa Lealcy,
Eu testei o plugin e não achei lento… É até bem mais prático que o do vim. Testaí e vê o que vc acha.
Abs,
Opa, mão na roda! A noite vou testar, grandes chances de que vire usuário
Parabéns! [] ’s
Bom trabalho.
Acho que poderia incluir ele na página oficial de plugins do Gedit no live.gnome.org, talvez até deixar lá mesmo os arquivos, algumas pessoas (em empresas, principalmente) tem problemas em baixar coisas do rapidshare.
Há algum tempo fiz um plugin para usar o Pylint no gedit, talvez se interessem em usá-lo ou melhorá-lo.
http://live.gnome.org/Gedit/PylintPlugin
[]’s
Olá Paulo Henrique,
Em primeiro lugar já tenho seu plugin instalado, ele é muito bom. Torna o GEdit ainda melhor. Tive problemas com ele quanto a versão do pylint instalada, acabei desabilitando a verficação de versão e tudo funcionou. Eu pretendo por lá no site do GEdit meu plugin, estava tentando preparar uma paginazinha mais agradável para o plugin, mas vou acabar inserindo lá logo mesmo.
Eu sei do problema com rapidshare, infelizmente estava sem lugar bom pra botar, acho que vou por tudo no site do gnome. Obrigado pelas dicas.
[]s,
Fenrrir
[...] detalhes aqui. Guardar em: « O Jamendo está de cara nova | [...]
[...] A um tempo eu queria voltar a aprender uma linguagem, depois de muito ler escolhi python, e após uma boa lida a respeito fiz a escolha pelo Gedit e um plugin bem legal que tem o code completation que achei neste blog. [...]
Cara era tudo o que eu precisava.
To iniciando agora no Python e esse plugin vai ser uma mão na roda.
abraços!
Não sei se só comigo aconteceu isso mas o plugin não está apenas completando as palavras, ele reescreve tudo. Ex quando coloco “pri” e aperto ctrl+alt+space ele aparece a janelinha, se eu escolher print ele escreve a palavra completa na frente do que eu já tinha escrito e fica “priprint”.
Alguma sujestão?
Abraço
Olá Fernando. O que você mencionou era realmente um bug. Eu fui corrigir um problema e acabei gerando esse. Fiz a correção, está disponível em http://rapidshare.com/files/97646334/pythoncodecompletion-0.1.2.tar.gz.html . Obrigado. Espero não ter produzido outra.
eu fiz uma pequena alteração para ficar parecido com outros IDES que uso, que a tela aparece automaticamente quando vc digitar o ponto.
alteração:
apos a linha 274 incluir o código:
if event.keyval == gtk.keysyms.period:
return self.display_completions(view, event)
OBS: patch testado na versao 0.1.2.
qq coisa mailme
Muito legal! Mas… será que poderia disponibilizar o código em outro lugar? Sinceramente, Rapidshare é a pior opção disponível.
Que tal abrir um projeto no googlecode?
Olá LKRaider,
Obrigado pelo comentário. O blog anda muito parado, estamos nos reorganizando para voltarmos a ativa. Enquanto isso, fiz um update no post atendendo a sua solicitação. Escolhi o github no lugar do googlecode por estar me dando bem com o git.