Listando títulos agendados de um arquivo organizacional ordenado por data

8

Alguns meses atrás, converti meu arquivo init em um arquivo organizacional e, desde então, eu o uso como uma maneira de organizar minhas postagens no blog . Não vou entrar em muitos detalhes aqui, basta dizer que esse é um org-modebuffer enorme , onde muitas manchetes têm SCHEDULEDdata.

Como posso listar todas as manchetes PROGRAMADAS neste arquivo, classificadas por data?

Tudo o que eu gostaria de ver é a data , o status da tarefa e o título . Qualquer outra coisa é supérflua.
Outros requisitos importantes:

  • Fazer não manchetes ommit marcados como DONE.
  • Listar apenas SCHEDULED itens. Não quero ver manchetes que tenham uma data ( <2014-10-04 Sat>) nelas.
  • Use apenas este arquivo. Não pesquise todos os meus arquivos da agenda.

Para maior clareza, pegue o seguinte arquivo.

* DONE Hi guys
  CLOSED: [2014-10-04 Sat 15:18] SCHEDULED: <2014-10-04 Sat>
* Hello me
** Hello everyone <2014-10-05 Sun>
** TODO The world is at my feet
   SCHEDULED: <2014-10-11 Sat>

Eu gostaria de executar um comando que exibisse uma lista mais ou menos assim:

<2014-10-04 Sat> DONE Hi guys
<2014-10-11 Sat> TODO The world is at my feet

Claro, não sou exigente quanto ao formato. O importante é exibir essas informações de maneira conveniente.


Meu intestino me diz que isso tem algo a ver org-agenda, mas não tenho certeza de como chegar lá.

Malabarba
fonte

Respostas:

8

Aqui está uma maneira de fazer isso usando a agenda organizacional. Você pode escrever um comando de agenda personalizado como o abaixo

(setq org-agenda-custom-commands
  '(("i" "Only scheduled entries in init.org sorted by time" agenda ""
     ((org-agenda-files '("~/.emacs.d/init.org"))
      (org-agenda-entry-types '(:scheduled))
      (org-agenda-start-day "2014-01-01")
      (org-agenda-span 'year)
      (org-agenda-include-diary nil)
      (org-agenda-show-all-dates nil))))) 

A maior parte da configuração está acontecendo como settingsparte do comando personalizado (eu estou ignorando a explicação do formato org-agenda-custom-commandspara uma brevidade, consulte C-hvorg-agenda-custom-command RET). A seguir, é apresentada uma breve explicação de cada configuração usada

1) org-agenda-filesé definido como o arquivo init, para que o modo organizacional não procure todos os arquivos da agenda ao criar essa agenda específica.

2) org-agenda-entry-typesestá definido como ': agendado' para restringi-lo apenas aos itens agendados.

3) org-agenda-start-dayÉ o dia seguinte em que você deseja que as entradas sejam listadas. Eu configurei para o início deste ano que você pode definir para o dia do seu primeiro artigo.

4) org-agenda-spaninforma os números de dias a serem incluídos na exibição da agenda. org-agenda-include-diaryestá definido como nulo para evitar entradas do diário na visualização da agenda.

5) Finalmente, as datas vazias são ocultadas, definindo org-agenda-show-all-datescomo nulo.

Agora, quando você executa o comando org-agendano menu do dispatcher, obtém a opção 'i', que pode ser selecionada para obter a visualização desejada.

Resposta antiga

Use o comando org-occurda docstring

(REGEXP da org-ocorrer & REVOCAÇÃO MANTER-ANTERIOR opcional)

Faça uma árvore compacta que mostre todas as correspondências do REGEXP. A árvore mostrará as linhas onde a regexp corresponde e todas as manchetes mais altas acima da correspondência.

Aqui está outra maneira de fazer isso. O uso ocorre com um argumento de prefixo. A partir da doutrina do comando.

(ocorrer REGEXP e NLINES opcionais)

Mostrar todas as linhas no buffer atual que contém uma correspondência para REGEXP. Se uma correspondência se espalhar por várias linhas, todas essas linhas serão mostradas.

Cada linha é exibida com NLINES antes e depois ou -NLINES antes se NLINES for negativo.

Assim, C-u-1M-xocorrer RETPROGRAMADO RETdeve dar o que você deseja

Não sei bem como classificar as manchetes com firmeza.

Iqbal Ansari
fonte
Perfeito, eu sabia que a agenda organizacional tinha que ter uma solução.
Malabarba 5/10