Piszę pakiet, który pobiera listę healin, zawartości i niektórych innych właściwości, które mają zostać wyświetlone użytkownikowi. Na razie org-mode
bufor wydaje się dobrym sposobem na wyświetlanie tych nagłówków.
Poniżej znajduje się przykład struktury tej listy. Jest to jedynie przykładowe, w razie potrzeby mogę łatwo przekonwertować go na dowolną inną strukturę.
'(("One headline" "Some much longer content."
(property1 . value)
(property2 . value))
("Second headline" "More much longer content."
(property1 . value)
(property2 . value)))
Czy istnieje funkcja lub pakiet, który drukuje taką listę w org-mode
buforze?
Oto pożądany wynik.
* One headline
:PROPERTIES:
:property1: value
:property2: value
:END:
Some much longer content.
* Second headline
:PROPERTIES:
:property1: value
:property2: value
:END:
More much longer content.
Mógłbym to zrobić ręcznie, po prostu zastanawiam się, czy coś może tam być.
org-insert-drawer
. (To znaczy, wyobrażam sobie, że gdyby taki konwerter istniał, ta funkcja nazwałaby go tymnil
.)Odpowiedzi:
To jest zadanie
org-element
, niesamowite (!) Dzieło Nicolasa Goaziou . Jeśli nie wieszorg-element
i zależy ci na rozwoju organizacji, powinieneś przyjrzeć się temu. Jest to nie tylko świetne narzędzie do pracy, ale także coraz silniejszeorg
. Przede wszystkimorg-export
(ox
), ale działa również nporg.el
.Aby uzyskać „reprezentację seplenienia” elementu w punkcie, użyj
org-element-at-point
luborg-element-context
. Aby uzyskać reprezentację bufora, użyjorg-element-parse-buffer
. Chociaż nie ma to bezpośredniego znaczenia tutaj, należy pamiętaćorg-element-map
.Aby przejść z „lisp reprezentacji” w stosunku do
element
,secondary string
lubparse tree
z powrotem do „Org składnia reprezentacji” użytkuorg-element-interpret-data
. Jest (tylko) sposób, aby włączyć „lisp reprezentacji” w „Org składni reprezentacji”. Prawdopodobnie nie będziesz jednak chciał pisać tej reprezentacji ręcznie. Oto dość mała reprezentacja pierwszego nagłówkaJeśli musisz dodać oba nagłówki, dodaj
parse tree
Może się okazać, że Thorsten Jolitz „s
org-dp
biblioteka pomoże Ci w takich działań ( na MELPA ).Pełniejszy opis Thorstena można znaleźć tutaj .
Dalsze wyjaśnienia
gmane.emacs.orgmode
to naprawdę odpowiednie forum.źródło
org-dp
jest alternatywnym interfejsem. AFAIR, został napisany do tworzenia dokumentów w składni / formacie Org z punktu widzenia „elementów”. Celem Org Element jest bycie parserem i koniem roboczym dla Org. Jestem osobiście w porządkuorg-element
, ale wspaniale jest mieć alternatywne interfejsy.W pewnym sensie spojrzałem na ten problem. Spójrz na protokół-org.el . Jest dołączony do trybu org. W szczególności funkcja org-protocol-do-capture konwertuje listę „części” (które wydaje się, że już masz) na właściwości trybu org za pomocą funkcji org-store-link-props, a następnie wywołuje org-capture. Zakłada się, że masz szablon przechwytywania z symbolami zastępczymi, takimi jak%: link. Możesz zdefiniować właściwości, które chcesz.
Zrobiłem coś podobnego do zeskrobywania tytułu, autora, daty, źródła itp. Z interfejsów API witryny. Jeśli skończysz na tym kodzie, koniecznie spójrz również na capture-templates.el.
Jeśli pracujesz z danymi JSON, json.el i / lub request.el mogą być przydatne.
źródło