Cómo eliminar la marca de tiempo 'PROGRAMADA' cuando se cambia el estado TODO a ESPERA


7

Tengo algún elemento en un búfer de organización marcado como TODO y que tiene una marca de tiempo programada:

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

¿Cómo hago para que se elimine la marca de tiempo PROGRAMADA cuando muevo este elemento al estado 'en espera'?


¿Por qué quieres que se elimine? ¿Es con el propósito de no aparecer en la agenda?
Malabarba

Me gustaría eliminarlo porque, por defecto, no programo elementos en ESPERA. Pero me gustaría que todavía aparezca en la Agenda si SE PROGRAMÓ porque a veces los programo (por ejemplo, para registrarme después de X días de ESPERA).
mankoff

Sí, es con el propósito de no aparecer en la agenda: en general, es una tarea en la que trabajé y ahora estoy esperando una respuesta a un correo electrónico. Por lo tanto, la transición a 'EN ESPERA' indica que no puedo trabajar en él ahora y quiero que la marca de tiempo programada se vaya (Por supuesto, si luego le agrego una marca de tiempo programada, quiero que vuelva a aparecer).
Nathaniel Flath

Respuestas:


3

Tal vez algo como esto (probado brevemente desde el búfer y la 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)

1

Si está haciendo esto para que los WAITINGelementos no aparezcan en el búfer de la agenda, me gustaría sugerir una alternativa.

Puede definir WAITINGque sea una DONEpalabra clave de tipo. Estos se pueden configurar fácilmente para que no se muestren en la agenda, incluso cuando tienen un horario. Puedes hacer eso globalmente con esto:

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

O por archivo con este encabezado:

#+SEQ_TODO: TODO | WAITING DONE

Luego, para que estos elementos no se muestren en la agenda, solo asegúrese de configurar:

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

Finalmente, si ocasionalmente necesita WAITINGque se muestre un elemento en la agenda, establezca un DEADLINEen él en lugar de un SCHEDULE. La visualización de los plazos está controlada por una variable diferente ( org-agenda-skip-deadline-if-done), por lo que aún se mostrarán en la agenda.


1
Si utiliza el registro finalizado, esto creará un registro finalizado para la espera, lo que puede ser un poco confuso.
ceving
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.