Classificando títulos em um arquivo ORG

10

Estou fazendo anotações em um arquivo de modo organizacional largish que possui a seguinte estrutura:

* Toto, A
Notes about Toto.
* Titi, C
Notes about Titi.
* Tutu, A
Notes about Tutu.

Eu gostaria de classificar o arquivo para que todos os títulos Aprecedam os títulos com B, que por sua vez precedem os títulos com Ce assim por diante. Existe uma maneira automatizada de fazer isso com o modo organizacional?

jch
fonte
4
Você tentou org-sort?
precisa saber é
C-c ^da memória (poderia ser algo semelhante terminando em ^, como C-x C-c ^etc.)
wvxvw

Respostas:

13

Existe um org-sortcomando, mas você pode precisar ajustar sua estrutura de arquivos para obter os resultados desejados (se estou entendendo a pergunta corretamente).

Use org-sort( C-c ^) para classificar entradas no esboço, linhas em uma tabela ou itens em uma lista. Por exemplo, de um cabeçalho, você pode chamar org-sortpara classificar todas as entradas filhas.

No seu exemplo, você deseja classificar as entradas de nível superior em seu esboço, portanto, selecione todas as entradas primeiro. Ao ligar, org-sortvocê será solicitado a saber como classificar: alfabeticamente, por prioridade, e assim por diante.

Estou supondo pelo seu exemplo que o resultado final que você espera é:

* Toto, A
Notes about Toto.
* Tutu, A
Notes about Tutu.
* Titi, C
Notes about Titi.

Ou seja, você deseja classificar em ordem alfabética, mas a letra final tem precedência? Não existe uma classificação interna para isso. Se você alterou as entradas para colocar essa letra de classificação em primeiro lugar (por exemplo A, Toto), uma classificação alfabética normal funcionaria. Outra opção seria mover essas informações para uma propriedade em cada item, para poder classificar por propriedade.

Como @nanny sugeriu nos comentários, org-sorttambém pode chamar uma função de classificação personalizada. Dessa forma, você pode usar o arquivo existente sem precisar alterar todas as entradas. Aqui está uma função de classificação que localiza o texto do título atual e acrescenta o último caractere ao início, para que ele tenha precedência. Você precisará de algo mais robusto se todos os títulos não seguirem exatamente esse padrão.

(defun my-sort-last-letter ()
  (let ((text
         (plist-get
          (cadr (org-element-headline-parser (line-end-position)))
          :raw-value)))
    (concat (string (aref text (- (string-width text) 1))) text)))
glucas
fonte
11
Uma alternativa para alterar o arquivo é usar o [f]unctipo de classificação org-sorte escrever uma função para classificar com base na estrutura existente.
Nanny
Isso resolveu meu problema bastante bem, depois de uma rápida passagem query-replace-regexppara editar os poucos títulos que não seguiam estritamente o formato correto. Muito mais fácil do que converter todos os meus dados em propriedades.
JCH
... ou você pode movê-lo para uma tag, ou seja, "* Toto: A:" depois de ordenação Cc ^ TAGS r
jtgd
11
Só para informar que tenho esse problema exatamente uma vez por ano e que usei sua solução novamente ontem.
jch 22/12/16
0

Estou colocando manchetes com prioridades diferentes em qualquer lugar do arquivo, não estou preocupado com o pedido. Mais tarde, eu os vejo classificados com vistas da agenda . Ao usar tags , os títulos classificados de categorias concretas são visualizados com visualizações personalizadas da agenda .

Sei que essa não é a resposta para como classificar as manchetes em um arquivo , mas visualizar as manchetes com as exibições da agenda é sempre a melhor maneira. Você pode inserir títulos prioritários rapidamente, sem se preocupar com o pedido.

Adam Skobodzinski
fonte