Como remover o carimbo de data / hora 'AGENDADO' ao alterar o estado TODO para WAITING

7

Eu tenho algum item em um buffer organizacional marcado como TODO e com um carimbo de data / hora agendado:

* TODO do something
  SCHEDULED: <2014-11-02 Sun>

Como faço para remover o carimbo de data / hora agendado quando movo este item para o estado 'em espera'?

Nathaniel Flath
fonte
Por que você deseja que ele seja removido? É com o objetivo de não aparecer na agenda?
Malabarba 27/10/2014
Gostaria de removê-lo porque, por padrão, não agendamento de itens EM ESPERA. Mas eu gostaria que ele ainda aparecesse na Agenda se AGENDADO, porque às vezes eu os agito (por exemplo, para fazer check-in após X dias de ESPERA).
27614 Mankoff
Sim, é com o objetivo de não aparecer na agenda - geralmente é uma tarefa em que trabalhei e agora estou aguardando uma resposta para um email. Portanto, fazer a transição para 'WAITING' indica que não posso trabalhar agora e quero que o carimbo de data e hora programado saia (é claro, se eu adicionar mais tarde um carimbo de data e hora programado, quero que ele apareça novamente).
Nathaniel Flath 27/10/2014

Respostas:

3

Talvez algo assim (testado brevemente no buffer e na agenda)

(defun rasmus/remove-schedule ()
  "Remove SCHEDULED-cookie is switching state to WAITING."
  (save-excursion
(and (equal (org-get-todo-state) "WAITING")
     (org-get-scheduled-time (point))
     (when (search-forward-regexp org-scheduled-time-regexp nil t)
       (or (delete-region (match-beginning 0) (match-end 0)) t))
     (get-buffer "*Org Agenda*")
     (with-current-buffer "*Org Agenda*"
       (org-agenda-redo)))))

(add-hook 'org-after-todo-state-change-hook
     'rasmus/remove-schedule)
rasmus
fonte
1

Se você estiver fazendo isso para que os WAITINGitens não apareçam no buffer da agenda, gostaria de sugerir uma alternativa.

Você pode definir WAITINGcomo uma DONEpalavra-chave -type. Eles podem ser facilmente configurados para não serem exibidos na agenda, mesmo quando eles têm um cronograma. Você pode fazer isso globalmente com isso:

(setq org-todo-keywords '((sequence "TODO" "|" "WAITING" "DONE")))

Ou por arquivo com este cabeçalho:

#+SEQ_TODO: TODO | WAITING DONE

Para que esses itens não sejam exibidos na agenda, apenas defina:

(setq org-agenda-skip-scheduled-if-done t)

Finalmente, se você precisar ocasionalmente de um WAITINGitem a ser exibido na agenda, defina um DEADLINEnele em vez de a SCHEDULE. A exibição dos prazos é controlada por uma variável diferente ( org-agenda-skip-deadline-if-done), portanto eles ainda serão exibidos na agenda.

Malabarba
fonte
11
Se você usar o log concluído, isso criará um log concluído para aguardar, o que pode ser um pouco confuso.
ceving 04/12/19