组织模式嵌套属性?

时间:2012-11-05 07:50:53

标签: emacs elisp org-mode

Org manual“属性是与条目”相关联的键值对。正确的key-value data structure可以在值中存储任何内容,包括另一个关联数组。但物业似乎不可能。

  • 我可以模拟嵌套属性吗?
  • 如果我不能,理论上如何优雅地实施?

嵌套属性可以通过大量使用Property API为无数功能启用org-mode的许多可能性。出现的例子包括:键值数据库,图形数据库,向条目添加复杂的语义元数据,语义Web应用程序,甚至文本任务。

2009年在org-mode邮件列表中讨论了ID markersall posts of the thread)的类似想法.ID标记的概念与我从另一个想要概括org-mode属性语法的愿望相关。 Org-mode: using special properties in the drawer。不幸的是,ID标记引入了更多新语法,我希望在当前的组织模式能力下以递增方式启用嵌套数据。

Babel可能是一种解决方案,但它需要使用编程语言,并可能限制灵活性。最好只使用属性API。

1 个答案:

答案 0 :(得分:0)

这是你的想法:

** subheading
   :PROPERTIES:
   :my-prop:  (:property-1 red :property-2 (nested-prop . 5))
   :END:`


#+BEGIN_SRC emacs-lisp
    (defun get-my-prop-value (property)
       (interactive)
       (plist-get
       (read (org-entry-get (point) "my-prop"))
       property))
#+END_SRC

#+RESULTS:
: get-my-prop-value



#+BEGIN_SRC emacs-lisp
    (get-my-prop-value :property-2)
#+END_SRC

#+RESULTS:
: (nested-prop . 5)