จัดโครงสร้างต้นไม้ใหม่ลงในไฟล์โหมดองค์กรใหม่หรือไม่


13

ฉันเพิ่งเริ่มต้นกับโหมด org และจินตนาการเวิร์กโฟลว์ที่ฉันจับงานใหม่และบันทึกย่อในไฟล์ "inbox" ในโหมด org สำหรับงานที่พัฒนาเป็นโปรเจคฉันจะนึกภาพการรีเฟรชพวกเขาเป็นไฟล์โหมดองค์กรใหม่ซึ่งจะถูกเพิ่มเข้าไปในวาระการประชุมของฉัน

คู่มือ org โหมดอธิบาย refiling ต้นไม้ส่วนใหญ่เป็นวิธีที่ผมกำลังมองหายกเว้นว่ามันเท่านั้นดูเหมือนว่าจะช่วยให้ refiling ส่วนภายในไฟล์เดียวกัน สิ่งที่ฉันต้องการจะทำคือนำทรีนั้นแล้วทำการ refile เป็นไฟล์ใหม่ (จากนั้นให้เพิ่มไฟล์ลงในรายการวาระ)

ฉันสามารถคัดลอก - วางลงในบัฟเฟอร์ใหม่แล้วเพิ่มบัฟเฟอร์ใหม่ลงในวาระการประชุม แต่ดูเหมือนว่านี่เป็นประเภทของสิ่งที่เทพโหมดองค์กรจะมีทางลัดสำหรับ


ทำไมคุณต้องการสร้างไฟล์ใหม่สำหรับทุกโครงการ มีโปรเจ็กต์เล็กและใหญ่ดังนั้นคุณสามารถมีไฟล์ projects.org เป็นไฟล์การบ่มซึ่งประกอบด้วยโครงการทั้งหมดในตอนแรกและถ้าโครงการเติบโตใหญ่จนมันสมควรไฟล์ของตัวเองคุณสามารถสร้างมันเองได้
Tom

ขอบคุณทอม นั่นคือความคิดของฉัน เรื่องใหญ่ย้ายไปที่ไฟล์ของตัวเองเมื่อพวกเขาใหญ่เกินไป ฉันพบการตั้งค่าสถานะที่ทำให้ฉันสามารถ refile ไฟล์อื่นในรายการวาระการประชุมของฉัน แต่ภายใต้หัวเรื่องที่มีอยู่เท่านั้น ฉันจะขุดอีกนิดหน่อยเพื่อดูว่าฉันสามารถเพิ่มต้นไม้ลงในไฟล์ org เปล่าใหม่ได้หรือไม่ ...
Peter

1
@ ปีเตอร์คุณสามารถรีฟิลต้นไม้ใด ๆ เป็นไฟล์อื่นได้ แต่ก่อนอื่นคุณต้องเพิ่มไฟล์ปลายทางorg-agenda-files
kindahero

@kindahero: นั่นเป็นตัวเลือกเริ่มต้นหรือไม่? ฉันมีไฟล์ "test1.org" พร้อมต้นไม้ที่ฉันต้องการย้ายไปยังไฟล์ "test2.org" ที่ว่างเปล่าที่ได้รับการบันทึกและเพิ่มในวาระการประชุมด้วย Cc [ เป้าหมายการ refile เดียวที่ให้ฉันเป็นตัวเลือกความสมบูรณ์นั้นมาจาก "test1.org"
ปีเตอร์

คำตอบ:


1

นี่คือฟังก์ชั่น elisp ที่รวดเร็วและสกปรกที่สามารถแก้ไขได้ตามที่คุณต้องการ

(กำหนดค่าทรีย่อยเป็นไฟล์ใหม่)
  (เชิงโต้ตอบ)
  "ช่วยอย่างลื่นไหลในการย้ายทรีย่อยไปยังไฟล์ใหม่"
  (org-copy-subtree ไม่มี)
;;; คำสั่ง setq แบบยาวนี้ได้รับหัวเรื่องของหัวเรื่องแรกเพื่อใช้เป็นชื่อไฟล์เริ่มต้นสำหรับไฟล์. org ใหม่
(setq ส่วนหัวแรก
  (ที่มีอุณหภูมิบัฟเฟอร์
    (งัด)
    (เริ่มต้นของบัฟเฟอร์)
    (ค้นหาไปข้างหน้า "" ไม่มีศูนย์ 1)
    (setq title-start (จุด))
    (สิ้นสุดของภาพเส้น)
    (setq title-end (จุด))
    (setq first-header (buffer-substring title-start Title-end))
  ))
(setq def-filename (concat first-header ".org"))
(ให้ ((แทรกค่าเริ่มต้นไดเรกทอรี t))
  (ค้นหาไฟล์อื่น ๆ หน้าต่าง  
    (read-file-name "ย้ายทรีย่อยไปยังไฟล์:" def-filename)
  ))
(องค์กรวาง-ทรีย่อย)
;;; คำสั่งสุดท้ายนี้จะเพิ่มไฟล์. org ใหม่ให้กับวาระการประชุม
(องค์กร-วาระไฟล์ไปด้านหน้า)
)

คุณสามารถให้รหัสนี้ลองอย่างรวดเร็วโดยการวางลงใน*scratch*กันชนและกด+Ctrl jจากนั้นไปที่ทรีในแฟ้ม org โหมดและกดAlt+ เพื่อxM-x subtree-to-new-file

หากคุณต้องการให้มันอยู่ในตำแหน่งทุกครั้งที่คุณใช้ emacs และไม่มีความสมบูรณ์ด้วย elisp สิ่งที่ง่ายที่สุดคือการวางโค้ดนี้ไว้ใน.emacsไฟล์กำหนดค่าของคุณและบันทึกไว้ นอกจากนี้คุณยังสามารถเพิ่มบรรทัดก่อนหรือหลังฟังก์ชันเพื่อให้การเชื่อมโยงคีย์ วิธีที่ง่ายที่สุดที่จะทำ ( แต่อาจจะไม่ดีที่สุด) (global-set-key "\C-xw" 'subtree-to-new-file)จะเป็นสิ่งที่ชอบ


ฉันไปอีกทางหนึ่งจากที่นี่จริง ๆ แต่นี่เป็นการหลอกลวง ฉันถามมันเมื่อนานมาแล้วและมันก็ดีที่ได้เห็นคำตอบ ขอบคุณสำหรับการโพสต์สิ่งนี้ - มันใช้งานได้อย่างมีเสน่ห์ บางทีฉันอาจจะพยายามจำสิ่งที่ฉันหวังว่าจะสำเร็จที่นี่และเริ่มใช้สิ่งนี้
ปีเตอร์

5

เพิ่มบัฟเฟอร์โหมด org อื่น ๆ ลงในรายการ refile ด้วยคุณจะต้องเพิ่มบรรทัดดังต่อไปนี้ในไฟล์. emacs ของคุณ ฉันเอาสิ่งนี้จากการกำหนดค่าของ Brent Hansen (ดูที่นี่ )

; Targets include this file and any file contributing to the agenda - up to 9 levels deep
(setq org-refile-targets (quote ((nil :maxlevel . 9)
                                 (org-agenda-files :maxlevel . 9))))

(org-agenda-files :maxlevel .9)จำเป็นเท่านั้นจริง ๆ ส่วนอื่น ๆ กำหนดจำนวนสูงสุดของระดับที่จะรีเฟรช


1
สิ่งนี้ช่วยให้ฉันเพิ่มต้นไม้ลงในต้นไม้ที่มีอยู่ในไฟล์ใหม่ แต่ไม่เพิ่มลงในไฟล์ว่างเปล่าที่เพิ่งเพิ่มใหม่โดยไม่มีเนื้อหาที่มีอยู่ ฉันคิดว่านี่อาจจะใกล้เคียงกับที่ฉันได้รับ
ปีเตอร์

นอกจากนี้คุณยังอาจจะสามารถเพิ่มการ(setq org-refile-allow-creating-parent-nodes (quote confirm))อ้างอิงในรหัสบล็อกเดียวกันจาก Bernt (ดูลิงค์ด้านบน) มันจะช่วยให้คุณสามารถเพิ่มพวกเขาเป็นโหนดผู้ปกครองไม่เพียง แต่เป็นหัวเรื่องย่อย ฉันไม่แน่ใจว่าคุณสามารถเพิ่มไฟล์ใหม่ได้หรือไม่ในระหว่างการเดินทาง
Jonathan Leech-Pepin

1
แม้จะอยู่ในบรรทัดนั้นก็ตามไฟล์ในวาระการประชุมจะไม่แสดงขึ้นมาเป็นเป้าหมายการรีไฟล์ ดูเหมือนว่าฉันจะสามารถรีเฟรชส่วนหัวที่มีอยู่เท่านั้น
ปีเตอร์

1
แล้วด้วย(setq org-refile-use-outline-path 'file)ล่ะ? สิ่งนี้อาจทำให้ไฟล์เป็นเป้าหมาย
Brady Trainor
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.