Saya mencoba menulis fungsi yang akan mengambil tajuk dan refile ke satu lokasi tertentu. Doc untuk org-refile
is
(org-refile &optional GOTO DEFAULT-BUFFER RFLOC MSG)
dan RFLOC
adalah
RFLOC can be a refile location obtained in a different way.
tapi saya tidak tahu apa "cara yang berbeda" akan dan saya sudah googling selama setengah hari dan tidak melihat contoh. Saya tahu file dan saya tahu judul untuk target tetapi saya tidak tahu sintaks untuk membentuknya menjadi apa yang diinginkan. Yang paling dekat yang saya dapatkan adalah:
(org-refile nil #("~/Org/bookmarks.org")
yang kemudian akan meminta saya untuk judul, tetapi tentu saja saya tidak ingin itu meminta saya, saya ingin memberikannya.
Saya baru mengenal elisp dan saya sudah menebak setiap sintaks yang bisa saya pikirkan. Adakah yang tahu bagaimana mengucapkan ini?
(let* ( (org-archive-location "/path/to/org-file::* NAME_OF_HEADING") (org-archive-save-context-info nil)) (org-archive-subtree))
Saya mungkin tidak akan menjawab pertanyaan ini sejak Anda bertanyaorg-refile
, tetapi snipet melakukan pekerjaan dengan cukup baik. Dua titik dua yang sedang dibutuhkan. Saya menggunakan ini sepanjang waktu, dan bahkan telah membuat versi khususorg-archive-subtree
untuk menekan pesan sehingga saya tidak memilikinya ratusan ketika saya secara otomatis mengatur ulang seluruh file org saya.Jawaban:
Saya bertanya-tanya seperti apa rupa RFLOC sebelumnya, tetapi tidak pernah diselidiki. Melihat kode sumber org, itu harus daftar yang terdiri dari:
Saya belum bereksperimen dengan
re
elemen, tetapi di sini adalah fungsi sederhana yang akan memanggilorg-refile
dengan RFLOC dibangun dari FILE dan HEADING yang diberikan:Ini membuka file target dan menggunakan fungsi org untuk menemukan posisi headline target, kemudian membangun daftar RFLOC untuk diteruskan
org-refile
.sumber
Terima kasih banyak @glucas, saya telah mengerjakan solusi Anda menjadi yang terakhir. Informasi kuncinya adalah mengetahui format RFLOC. Saya melakukan percobaan dengan memberikan daftar nama file dan teks judul, tetapi saya kehilangan elemen-elemen lainnya, dan nihil tambahan. Inilah yang akhirnya saya dapatkan:
Dokumen untuk
save-excursion
menyatakan bahwa kami akan dikembalikan ke lokasi asal kami, tetapi sepertinya tidak berfungsi seperti itu. Itu membuat saya berada di tujuan, yang mungkin cocok untuk jenderal iturefile-to
, tetapi saya ingin membuatnya memindahkan garis dan tetap di tempat saya, jadi saya menyimpan dan memulihkannyarefile-to-bookmark
.Alur kerja yang dimaksudkan untuk ini adalah saya mulai dengan daftar tautan HTML yang berasal dari skrip saya untuk membaca umpan RSS. Awalnya saya memiliki skrip yang menghasilkan file maildir untuk mu4e, tetapi ternyata saya hanya mengikuti tautan ke browser dan kemudian membooking yang menarik, jadi sekarang saya hanya membuat daftar
** [[uri][title]]
baris. Setelah saya mengikuti tautan dari emacs ke browser uzbl, alih-alih bookmark (yang menghasilkan bentuk garis yang sama), saya menggunakan perintah ini untuk memindahkan tautan ke bookmarks.org saya setelah mengatur tag. Hanya sedikit lebih cepat karena saya juga menggunakan perintah kecepatan org,t
untuk menandai danb
untuk perintah ini. Saya senang sekarang dan senang belajar lebih banyak tentang elisp!sumber
re
unsur RFLOC akan diabaikan, sejauh yang saya tahu. Ini digunakan dalam beberapa fungsi lain di dalam org.el yang berhubungan dengan lokasi target.refile-to
fungsi untuk kembali ke posisi semula dengan menambahkan ini di akhir, setelahlet
:(switch-to-buffer (current-buffer))
. Sepertinya ini seharusnya tidak melakukan apa-apa, tetapi itu bekerja untuk saya.-push
dan-goto
dengan itu. Kelihatannya aneh bahwa Anda dibiarkan di buffer lain dan menganggap buffer saat ini sebagai yang sebelumnya.