Estou tentando escrever uma função que pegue um cabeçalho e refile-o para um local específico. O documento para org-refile
é
(org-refile &optional GOTO DEFAULT-BUFFER RFLOC MSG)
e RFLOC
é
RFLOC can be a refile location obtained in a different way.
mas não tenho idéia do que seria uma "maneira diferente" e estou pesquisando no Google por meio dia e não vejo nenhum exemplo. Conheço o arquivo e o título do destino, mas não conheço a sintaxe para transformá-lo no que ele deseja. O mais próximo que cheguei é:
(org-refile nil #("~/Org/bookmarks.org")
o que me solicitará a manchete, mas é claro que não quero que ela me solicite, quero fornecê-la.
Eu sou novo no elisp e adivinhei todas as sintaxes em que consigo pensar. Alguém sabe como expressar isso?
(let* ( (org-archive-location "/path/to/org-file::* NAME_OF_HEADING") (org-archive-save-context-info nil)) (org-archive-subtree))
provavelmente não colocarei isso em uma resposta desde que você perguntouorg-refile
, mas o snippet faz o trabalho muito bem. Os dois pontos são necessários. Eu uso isso o tempo todo e até criei uma versão personalizadaorg-archive-subtree
para suprimir a mensagem para que eu não tenha centenas delas quando reorganizo automaticamente meu arquivo organizacional inteiro.Respostas:
Eu me perguntei como deveria ser o RFLOC antes, mas nunca investiguei. Observando o código-fonte da organização, ele deve ser uma lista que consiste em:
Eu não experimentei o
re
elemento, mas aqui está uma função simples que seráorg-refile
chamada com um RFLOC construído a partir de um determinado FILE e HEADING:Isso abre o arquivo de destino e usa uma função organizacional para encontrar a posição do título de destino e cria a lista RFLOC para a qual passar
org-refile
.fonte
Muito obrigado @glucas, trabalhei sua solução na minha final. A principal informação era conhecer o formato do RFLOC. Eu experimentei fornecer uma lista de nome de arquivo e texto do título, mas estava faltando esses outros elementos e o valor extra. Foi assim que acabei:
O documento para
save-excursion
afirma que retornaremos ao local em que começamos, mas não parece funcionar dessa maneira. Isso me deixa no destino de destino, o que pode ser adequado para o generalrefile-to
, mas eu queria que ele movesse a linha e permanecesse onde estava, para salvar e restaurarrefile-to-bookmark
.O fluxo de trabalho para o qual isso se destina é que eu começo com uma lista de links HTML que vêm do meu script para ler feeds RSS. Originalmente, tive o script para produzir arquivos maildir para o mu4e, mas me vi seguindo os links para um navegador de qualquer maneira e depois marquei os de interesse, então agora apenas gero uma lista de
** [[uri][title]]
linhas. Depois de seguir o link do emacs para o navegador uzbl, em vez de marcar (que gera a mesma forma de linhas), uso esse comando para mover o link para meu bookmarks.org após definir as tags. Um pouco mais rápido, pois também uso os comandos org speed,t
para marcar eb
para este comando. Estou feliz agora e adoro aprender mais elisp!fonte
re
elemento do RFLOC será ignorado, até onde eu sei. É usado em algumas outras funções no org.el que lidam com locais de destino.refile-to
função para retorno à posição original, adicionando isso no final, após olet
:(switch-to-buffer (current-buffer))
. Parece que não deveria fazer nada, mas funciona para mim.-push
e-goto
por isso. Parece estranho que você permaneça em outro buffer e, no entanto, ele considera o buffer atual como o anterior.