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.

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!

#17 Gian disse:
09 Maio 11, 04:34PM

gostaria de sugerir quando é setado o current_file o scape pros espaços... meu ubuntu nomeia a Área de trabalho como "Área de Trabalho" aí ele não consegue rodar o arquivo por conta dos espaços.. fiz a seguinte correção no meu:

current_file = ENV['GEDIT_CURRENT_DOCUMENT_PATH'].gsub(/ /, '\ ')

Deixe um comentário





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.

jQuery: Dominando o framework

Você quer aprender a usar jQuery de verdade? Então chegou a hora! Neste workshop você verá como funciona este framework de JavaScript, entendendo todos os aspectos que fazem do jQuery uma das melhores ferramentas para desenvolvimento de interfaces.

Saiba mais Fechar

Conheça também o HOWTO