3

组织手册“属性是与条目关联的键值对”。一个合适的键值数据结构可以在一个值中存储任何东西,包括另一个关联数组。但属性似乎不能。

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

通过大量使用Property API来实现无数功能,嵌套属性可以为 org-mode 提供许多可能性。脑海中浮现的示例包括:键值数据库、图形数据库、将复杂的语义元数据添加到条目、语义 Web 应用程序,甚至是文本任务。

2009 年,在 org-mode 邮件列表中讨论了ID 标记的类似想法(线程的所有帖子)。ID 标记的想法与我从 Org-mode 概括 org-mode 属性语法的另一个愿望切线相关:使用特殊的抽屉里的属性。不幸的是,ID 标记引入了更多新语法,我希望在当前的 org 模式功能内启用嵌套数据增量存储。

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

4

1 回答 1

1

这是你的想法:

** 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)
于 2014-11-30T20:01:37.957 回答