Executando arquivos direto do gEdit

29 de Março de 2007

Uma funcionalidade que não tinha no gEdit e que eu sentia muita falta é a de executar o arquivo que você estava editando. Por exemplo, você pode estar digitando um HTML e gostaria de ver como está ficando, no navegador. Ou, estar fazendo um script em Python, Ruby ou PHP e gostaria de executar esse arquivo sem precisar sair do editor. No SciTE eu conseguia fazer isso com um simples F5. Agora também consigo fazer no gEdit!

Criei um comando para o "External Tools" — plugin muito interessante, por sinal — que roda comandos externos, como o próprio nome sugere. Para utilizá-lo, primeiro ative-o em "Edit > Preferences > Plugins > External Tool". Depois, vá em "Tools > External Tools" e adicione um novo comando. Copie o código abaixo e cole no campo "Command(s)".

Se você TEM Ruby instalado, use este script:

#!/usr/bin/env ruby
 
current_file = ENV['GEDIT_CURRENT_DOCUMENT_PATH']
 
if not current_file
  puts "The current file cannot be runned."
elsif current_file =~ /\.(php|py|rb|html|htm|xml)$/i
  commands = {
    'php' => "php -f #{current_file}",
    'rb' => "ruby #{current_file}",
    'py' => "python #{current_file}",
    'browser' => "gnome-open #{current_file}"
  }
  extension = $1
  extension = 'browser' if ['xml', 'html', 'htm'].include?(extension)
 
  command = commands[extension]
 
  puts "Running command #{command}\n\n"
  system(command)
end

Se você NÃO TEM Ruby instalado, use este script:

#!/usr/bin/env python
 
import re
import os
 
current_file = os.getenv("GEDIT_CURRENT_DOCUMENT_PATH")
match = re.search('\.(php|py|rb|html|htm|xml)$', current_file)
 
if match is None:
    print "The current file cannot be runned"
else:
    commands = {
        'php': 'php -f "%s"',
        'rb': 'ruby "%s"',
        'py': 'python "%s"',
        'browser': 'gnome-open "%s"'
    }
 
    extension = match.group(1)
 
    if extension in ['xml', 'html', 'htm']:
        extension = 'browser'
 
    command = commands[extension] % current_file
    print "Running command %s\n\n" % command
    os.system(command)

External Tools: Adicionando o novo comando

Agora, quando você estiver executando um arquivo .php, .rb, .py ou .htm/.html e quiser executá-lo, basta pressionar F5 e pronto! Se for HTML abre no navegador padrão. Se for um dos outros que mencionei ele executa e exibe a saída no "Shell Output". Veja a saída de um script Ruby:

Output de um script em Ruby executado através do External Tools

Update: Adicionado suporte a XML com comportamento semelhante de HTML.

Update 2: Adicionado versão Python do script para quem não tem Ruby instalado.

Posts relacionados
Rails Hotkeys
gEdit e tabulação por arquivo
Criando atalhos para os comandos mais usados do Rails
Current Line Highlight
Removendo caracteres com o método trim no Ruby

Comentários #

#1 Gabriel disse:
29 Mar 07, 11:24PM

Muito boa, sempre tentei usar o external tools, mas sem usar script.
Se um dia eu estiver sem SciTE usarei isso!

#2 Leonardo Fontenelle disse:
31 Mar 07, 11:48PM

Gostei da idéia, mas tenho uma sugestão ainda mais simples. Basta criar uma ferramenta externa com o comando "gnome-open $GEDIT_CURRENT_DOCUMENT_URI".

#3 Leonardo Fontenelle disse:
31 Mar 07, 11:52PM

Pedi que a idéia seja acrescentada à instalação padrão do gedit:

http://bugzilla.gnome.org/show_bug.cgi?id=425045

#4 Nando Vieira disse:
01 Abr 07, 02:49AM

Leonardo, o padrão para arquivos Python é abrir no gedit. Para mim, não funciona. Mesma coisa para o PHP e Ruby.

#5 Simples Idéias. Por Nando Vieira. » Arquivo » Lista ... disse:
05 Abr 07, 09:32AM

[...] Permite executar comandos externos e shell script. Excelente se usado com o comando Run File. http://live.gnome.org/Gedit/ToolLauncherPlugin [...]

#6 < TAG’S /> » Blog Archive » Executando ar... disse:
09 Abr 07, 12:30PM

[...] http://simplesideias.com.br/executando-comandos-direto-do-gedit/ [...]

#7 muller disse:
19 Jun 07, 01:04PM

o meu gedit não tem a opção "External Tool" > "Tools > External Tools".
tem outro jeito de instalar o plugin?

#8 Nando Vieira disse:
19 Jun 07, 03:51PM

Muller, você precisa instalar e ativar o plugin External Tools. Para instalar esse e outros plugins, execute o comando sudo aptitude install gedit-plugins. Depois você pode ativá-lo em "Edit › Preferences › Plugins".

#9 muller disse:
19 Jun 07, 09:34PM

"Pacote não encontrado". Vou procurar na rede e instalar...
Muito obrigado !

Agora sim que eu não saio mais do gEdit :)

#10 Nando Vieira disse:
20 Jun 07, 10:40AM

Acho que você precisar descomentar as linhas dos repositórios multiverse e universe no /etc/apt/sources.list

#11 muller disse:
20 Jun 07, 04:52PM

Aqui deu esses erros:
"Running tool: Build

/bin/sh: line 2: current_file: command not found
/bin/sh: -c: line 6: syntax error near unexpected token `('
/bin/sh: -c: line 6: `elsif current_file =~ /\.(php|py|rb|html|htm|xml)$/i'

Exited: 512"

#12 Nando Vieira disse:
21 Jun 07, 08:27AM

Muller, você tem Ruby instalado? Para saber, execute o comando ruby -v. Se retornar algo como ruby 1.8.5 (2006-08-25) [i486-linux], a resposta é sim. Caso contrário, adicione a versão Python do script (coloquei no post hoje de manhã).

#13 muller disse:
21 Jun 07, 01:22PM

Eu também achei que era isso e instalei o Ruby ontem... mas também não deu :/
Testei o outro script em Python e também não deu. Tenho o Python instalado.
Instalei o SciTE e também tá dando erro ">php -f "calendario.php"
sh: php: command not found
>Exit code: 127"

Acho que é minha distribuição, vou ver o que posso fazer.
Obrigado.

#14 André disse:
18 Ago 07, 09:38AM

Baixei um arquivo com extensão .bin. Como posso fazer para abri-lo?

#15 Dyan disse:
15 Jul 08, 11:28AM

Muito bom este post,

Simples, ilustrado e eficiente.

#16 Ricardo Peres disse:
09 Mar 10, 09:15PM

Vlw mtu!

Estava realmente precisando de algo que rodace meus códigos ruby!

Deixe um comentário




Este blog usa o Gravatar.


Não é aceito código HTML: adicione-o no pastie.org ou paste.milk-it.net e poste apenas o link.

Se este é seu primeiro comentário, ele terá que ser aprovado antes de ser exibido.