ORG-MODE - Acionar o status TODO em uma determinada data?


9

Em vez de verificar manualmente um arquivo ou calendário de tickler todas as manhãs, como posso criar um gatilho que definirá o status de um item para TODO em uma determinada data?

Respostas:


5

Não é uma resposta direta, mas você pode usar o suporte da Org para prazos e programação.

Você pode criar seus itens do TODO e dar a eles uma data agendada, que em Org significa a data em que você planeja executar a tarefa - e quando ela deve começar a aparecer na sua agenda. (Se você ainda não estiver usando as visualizações da agenda organizacional, vale a pena investigar!)

Dependendo das suas necessidades, você também pode atribuir um prazo. Por exemplo: crie um TODO na sexta-feira, agende-o para a quarta-feira seguinte quando você realmente quiser vê-lo; e forneça um prazo para a sexta-feira seguinte, pela qual deve ser concluído.


7

Aqui está uma coisa que eu uso todas as manhãs para vasculhar todo o meu trabalho e alterar a data para hoje, se estiver vencida, e alterá-la da próxima ação para ativa, se vencer hoje. É uma solução personalizada para o meu próprio calendário que uso há um ano; portanto, sem dúvida, você precisará de alguma personalização da sua parte. Minha lembrança é que houve uma mudança no org-deadlineda org-modeversão 7 e 8, e eu pode estar usando uma versão anterior na minha configuração. A versão atual pode precisar de um argumento adicional ou algo assim - se precisar de ajuda adicional, entre em contato e eu trabalharei nos próximos dias, conforme o tempo permitir.

O regex que eu uso contempla os títulos com duas estrelas e estará à esquerda do buffer. Sua própria configuração provavelmente exigirá uma modificação da regex.

(defun org-carry-forward-uncompleted-tasks ()
"Carry forward uncompleted tasks."
(interactive)
  (save-excursion
    (goto-char (point-max))
    (while (re-search-backward "^\\*\\* Active" nil t)
      (unless (org-at-heading-p)
        (org-back-to-heading t))
      (let* (
          (element (org-element-at-point))
          (todo-state (org-element-property :todo-keyword element))
          (deadline (org-element-property :deadline element))
          (deadline-time-stamp
            (when deadline
              (time-to-days
                (org-time-string-to-time
                  (org-element-property :raw-value deadline)))))
          (today (time-to-days (current-time))) )
        (when
            (and
              deadline-time-stamp
              (> today deadline-time-stamp) ;; deadline is overdue
              (string= todo-state "Active") ) ;; todo-state equals "X"
          (org-deadline nil ".") )))))

(defun org-make-active-today ()
"Change task from Next Action to Active if deadline is less than or equal to today."
(interactive)
  (save-excursion
    (goto-char (point-max))
    (while (re-search-backward "^\\*\\* Next Action" nil t)
      (unless (org-at-heading-p)
        (org-back-to-heading t))
      (let* (
          (element (org-element-at-point))
          (todo-state (org-element-property :todo-keyword element))
          (deadline (org-element-property :deadline element))
          (deadline-time-stamp
            (when deadline
              (time-to-days
                (org-time-string-to-time
                  (org-element-property :raw-value deadline) ))))
          (today (time-to-days (current-time))) )
        (when
            (and
              deadline-time-stamp
              (>= today deadline-time-stamp) ;; deadline less than or equal to today
              (string= todo-state "Next Action")) ;; todo-state equals "X"
          (org-deadline nil ".")
          (org-todo "Active") )))))
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.