Re-arquivar a árvore de tópicos no novo arquivo de modo organizacional?

13

Estou apenas começando com o modo organizacional e imagino um fluxo de trabalho no qual capturo novas tarefas e notas em um arquivo "caixa de entrada" do modo organizacional. Para tarefas que crescem em projetos, eu imagino refilá-las em um novo arquivo de modo organizacional que é adicionado à minha agenda.

O manual do modo organizacional descreve o refil de uma árvore principalmente da maneira que estou procurando, exceto pelo fato de que apenas parece permitir refil a seção dentro do mesmo arquivo. O que eu gostaria de fazer é pegar essa árvore e refilá-la em um novo arquivo (e, de preferência, adicionar o arquivo à lista de agendas).

Posso copiar e colar em um novo buffer e adicionar o novo buffer à agenda, mas parece que esse é o tipo de coisa para a qual os deuses do modo organizacional teriam um atalho.

Pedro
fonte
Por que você deseja criar um novo arquivo para cada projeto? Existem projetos pequenos e grandes, então você pode ter um arquivo projects.org como uma espécie de arquivo de incubação que contém todos os projetos inicialmente e, se um projeto crescer tanto que ele mereça seu próprio arquivo, você poderá criá-lo manualmente.
Tom
Obrigado Tom. Esse é o meu pensamento. Grandes coisas mudam para seu próprio arquivo quando ficam grandes demais. Encontrei um sinalizador que me permite refilar para outro arquivo na minha lista de agendas, mas apenas em um cabeçalho existente. Eu vou fazer um pouco mais cavando para ver se eu pode simplesmente adicionar uma árvore para um novo arquivo org vazio ...
Peter
1
@ Peter, você pode refilar qualquer árvore em outro arquivo. mas primeiro você precisa adicionar arquivo de destinoorg-agenda-files
kindahero
@ kindahero: Essa é uma opção padrão? Eu tenho um arquivo "test1.org" com uma árvore que desejo mover para um arquivo vazio "test2.org" que foi salvo e adicionado à agenda com Cc [. Os únicos destinos de refil que ele me fornece como opções de conclusão são de "test1.org".
Peter

Respostas:

1

Aqui está uma função elisp rápida e imunda que pode ser modificada como você desejar.

(desativar subárvore para novo arquivo ()
  (interativo)
  "desleixadamente ajuda a mover uma subárvore organizacional para um novo arquivo"
  (subárvore-cópia-organização, n t)
;;; Esta declaração setq longa obtém o título do primeiro cabeçalho, para usar como um nome de arquivo padrão para o novo arquivo .org.
(setq primeiro cabeçalho
  (com temp-buffer
    (puxão)
    (início do buffer)
    (pesquisa para a frente "" nil nil 1)
    (setq title-start (point))
    (fim da linha visual)
    (final do título do setq (ponto))
    (setq primeiro cabeçalho (buffer-substring title-start title-end))
  )))
(setq def-filename (concat primeiro cabeçalho ".org"))
(let ((insira o diretório padrão t)))
  (encontre-arquivo-outra-janela  
    (read-file-name "Mova a subárvore para o arquivo:" def-filename)
  )))
(subárvore-colar-org)
;;; esse comando final adiciona o novo arquivo .org à agenda
(org-agenda-arquivo-para-frente)
)

Você pode tentar rapidamente esse código colando no *scratch*buffer e pressionando Ctrl+ j. Em seguida, vá para uma subárvore em um arquivo de modo organizacional e pressione Alt+ xpara M-x subtree-to-new-file.

Se você deseja que ele esteja no local toda vez que você usa o emacs e não é familiar com o elisp, o mais fácil pode ser também colar esse código em algum lugar do seu .emacsarquivo de configuração e salvá-lo. Você também pode adicionar uma linha antes ou depois da função para ativar a combinação de teclas. A maneira mais fácil de fazer isso (mas talvez não o melhor) seria algo como: (global-set-key "\C-xw" 'subtree-to-new-file).

Brian Z
fonte
Bem, eu realmente segui em outra direção a partir daqui, mas isso faz o truque. Eu perguntei isso há muito tempo, e é ótimo ver uma resposta. Obrigado por postar isso - funciona como um encanto. Talvez eu tente lembrar o que esperava realizar aqui e comece a usar isso.
Peter
5

Adicione também outros buffers de modo organizacional à lista de refil, você precisará adicionar uma linha como a seguir ao seu arquivo .emacs. Tirei isso da configuração de Brent Hansen (veja aqui )

; Targets include this file and any file contributing to the agenda - up to 9 levels deep
(setq org-refile-targets (quote ((nil :maxlevel . 9)
                                 (org-agenda-files :maxlevel . 9))))

Somente (org-agenda-files :maxlevel .9)é realmente necessário, a outra parte define um número máximo de níveis para refil.

Jonathan Leech-Pepin
fonte
1
Isso permite adicionar uma árvore a uma árvore existente em um novo arquivo, mas não a um arquivo em branco recém-adicionado sem conteúdo existente. Eu acho que isso pode ser o mais próximo possível.
Peter
Você também pode adicionar (setq org-refile-allow-creating-parent-nodes (quote confirm))como referenciado no mesmo bloco de código da Bernt (consulte o link acima). Isso permitirá que você os adicione como nós pai, não apenas como subtítulos. Infelizmente, não tenho certeza se é possível adicionar um novo arquivo em movimento.
Jonathan Leech-Pepin
1
Mesmo com essa linha, os arquivos na agenda não aparecem como destinos de refil. Parece que só posso refilar para um cabeçalho existente.
Peter
1
Que tal com (setq org-refile-use-outline-path 'file)? Isso pode tornar os arquivos como destinos.
Brady Trainor