Я пишу пакет, который загружает список healines, содержимого и некоторых других свойств, которые должны быть отображены пользователю. На данный момент org-mode
буфер кажется хорошим способом отображения этих заголовков.
Ниже приведен пример того, как этот список может быть структурирован. Это просто иллюстративно, я могу легко преобразовать его в любую другую структуру по мере необходимости.
'(("One headline" "Some much longer content."
(property1 . value)
(property2 . value))
("Second headline" "More much longer content."
(property1 . value)
(property2 . value)))
Есть ли функция или пакет, который печатает такой список в org-mode
буфер?
Вот желаемый результат.
* One headline
:PROPERTIES:
:property1: value
:property2: value
:END:
Some much longer content.
* Second headline
:PROPERTIES:
:property1: value
:property2: value
:END:
More much longer content.
Я мог бы сделать это вручную, мне просто интересно, может ли быть что-то там.
org-insert-drawer
. (То есть, я думаю, что если бы существовал такой преобразователь, эта функция вызывала бы его сnil
.)Ответы:
Это работа
org-element
, то огромная (!) Работа Николя Goaziou . Если вы не знаете,org-element
и вам небезразлично развитие организации, вам следует обратить на это внимание. Это не только отличный инструмент для работы, но и все более мощныйorg
. Наиболее заметноorg-export
(ox
), но также функционирует, например, вorg.el
.Чтобы получить «представление lisp» элемента под точкой, используйте
org-element-at-point
илиorg-element-context
. Чтобы получить представление о буфере используйтеorg-element-parse-buffer
. Хотя это не имеет непосредственного отношения здесь, имейте в видуorg-element-map
.Для того, чтобы перейти от «LISP представления» о
element
,secondary string
илиparse tree
спиной к «Org синтаксис представления» использованияorg-element-interpret-data
. Это (единственный) способ превратить «LISP представления» в «Org синтаксиса представления». Возможно, вы не захотите писать это представление вручную. Вот довольно небольшое представление вашего первого заголовкаЕсли вы должны добавить оба заголовка, добавьте
parse tree
Вы можете обнаружить , что Торстен Джолитц «s
org-dp
библиотека поможет вам в таких усилиях ( по MELPA ).Более полное описание Торстена можно найти здесь .
Для дальнейших разъяснений
gmane.emacs.orgmode
действительно подходящий форум.источник
org-dp
это альтернативный интерфейс. AFAIR, он был написан для создания документов в синтаксисе / формате Org с "элементарной" точки зрения. Цель Org Element - быть парсером и рабочей лошадкой для Org. Лично у меня все хорошоorg-element
, но здорово иметь альтернативные интерфейсы.Я как бы тангенциально посмотрел на эту проблему. Взгляните на org-protocol.el . В комплекте с орг-режимом. В частности, функция org-protocol-do-capture конвертирует список, «части» (которые, как вам кажется, уже есть), в свойства режима org, используя функцию org-store-link-props, а затем вызывает org-capture. Это предполагает, что у вас есть шаблон захвата с заполнителями, такими как%: ссылка. Вы можете определить свойства, которые вам нравятся.
Я сделал что-то похожее на очистку заголовка, автора, даты, источника и т. Д. Из API сайта. Если вы в конечном итоге посмотрите на этот код, обязательно посмотрите на capture-templates.el.
Если вы работаете с данными JSON, могут быть полезны json.el и / или request.el.
источник