T: Bagaimana saya bisa mendapatkan org
fungsi tautan khusus untuk memasukkan deskripsi secara otomatis?
Saya ingin menyimpan org
tautan ke file dalam dired
buffer, tetapi saya lebih suka bahwa deskripsi tautan menjadi path nama file sans daripada melaporkan path lengkap, yaitu:
file:~/the/full/path/myfile.ext ; default, but no thanks
myfile.ext ; what I want
Sekarang: org-store-link
tautan hardcodes dari dired
untuk menyediakan default. Sebagai gantinya, saya telah menulis fungsi khusus (menjiplak dari fungsi hard-coded) dan menambahkannya ke org-store-link-functions
:
(defun dired-store-link ()
(when (derived-mode-p 'dired-mode)
(let ((file (dired-get-filename nil t)))
(setf file (if file
(abbreviate-file-name (expand-file-name file))
default-directory))
(org-store-link-props :type "dired"
:link file
:description (file-name-nondirectory file))
file)))
(add-to-list 'org-store-link-functions #'dired-store-link)
Sejauh ini bagus, dan berfungsi seperti yang diharapkan, tetapi untuk satu hal:
- Saat menelepon
org-insert-link
dengan perilaku bawaan bawaan, itu hanya menyisipkan tautan tanpa meminta saya untuk deskripsi. - Saat memanggil
org-insert-link
dengan fungsi kustom saya, itu meminta saya untuk memasukkan deskripsi (yang diisi dengan benar dengan nama file yang disimpan di:description
properti).
Saya lebih suka tidak diminta untuk deskripsi setiap kali, dan ingin org-insert-link
menggunakan nilai :description
yang ditetapkan fungsi kustom.
Bagaimana saya bisa meyakinkan org-insert-link
untuk menggunakan :description
secara otomatis tanpa meminta saya untuk itu?
link-location
ataudefault-description
dalam fungsiorg-insert-link
membantu? Jika parameter LINK-LOCATION adalah non-nil, nilai ini akan digunakan sebagai lokasi tautan alih-alih membaca satu secara interaktif. Jika parameter DEFAULT-DESCRIPTION adalah nihil, nilai ini akan digunakan sebagai deskripsi default.Jawaban:
Dikubur di bagian bawah dokumen
org-insert-link
adalah catatan bahwa:Rupanya
org
membuang banyak informasi dalam proses menyimpan tautan, sehingga yang tersisaorg-stored-links
hanyalah daftar entri formulir(link description)
. Sejauh fungsi sebelumnya memiliki nama file untuk tautan, sepertinya berfungsi sebagai berikut:Ini semacam peretasan, dan saya belum mengujinya secara luas, tetapi sepertinya berhasil sejauh ini. Akan senang melihat solusi yang lebih elegan, tentu saja.
sumber
dired-store-link
dan gunakan saja ini untuk membuat deskripsi yang Anda inginkan? Saya pikir itu akan menjadi jauh lebih pendek.Saya menggunakan org 9.1.6, dan saya kecewa tampaknya
org-store-link-functions
sekarang menjadi fungsi org built-in (bukan hook), jadi solusi asli tidak lagi berfungsi. Mungkin ada solusi menggunakanorg-link-parameters
, tetapi saya menggunakan hack kecil berikut ini, yang sepertinya melakukan trik:Sebagai bonus, ini tidak meminta deskripsi, karena deskripsi yang didorong ke
org-stored-links
non-nil.sumber