มีวิธีง่ายๆในการใช้ไฟล์ org ทั้งหมดที่อ้างอิงในไฟล์หลักสำหรับตารางนาฬิกาโหมด org หรือไม่


9

ฉันกำลังใช้โหมดองค์กรเพื่อติดตามเวลาที่ใช้ในโครงการต่างๆ ฉันมีไฟล์ org หลักหนึ่งไฟล์และอีกสองไฟล์สำหรับโครงการขนาดใหญ่ที่ฉันกำลังดำเนินการอยู่ org-agenda-filesทั้งสามมีการระบุไว้ใน ฉันสร้างตารางนาฬิกาในไฟล์ org หลักและตั้งค่า

:scope agenda-with-archives

ในส่วนหัวนาฬิกาเพื่อสรุปเวลาที่ใช้ไป ทั้งหมดนี้ทำงานได้ดี

อย่างไรก็ตามฉันยังมีโครงการขนาดเล็กอีกสองสามแห่งที่มีเวลาติดตามในไฟล์องค์กรของตัวเอง (อยู่ในไดเรกทอรีย่อยที่มีทุกอย่างเกี่ยวกับโครงการเหล่านั้น) และฉันต้องการติดตามเวลาในโครงการเหล่านั้นด้วย

แน่นอนว่าฉันสามารถเพิ่มไฟล์เหล่านั้นลงไปorg-agenda-filesได้ แต่นั่นหมายถึงการอัปเดต.emacsทุกครั้งที่ฉันเริ่มโครงการขนาดเล็กใหม่ ไม่ใช่จุดจบของโลก แต่เนื่องจากฉันมีลิงก์ไปยังไฟล์โครงการขนาดเล็กในไฟล์ org หลัก (ดูตัวอย่างด้านล่าง) แล้วฉันต้องการตั้งค่าเป็น:scopeบางอย่างเช่น

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

เป็นการดี (แม้ว่าฉันไม่ได้ใช้สิ่งนั้น) รวมถึงไฟล์เก็บถาวรของโครงการขนาดเล็กเหล่านั้นจะดี (เช่น:scope linked-org-files-with-archives)

นี่เป็นตัวอย่างของโครงสร้างไฟล์หลักของฉัน:

* 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.

ความคิดเกี่ยวกับวิธีการบรรลุเป้าหมายนี้?

คำตอบ:


6

คุณสามารถใช้ได้

:scope some-function

โดยที่ function some-functionส่งคืนรายการไฟล์ที่ต้องการ ตัวอย่างเช่น:

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

หรือ

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

(defun some-function () org-agenda-files)ด้วย:scope (some-function)ไม่ทำงานสำหรับฉันและไม่ได้กล่าวถึงในเอกสาร มันยังคงรองรับ?
avv

คุณใช้โหมด org เวอร์ชันใด เกิดข้อผิดพลาดใด ๆ
artscan

1
Lisp error: (wrong-type-argument stringp some-function). โหมด Org รุ่น 9.0.7
avv

แก้ไขเพื่อแก้ไขเส้นขอบเขต - ที่ควรแก้ไขข้อผิดพลาดเสียงกระเพื่อม
NickD

3

ฉันมีปัญหากับสิ่งนี้เช่นกัน

@ คำตอบ artscan ของชี้ให้ฉันในทิศทางที่ถูกต้อง แต่กลับargument typeข้อผิดพลาด การปล่อยวงเล็บเป็นการแก้ปัญหา

ฉันแสดงความคิดเห็นในคำตอบของ artscan แต่ฉันไม่มีชื่อเสียงเพียงพอ

เพื่อสรุปจากนั้นนี่คือสิ่งที่ฉันใช้:

:scope efls/org-files-productiveในตารางให้ ไม่มีวงเล็บ กำหนดฟังก์ชั่นง่าย ๆ เพื่อส่งคืนสตริงของไฟล์

ตัวอย่างเช่นฉันใช้สิ่งนี้:

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

คุณสามารถของหลักสูตรก็แค่พิมพ์ในรายชื่อของไฟล์หลังจากที่:scopeแต่แล้วคุณทำscope: ("Users/efls/org/file1.org" "…")วงเล็บจำเป็นต้องปิดล้อมรายการ:

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.