Saya sedang menulis paket yang memuat daftar healine, konten, dan beberapa properti lainnya, yang akan ditampilkan kepada pengguna. Untuk saat ini, org-mode
buffer sepertinya cara yang baik untuk menampilkan tajuk utama ini.
Di bawah ini adalah contoh bagaimana daftar ini disusun. Ini hanya ilustratif, saya dapat dengan mudah mengubahnya ke struktur lain yang diperlukan.
'(("One headline" "Some much longer content."
(property1 . value)
(property2 . value))
("Second headline" "More much longer content."
(property1 . value)
(property2 . value)))
Apakah ada fungsi atau paket yang mencetak daftar seperti itu ke org-mode
buffer?
Inilah output yang diinginkan.
* One headline
:PROPERTIES:
:property1: value
:property2: value
:END:
Some much longer content.
* Second headline
:PROPERTIES:
:property1: value
:property2: value
:END:
More much longer content.
Saya bisa melakukan ini secara manual, saya hanya ingin tahu apakah mungkin ada sesuatu di luar sana.
org-insert-drawer
. (Yaitu, saya akan membayangkan jika konverter seperti itu ada, fungsi ini akan memanggil yang satu dengannil
.)Jawaban:
Ini adalah pekerjaan dari
org-element
, yang mengagumkan (!) Karya Nicolas Goaziou . Jika Anda tidak tahuorg-element
dan Anda peduli tentang pengembangan org, ini adalah sesuatu yang harus Anda perhatikan. Ini bukan hanya alat yang hebat untuk digunakan, tetapi juga semakin kuatorg
. Terutamaorg-export
(ox
), tetapi juga berfungsi dalam misalnyaorg.el
.Untuk mendapatkan "representasi lisp" dari elemen di bawah titik gunakan
org-element-at-point
atauorg-element-context
. Untuk mendapatkan representasi dari penggunaan bufferorg-element-parse-buffer
. Meskipun tidak secara langsung relevan di sini, perlu diperhatikanorg-element-map
.Untuk beralih dari "representasi lisp" dari
element
,secondary string
atauparse tree
kembali ke "representasi sintaksis Org" gunakanorg-element-interpret-data
. Ini adalah satu- satunya cara untuk mengubah "representasi pelat" menjadi "Representasi sintaksis organisasi". Anda mungkin tidak ingin menulis representasi ini secara manual. Berikut ini adalah representasi kecil dari tajuk pertama AndaJika Anda harus menambahkan kedua tajuk utama, tambahkan a
parse tree
Anda mungkin menemukan bahwa Thorsten Jolitz 's
org-dp
perpustakaan akan membantu Anda dalam upaya tersebut ( pada MELPA ).Deskripsi yang lebih lengkap oleh Thorsten dapat ditemukan di sini .
Untuk klarifikasi lebih lanjut
gmane.emacs.orgmode
benar-benar forum yang tepat.sumber
org-dp
adalah antarmuka alternatif. AFAIR, ditulis untuk membuat dokumen dalam sintaks / format Org dari sudut pandang "elemen". Tujuan Elemen Org adalah menjadi pengurai dan pekerja keras bagi Org. Saya pribadi baik-baik saja denganorg-element
, tetapi itu bagus untuk memiliki antarmuka alternatif.Saya sudah agak suka melihat masalah ini. Lihatlah org-protocol.el . Ini dibundel dengan mode-org. Secara khusus, fungsi org-protokol-do-capture mengubah daftar, "bagian" (yang tampaknya sudah Anda miliki), ke properti mode-org menggunakan fungsi org-store-link-props dan kemudian memanggil pengambilan-org. Ini mengasumsikan bahwa Anda memiliki templat pengambilan dengan placeholder seperti tautan%:. Anda dapat mendefinisikan properti menjadi apa pun yang Anda suka.
Saya telah melakukan sesuatu yang mirip dengan mengikis judul, penulis, tanggal, sumber, dll. Dari API situs. Jika Anda akhirnya melihat kode ini, pastikan untuk juga melihat capture-templates.el.
Jika Anda bekerja dengan data JSON, json.el dan / atau request.el mungkin berguna.
sumber