Làm cách nào tôi có thể có chế độ xem dòng thời gian chương trình nghị sự của nhiều tệp?


7

Tôi đang sử dụng chế độ org làm cơ sở tri thức, trong đó mỗi tệp dành cho một dự án cụ thể mà tôi đang làm việc.

Mỗi tệp có một tạp chí riêng và tôi rất thích xem một tạp chí tổng hợp về tất cả những điều tôi đã làm.

Thông tin đó nằm trong một loạt các .orgtập tin trong một thư mục cụ thể.

Chức năng tôi đang tìm kiếm là những gì dòng thời gian chương trình nghị sự cung cấp, nhưng nó chỉ hoạt động cho một tệp.

Có cách nào để làm cho nó hoạt động cho tất cả các tập tin trong org-agenda-files?


Điều này có vẻ như một bản sao cho câu hỏi Timelineview of all agenda filestrên unix.SE.
elemakil

Bạn đúng rồi. Sẽ có một nỗ lực để cố gắng di chuyển các câu hỏi emacs từ SO khác? (Tôi không biết nếu điều đó là có thể. Tôi có thể giúp với nỗ lực đã nói)
edmz

Emacs câu hỏi từ Stack Overflow hoặc Super User là, tôi nghĩ, chính sách chính thức về các câu hỏi và di chuyển trùng lặp. IMO, câu hỏi khác là tốt cho việc di chuyển ở đây vì nó có đường biên unix.SEvà có thể có câu trả lời tốt hơn ở đây.
Purple_arrows

1
@purple_arrows Bất kể chính sách, câu hỏi mà elemakil liên quan đến không thể di chuyển vì nó là cách lớn hơn 60 ngày .
itjeyd

@itsjeyd Doh! Tất nhiên. Cảm ơn đã chỉ ra rằng.
Purple_arrows

Câu trả lời:


2

Dựa trên các gợi ý được cung cấp trong câu trả lời này , lệnh sau sẽ thu thập nội dung của tất cả org-agenda-filestrong một tệp và sau đó gọi org-agendalệnh xây dựng dòng thời gian:

(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")))

Để có kết quả tốt nhất, hãy thiết lập ràng buộc khóa tùy chỉnh cho lệnh này thông qua

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

Ngoài ra , nếu bạn muốn lệnh xem xét tất cả org-modecác tệp hiện đang mở (ngoài ra org-agenda-files, tệp này có thể mở hoặc không mở), bạn có thể thay thế org-agenda-filesbằng một cuộc gọi đến (org-files-list)trong mã ở trên.


1
vấn đề với việc sử dụng tập tin org-agenda, là nếu đó là một thư mục, mã sẽ không hoạt động.
edmz

@ lal00 - thay thế org-agenda-filesbằng (org-agenda-files t)để giải quyết vấn đề đó.
Sridhar Ratnakumar

Vấn đề khác với cách tiếp cận này là bạn thiếu tham chiếu trở lại tệp .org ban đầu. Tôi muốn cả hai biết một nhiệm vụ hoàn thành cụ thể đến từ đâu và cũng có thể điều hướng đến tệp .org (hoặc kho lưu trữ của nó).
Sridhar Ratnakumar

1

Nó không hoàn toàn giống với dòng thời gian, nhưng bạn có thể tạo chế độ xem chương trình nghị sự tùy chỉnh hiển thị một khoảng thời gian trong "chế độ nhật ký". Bằng cách ràng buộc org-agenda-filescục bộ trong lệnh chương trình nghị sự, chúng tôi có thể tải bất kỳ tệp nào chúng tôi muốn mà không làm rối hành vi thông thường. Điều này không một tuần, thay đổi org-agenda-spansố ngày bạn muốn.

(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
                )))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.