Configurando Org-Procotocol com ELinks

O org-protocol é um módulo para o Emacs desenvolvido para interceptar chamadas ao emacsclient e disparar ações pré-definidas. É muito usado em conjunto ao org-capture para obter bookmarks e/ou notas personalizados de web browsers, como o Firefox por exemplo, e assim permitir que outras ferramentas sejam suavemente integráveis ao workflow do Emacs.

Sobre a configuraçāo de web browsers, há um documento relativamente bem completo em http://orgmode.org/worg/org-contrib/org-protocol.html. Infelizmente, uso na linha de comando e integraçāo com ELinks nāo sāo mencionados. Todavia, existe uma boa descriçāo sobre o uso do org-protocol na documentaçāo do próprio código fonte (org-protocol.el), segundo a qual define que um URL deve ser criado com os parâmetros:

org-protocol://capture?url=val1&title=val2&body=val3

(já adaptado para o nosso uso).

É possível omitir os nomes dos parâmetros passando os valores como componentes de diretório, caso este em que a interpretaçāo será feita utilizando-se a posiçāo como referência, exemplo:

org-protocol://capture/val1/val2/val3

É importante nāo esquecer (eu esqueci várias vezes…) de que cada “val” deve ter caracteres especiais, no contexto de URLs, escapados. Para fazer funcionar no ELinks, usaremos o document.uri_passing, como no exemplo:

set document.uri_passing.org-capture = "emacsclient -n org-protocol://capture\\?url=`perl -MURI::Escape -wE\"print uri_escape shift\" %c`"

Para invocar o comando, utiliza-se o tab-external-command, que pode ser facilmente atribuído à teclas de atalho (aqui é Alt-o). Através do document.uri_passing, o ELinks fornece apenas o URL (%c).

Desconheço uma maneira de obter outros valores através deste método, entretanto, no meu setup, estou usando o título da página web e também a descriçāo contida em tags meta no header do documento. Entretanto, isto só é possível com alguns hacks: uso os hooks para armazenar a página em disco, que é recuperada por um script desenvolvido para intermediar o ELinks com outras ferramentas. O script extrai informações do arquivo HTML, monta o URL e executa o emacsclient. Como desenvolvi tudo apenas para sanar minhas necessidades, os arquivos de configuraçāo e scripts nāo estāo bem polidos. De qualquer forma, pretendo disponibilizá-los no GitHub em breve.

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s