quarta-feira, 11 de agosto de 2010

Operações em caminhos para arquivos em buffers do Emacs

Seguidamente sinto a falta de funções no Emacs para ver o caminho completo para o arquivo aberto no buffer que estou editando (poder copiar o caminho completo seria um plus). A seguir estão duas pequenas funções para fazer isso.

show-buffer-file-name exibe na echo area do Emacs o caminho completo para o arquivo. copy-buffer-file-name coloca o caminho completo do para o arquivo no topo do kill ring do Emacs (no X Window, também copia para a área de seleção primária, o que pode ser útil para quem, como eu, usa bastante a combinacao Emacs + emulador de terminal).

(defun show-buffer-file-name ()
(interactive)
(message buffer-file-name))


(defun copy-buffer-file-name ()
(interactive)
(if buffer-file-name
(kill-new buffer-file-name)))

terça-feira, 20 de julho de 2010

Awful 0.24

Há pouco foi lançada a versão 0.24 de awful. As novidades que mais se destacam, além de algumas pequenas melhorias e da correção de alguns bugs que ocorriam em casos especiais, há o suporte inicial a armazenamento de identificadores de sessão em cookies (via spiffy-cookies) e o suporte a redirecionamentos de forma fácil (procedimento redirect-to).

A seguir está um exemplo de definição de um redirecionador:


(define-page "/mario"
(lambda ()
(redirect-to "http://parenteses.org/mario")))


A definição do redirecionador pode ser encurtada com o uso de cut:


(define-page "/mario" (cut redirect-to "http://parenteses.org/mario"))


Também aproveitei para dar uma embelezada no web REPL e no inspetor de sessão (screenshots abaixo).



10 anos de Chicken!

Há dez anos foi publicado o anúncio da primeira versão pública de Chicken: http://groups.google.com/group/comp.lang.scheme/msg/edfb2da16fd89fae

Em http://web.archive.org/web/20000824034645/http://www.anu.ie/felix/chicken.html está a página do projeto, como era na época.

segunda-feira, 17 de maio de 2010

Chicken 4.5.0

Alguns minutos atrás foi anunciado o lançamento da versão 4.5.0 de Chicken. A lista de novidades está em http://chicken.wiki.br/releases/4.5.0/NEWS.

quarta-feira, 12 de maio de 2010

domingo, 9 de maio de 2010

Awful: expressões regulares para dispatching de URLs

Há pouco fiz o commit da mais nova versão de awful (0.18) . A novidade mais significativa desta versão é o suporte a dispatching de URLs através de expressões regulares. Em outras palavras, agora é possível associar uma expressão regular a um procedimento a ser executado. Assim, se o caminho da URL da requisição bate com a expressão regular, o procedimento é invocado com o caminho como argumento.

Abaixo está um exemplo simples que ilustra o que a nova versão pode fazer:
(use awful srfi-1 regex)

(define-page (regexp "/add/.*")
(lambda (path)
(let ((numbers (filter-map string->number (string-split path "/"))))
(number->string (apply + numbers)))))


Se acessarmos o servidor executando o código acima através da URL http://host:port/add/1/2/3 o resultado exibido será 6.

Org mode e links para mensagens no Gnus

Esses dias passei os olhos sobre um guia compacto sobre o Org mode e
achei uma coisa super útil: a possibilidade de fazer links do
documento em Org para mensagens do Gnus.

A sintaxe é a seguinte:

[[gnus:<mailbox>#<mensagem id>][<texto>]]


Onde:


  • <mailbox> é a mailbox aonde está armazenada a mensagem

  • <mensagem id> é o número da mensagem na mailbox

  • <texto> é o texto que aparecerá no link



Exemplo:

[[gnus:lists.chicken-users#2045 [Coisa para ler sobre Chicken]]


Algumas combinações de teclas:


  • C-c C-l: cria um link interativamente

  • C-C C-o: segue o link sob o cursor