Đây là công việc của org-element
, công việc tuyệt vời (!) Của Nicolas Goaziou . Nếu bạn không biết org-element
và bạn quan tâm đến sự phát triển tối đa thì đây là điều bạn nên xem xét. Nó không chỉ là một công cụ tuyệt vời để làm việc, nó cũng đang ngày càng tăng sức mạnh org
. Đáng chú ý nhất là org-export
( ox
), nhưng cũng có chức năng trong ví dụ org.el
.
Để có được "đại diện không thể thiếu" của một yếu tố theo điểm sử dụng org-element-at-point
hoặc org-element-context
. Để có được đại diện của bộ đệm sử dụng org-element-parse-buffer
. Trong khi không liên quan trực tiếp ở đây, hãy lưu ý org-element-map
.
Để đi từ "đại diện lisp" của một element
, secondary string
hoặc parse tree
trở lại "Org cú pháp đại diện" sử dụng org-element-interpret-data
. Đây là cách (duy nhất) để biến "biểu diễn lisp" thành "biểu diễn cú pháp Org". Bạn có thể sẽ không muốn viết đại diện này bằng tay, mặc dù. Đây là một đại diện khá nhỏ của tiêu đề đầu tiên của bạn
(org-element-interpret-data
'(headline (:title "One headline" :level 1)
(property-drawer nil ((node-property (:key "property1" :value "value1"))
(node-property (:key "property2" :value "value2"))))
(#("Some much longer content."))))
Nếu bạn phải thêm cả hai tiêu đề, hãy thêm parse tree
(org-element-interpret-data
'(org-data nil (headline (:title "One headline" :level 1)
(property-drawer nil ((node-property (:key "property1" :value "value1"))
(node-property (:key "property2" :value "value2"))))
(#("Some much longer content.")))
(headline (:title "Second headline" :level 1)
(property-drawer nil ((node-property (:key "property1" :value "value1"))
(node-property (:key "property2" :value "value2"))))
(#("More much longer content.")))))
Bạn có thể thấy rằng thư viện của Thorsten Jolitzorg-dp
sẽ hỗ trợ bạn trong những nỗ lực như vậy ( trên MELPA ).
Thư viện org-dp
có nghĩa là để lập trình ở cấp độ cục bộ, tức là không có bất kỳ thông tin (theo ngữ cảnh) nào ngoại trừ những thông tin về phần tử được phân tích cú pháp tại điểm. Nó được thiết kế để làm cho việc sử dụng khung trình phân tích cú pháp / trình thông dịch Org ở cấp độ địa phương thuận tiện như sử dụng nó ở cấp độ toàn cầu (với một cây phân tích cú pháp hoàn chỉnh được tạo ra
org-element-parse-buffer
)
Một mô tả đầy đủ hơn của Thorsten có thể được tìm thấy ở đây .
Để làm rõ hơn gmane.emacs.orgmode
thực sự là diễn đàn thích hợp.
org-insert-drawer
. (Tức là, tôi sẽ tưởng tượng nếu một chuyển đổi như vậy tồn tại, chức năng này sẽ gọi đó là một vớinil
.)