Como Usar Emacs para RSS com Elfeed

Emacs é um software muito extensível. Ele pode ser seu editor de texto, seu cliente de e-mail e até mesmo seu leitor de USENET. Com Elfeed, você também pode usar Emacs como seu leitor de feeds RSS.
Índice
- O que é Elfeed?
- Por que usar um leitor de feeds no Emacs?
- Instalando Elfeed no Emacs
- Configurando seu primeiro feed RSS no Emacs
- Como marcar e filtrar feeds automaticamente no Emacs
- Como marcar feeds automaticamente com base na URL
- Como criar cores e fontes personalizadas para tags
- Perguntas frequentes
Leia também: 5 dos melhores aplicativos de leitura de RSS para macOS
O que é Elfeed?
Elfeed é um leitor de feeds RSS leve, mas poderoso, escrito para Emacs. Ele usa um sistema simples baseado em tags para classificar seus feeds RSS. Não só isso, mas também vem com um poderoso sistema de tagging “baseado em hooks” que permite que você marque feeds automaticamente com base em seu conteúdo.

Isso torna o Elfeed útil para pessoas que estão acompanhando muitos feeds RSS e estão procurando uma maneira de classificar automaticamente seus feeds.
Leia também: Como usar Emacs para tocar música com EMMS
Por que usar um leitor de feeds no Emacs?
Emacs funciona na noção de interoperabilidade, pois o Emacs pega dados e permite que eles sejam interpretados de várias maneiras diferentes.

Enquanto você pode usar o Emacs para editar texto exclusivamente, poder acessar seu e-mail enquanto edita texto, por exemplo, pode permitir que você use perfeitamente o texto que está escrevendo no e-mail que está compondo.

É por isso que incorporar seu leitor de feeds RSS no Emacs pode ser atraente. Isso permitiria que você usasse as poderosas capacidades de edição do Emacs para manipular seus feeds e outras funções no Emacs.
Instalando Elfeed no Emacs
Instalar Elfeed é realmente simples. Ele está disponível no repositório GNU ELPA, então você pode acessá-lo sem nenhuma modificação no seu arquivo init.el.

Para instalar o Elfeed, pressione Alt + X para abrir o buffer de comando, em seguida, digite package-install. Você deve fornecer elfeed como o nome do pacote e pressionar Enter. O Emacs irá baixar o código-fonte do Elfeed e compilá-lo imediatamente após.
Configurando seu primeiro feed RSS no Emacs
Com isso instalado, acesse o Elfeed pressionando Alt + X e digitando elfeed no buffer de comando. Fazer isso carregará um buffer Elfeed vazio.

Existem duas maneiras de adicionar um feed RSS ao Elfeed:
Editar manualmente seu arquivo init.el
Sem Emacs
Adicionando um feed RSS manualmente no Elfeed
Você pode facilmente preencher o Elfeed adicionando manualmente as URLs dos feeds em seu arquivo init.el, já que o Elfeed possui uma variável “elfeed-feeds” que ele rastreia. Isso informa ao Elfeed quais feeds buscar e exibir em sua tela de visão geral.
Por exemplo, este é um trecho do meu arquivo init.el.
(setq elfeed-feeds
'("https://feeds.maketecheasier.com/MakeTechEasier"
"https://solar.lowtechmagazine.com/feeds/all-en.atom.xml"
"https://old.reddit.com/r/f1technical.rss"))Setq é uma função do Emacs que define o valor de uma variável específica. Neste caso, está definindo a variável elfeed-feeds com três links de feeds como valores.
A partir daí, o Elfeed adicionará automaticamente esses links ao seu banco de dados interno, e eles serão carregados na próxima vez que você executar o programa.

Adicionando um feed RSS dentro do Emacs
Outra maneira de preencher o Elfeed é fornecendo links de feeds enquanto ele está em execução. Isso permite que você atualize ativamente sua lista de feeds com links RSS sem recarregar o Emacs.
Para fazer isso, pressione Alt + X para abrir o buffer de comando. Digite elfeed-add-feed e pressione Enter. O Elfeed pedirá que você forneça a URL do feed que deseja carregar.

No meu caso, estou fornecendo nossa URL de feed ao Elfeed para receber atualizações diárias sobre os últimos artigos de tecnologia.
Copio a URL do feed e pressiono Ctrl + Y no prompt de URL para colar o link no Emacs. Uma vez colado, só preciso pressionar Enter para confirmar a URL do feed no Elfeed.

Leia também: Como renomear arquivos facilmente no Linux
Como marcar e filtrar feeds automaticamente no Emacs
Além de listar e visualizar feeds RSS, o Elfeed também pode realizar uma série de funções que permitirão que você ajuste finamente sua lista de feeds.
Uma dessas funções interessantes é a marcação automática. Esse recurso permite que você marque imediatamente entradas RSS que vieram de um feed específico.
Por exemplo, se você tiver vários feeds sobre um determinado tópico, pode definir para que todos tenham a mesma tag, facilitando e tornando intuitivo a classificação de vários feeds na tela de resumo.
Para fazer isso, edite os feeds RSS em seu arquivo init.el. Dê uma olhada neste breve exemplo.
(setq elfeed-feeds
'("https://feeds.maketecheasier.com/MakeTechEasier" tech news)
("https://solar.lowtechmagazine.com/feeds/all-en.atom.xml" tech)
("https://old.reddit.com/r/f1technical.rss" tech f1))Para marcar automaticamente um feed RSS, você precisa fazer duas coisas no formato padrão de elfeed-feeds:
- Colocar o link do feed entre parênteses. Isso informa ao
elfeed-feedsque esta entrada específica na variável tem várias partes. - Fornecer uma palavra que atuará como sua tag para aquele link específico. Você pode incluir várias tags, desde que as separe cada uma com um espaço.

Filtrando seu feed RSS no Elfeed
Essas tags funcionam em conjunto com o poderoso sistema de filtragem do Elfeed. Isso permite que você agrupe seus feeds RSS com base apenas nas tags.
Por exemplo, se você tiver feeds RSS marcados como “notícias”, “notícias de tecnologia” e “notícias de jogos”, o Elfeed permite que você agrupe todos eles sob a tag “notícias”.
Para filtrar sua lista de feeds, pressione S enquanto estiver no Elfeed para abrir o prompt de filtro do Elfeed. Por padrão, o prompt contém o seguinte:
@6-months-ago +unread- O símbolo @ indica um intervalo de datas. Isso pode ser uma data absoluta, como “2022-02-22” ou uma relativa, como “3-dias-atras”.
- O símbolo “ + “ é um operador de tag que informa ao Elfeed para incluir explicitamente todos os feeds que têm essa tag.

Com isso em mente, considere o seguinte feed RSS.
[0](setq elfeed-feeds
[1] '("https://feeds.maketecheasier.com/MakeTechEasier" tech news)
[2]("https://solar.lowtechmagazine.com/feeds/all-en.atom.xml" tech)
[3]("https://old.reddit.com/r/f1technical.rss" tech f1)
[4]("https://www.autosport.com/rss/f1/photos/" f1)
[5]("https://www.philstar.com/rss/world" news)))Para filtrar a tag “tecnologia”, digite “+tech” no prompt de filtro do Elfeed para exibir os três primeiros links no buffer de resumo do Elfeed. No entanto, se você adicionar “+news”, o Elfeed exibirá a primeira e a quinta tag.
Sabendo disso, você pode ser mais específico com sua lógica de filtragem. Por exemplo, se você quiser incluir todos os links de tecnologia, mas sem “f1”, pode digitar o seguinte:
+tech -f1Como marcar feeds automaticamente com base na URL
Outra maneira de marcar automaticamente entradas RSS no Elfeed é classificá-las com base na URL. Isso é útil se você estiver usando o Elfeed para se inscrever em feeds RSS que têm uma estrutura de URL semelhante.

Para fazer isso, use o elfeed-new-entry-hook do Elfeed. Esta é uma função de hook que executa um comando personalizado com base em condições específicas. Esta função será executada toda vez que uma entrada for adicionada usando o comando elfeed-add-feed.
Você pode usar a função elfeed-make-tagger dentro desse hook. Esta é uma função geral que marca links com base nas opções que você define. Assim, combinar as duas funções para criar marcação automática pode parecer algo assim:
(add-hook 'elfeed-new-entry-hook
(elfeed-make-tagger :feed-url"medium\.com"
:add '(medium)))
Essa função irá marcar automaticamente qualquer link que contiver o slug “medium.com.”
Você também pode ser mais específico com as opções que define com elfeed-make-tagger. Por exemplo, você pode marcar um feed com base na URL e filtrar entradas que são mais antigas que três meses:
(add-hook 'elfeed-new-entry-hook
(elfeed-make-tagger :feed-url"medium\.com"
:before"3 months ago"
:add 'medium))Como criar cores e fontes personalizadas para tags
Além da marcação automática, você também pode personalizar como o Elfeed se parece com base na tag que está lidando. Isso é útil se você quiser que feeds com uma tag específica se destaquem.

Para fazer isso, você precisa redefinir a função elfeed-search-face-alist. Este é o comando que o Elfeed usa para mudar a aparência do buffer de resumo. Assim, para redefinir essa função, você pode usar as funções defface e push:
- A função defface cria um novo “face” para o Emacs. O “face” é um conjunto de valores que pode conter tanto fontes de caracteres quanto cores de fundo.
- A função push, por outro lado, anexa uma definição a um comando existente no Emacs.
Com isso em mente, você pode combinar essas funções para criar um “face” personalizado para o Elfeed. Por exemplo, este é um face personalizado que destaca a tag f1 em vermelho.
(defface elfeed-face-tag-f1
'((t :foreground"#f00"))
"Esta é uma face de fonte personalizada para a tag F1 no Elfeed.")
(push '(f1 elfeed-face-tag-f1)
elfeed-search-face-alist)Parabéns! Agora você sabe como usar o Emacs como um leitor de RSS com Elfeed. Além disso, você também tem uma ideia básica de como personalizar e automatizar o Elfeed para atender às necessidades dos seus feeds RSS.
Se toda essa discussão fez você pensar no que mais pode fazer com o Emacs, você pode conferir nosso artigo sobre os melhores pacotes de produtividade para Emacs.
Leia também: Como corrigir o problema de não conseguir digitar no terminal no Linux
Perguntas frequentes
1. Como posso excluir um feed no Elfeed?
Você pode remover um feed de duas maneiras: excluindo a entrada do feed em seu arquivo init.el ou usando a função de personalização do Emacs para removê-lo.
Para o primeiro, remover um feed é apenas uma questão de excluir a URL do feed na sua variável elfeed-feeds. Para o último, no entanto, você precisa pressionar Alt + X para abrir o buffer de comando. A partir daqui, você precisa digitar customize. Isso abrirá a janela de personalização do Emacs.
A partir daí, digite elfeed-feeds na caixa de pesquisa. Isso trará todos os feeds aos quais você está atualmente inscrito.
Isso permite que você exclua um feed clicando nos botões DEL ao lado do link do feed. Uma vez feito, você pode clicar nos botões Aplicar e Salvar abaixo da barra de pesquisa para atualizar seu feed.
2. O que posso fazer se adicionar todos os meus feeds no Elfeed e eles não atualizarem?
O Elfeed não atualiza automaticamente os links dos feeds para você. Para buscar as últimas entradas em seus feeds, pressione Shift + G para iniciar uma atualização em todos os feeds atualmente inscritos.
Além disso, se você quiser atualizar apenas um feed RSS específico, execute a função elfeed-update-feed.
3. Minhas tags automáticas não parecem funcionar. Como posso resolver isso?
Isso provavelmente acontece porque você tem tags conflitantes para o mesmo feed RSS. Isso pode acontecer se você incluiu a mesma URL de feed tanto em seus feeds manuais quanto automáticos.
Para resolver isso, você precisa remover sua entrada manual em seu arquivo init.el ou a entrada de feed automática no buffer de personalização do Emacs.