Executando arquivos direto do gEdit

29/03/07

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.

Snippet de Image Replacement para o Textmate

28/02/07

Se você usa o Textmate ou o E Text Editor (para Windows) pode usar um snippet que criei e que é muito útil. Ao arrastar uma imagem para uma regra CSS, ele cria a regra a seguir automaticamente:

span {
    background: url(image.png) no-repeat;
    height: 60px;
    width: 60px;
}

O mais legal é que a largura e altura são preenchidas baseadas no tamanho da imagem. Para isso, usei a função getimagesize do PHP. Bacana, né?

Acesse o menu "Bundles › Bundle Editor › Show Bundle Editor" e crie um "Drag Command" para CSS. Adicione o seguinte código:

echo $TM_DROPPED_FILE | php -r '$f = fopen("php://stdin", "r"); $file = trim(fread($f, 512)); list($width, $height) = getimagesize($file); echo "background: url($file) no-repeat;\nheight: ${height}px;\nwidth: ${width}px;";'

Lembre-se de definir o escopo para scope.css. É assim que ele deve ficar:

Snippet para Image Replacement no Textmate

Usando PHP5 na RailsPlayground

19/12/06

O RailsPlayground vem por padrão com PHP 4.4.4, mas é possível utilizar o PHP5.

Para utilizar o PHP5, crie um arquivo ".htaccess" e coloque a seguinte configuração:

AddHandler application/x-httpd-php5 .php

Caso você precise do PHP4 para uma aplicação mais antiga, você pode utilizar a configuração abaixo.

AddHandler application/x-httpd-php .php

O Apache aceita arquivos ".htaccess" em cada diretório. Desta maneira, é possível alternar entre uma versão e outra sempre que você precisar. Basta criar um arquivo específico para aquele diretório com a linha corresponde à versão que você precisa.