¿Hay una manera simple de usar todos los archivos org referenciados en un archivo principal para la tabla de reloj del modo org


9

Estoy usando el modo org para hacer un seguimiento del tiempo que paso en varios proyectos. Tengo un archivo de organización principal y dos más para dos grandes proyectos en los que estoy trabajando. Los tres están listados en org-agenda-files. Creé una tabla de reloj en el archivo de organización principal y configuré

:scope agenda-with-archives

en el encabezado de la tabla de reloj para resumir el tiempo empleado. Todo esto funciona bien.

Sin embargo, también tengo algunos proyectos más pequeños que también tienen un seguimiento del tiempo en su propio archivo de organización (ubicado en el subdirectorio que contiene todo sobre esos proyectos), y también me gustaría hacer un seguimiento del tiempo en ellos.

Por supuesto, podría agregar esos archivos org-agenda-files, pero eso significaría actualizar mi .emacscada vez que empiezo un nuevo proyecto pequeño. No es el fin del mundo, por supuesto, pero dado que ya tengo un enlace a los archivos de proyecto pequeño en el archivo de organización principal (ver el ejemplo a continuación), me gustaría establecer :scopealgo como

:scope agenda-with-archives linked-org-files

Idealmente (aunque todavía no lo estoy usando) incluir archivos de esos pequeños proyectos sería genial (algo así :scope linked-org-files-with-archives).

Aquí hay un ejemplo de cómo está estructurado mi archivo de organización principal:

* Small project 1
  See file:~/Projects/Project 1/notes_project_1.org for more details.
* Small project 2
  See file:~/Projects/Project 2/notes_project_2.org.
** DONE Some small task I can do quickly
   CLOCK: [2014-12-05 vr 12:19]--[2014-12-05 vr 12:40] =>  0:21
   Some info on the small task.

¿Alguna idea sobre cómo lograr esto?

Respuestas:


6

Puedes usar

:scope some-function

donde la función some-functiondevuelve la lista de archivos requerida. Por ejemplo:

(defun some-function () org-agenda-files)

o

(defun some-function ()
  (append org-agenda-files
          (file-expand-wildcards "your-path/*.org")))

(defun some-function () org-agenda-files)with :scope (some-function)no funciona para mí y no se menciona en los documentos. ¿Sigue siendo compatible?
avv

¿Qué versión de org-mode usas? ¿Se genera algún error?
artscan

1
Lisp error: (wrong-type-argument stringp some-function). Modo Org versión 9.0.7
avv

Editado para corregir la línea del alcance, eso debería corregir los errores de lisp.
NickD

3

He tenido problemas con esto también.

La respuesta de @ artscan me señaló en la dirección correcta, pero devuelve un argument typeerror. Dejar los paréntesis resuelve el problema.

Comentaría la respuesta de artscan, pero no tengo suficiente reputación.

Para resumir, entonces, esto es lo que uso:

En la tabla, proporcionar :scope efls/org-files-productive. Sin paréntesis. Defina una función simple para devolver una cadena de archivos.

Por ejemplo, uso algo como esto:

(defun efls/org-files-productive ()
 "Return productive org files."
 '("/Users/efls/org/file1.org" "/Users/efls/org/file2.org" "/Users/efls/org/file3.org"))

Se podría, por supuesto, también simplemente escriba una lista de archivos después :scope, pero entonces hacer paréntesis que encierran necesidad de la lista: scope: ("Users/efls/org/file1.org" "…").

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.