¿Cómo puedo tener una vista de línea de tiempo de agenda de múltiples archivos?

7

Estoy usando el modo org como base de conocimiento, donde cada archivo es para un proyecto específico en el que estoy trabajando.

Cada archivo tiene su propio diario y me encantaría ver un diario agregado de todas las cosas que he hecho.

Esa información está en un montón de .orgarchivos en un directorio específico.

La funcionalidad que estoy buscando es lo que proporciona la línea de tiempo de la agenda, pero solo funciona para un archivo.

¿Hay alguna manera de hacerlo funcionar para todos los archivos org-agenda-files?

edmz
fuente
Esto parece un duplicado de la pregunta Timelineview of all agenda filessobre unix.SE.
elemakil
Tienes razón. ¿Se intentará migrar las preguntas de emacs desde otro SO? (No sé si eso es posible. Podría ayudar con dicho esfuerzo)
edmz
Las preguntas de Emacs de Stack Overflow o Super User son, creo, la política oficial sobre preguntas duplicadas y migración. En mi opinión, esa otra pregunta está bien para migrar aquí, ya que está al límite unix.SEy probablemente podría obtener una mejor respuesta aquí.
purple_arrows
1
@purple_arrows Independientemente de la política, la pregunta que elemakil vinculado a no se puede migrar porque es camino más de 60 días .
itsjeyd
@itsjeyd Doh! Por supuesto. Gracias por señalar eso.
purple_arrows

Respuestas:

2

Según las sugerencias proporcionadas en esta respuesta , el siguiente comando recopila el contenido de todos org-agenda-filesen un solo archivo y luego llama al org-agendacomando que construye la línea de tiempo:

(defun org-agenda-timeline-all (&optional arg)
  (interactive "P")
  (with-temp-buffer
    (dolist (org-agenda-file org-agenda-files)
      (insert-file-contents org-agenda-file nil)
      (end-of-buffer)
      (newline))
    (write-file "/tmp/timeline.org")
    (org-agenda arg "L")))

Para obtener mejores resultados, configure una combinación de teclas personalizada para este comando a través de

(define-key org-mode-map (kbd "C-c t") 'org-agenda-timeline-all)

Además , si desea que el comando considere todos los org-modearchivos que están abiertos actualmente (además de los suyos org-agenda-files, que pueden estar abiertos o no), puede reemplazarlos org-agenda-filescon una llamada (org-files-list)en el código anterior.

itsjeyd
fuente
1
El problema con el uso de org-agenda-files, es que si es un directorio, el código no funcionará.
edmz
@ lal00 - reemplace org-agenda-filescon (org-agenda-files t)para resolver ese problema.
Sridhar Ratnakumar
El otro problema con este enfoque es que le falta la referencia al archivo .org original. Quiero saber de dónde proviene una tarea completa en particular y también poder navegar a ese archivo .org (o su archivo).
Sridhar Ratnakumar
1

No es muy idéntico a la línea de tiempo, pero puede hacer una vista de agenda personalizada que muestre cierto lapso de tiempo en "modo de registro". Al enlazar org-agenda-fileslocalmente en el comando de agenda podemos cargar los archivos que queramos sin estropear el comportamiento normal. Esto hace una semana, cambie org-agenda-spana la cantidad de días que desee.

(defvar org-timeline-files nil
  "The files to be included in `org-timeline-all-files'. Follows
  the same rules as `org-agenda-files'")

(setq org-timeline-files '("/path/to/org/files/"))

(add-to-list 'org-agenda-custom-commands
             '("R" "Week in review"
                agenda ""
                ;; agenda settings
                ((org-agenda-span 'week)
                  (org-agenda-start-on-weekday 0) ;; start on Sunday
                  (org-agenda-overriding-header "Week in Review")
                  (org-agenda-files 
                    (let ((org-agenda-files org-timeline-files))
                          (org-agenda-files nil 'ifmode)))
                  (org-agenda-start-with-log-mode t)
                  (org-agenda-log-mode-items '(clock state))
                  (org-agenda-archives-mode t) ; include archive files
                )))
erikstokes
fuente