З: Як я можу отримати власну orgфункцію посилання, щоб автоматично вставити опис?
Я хотів би зберігати orgпосилання на файли в diredбуфері, але я вважаю за краще, щоб опис посилання було ім'ям файлу sans path, а не повідомляти про повний шлях, тобто:
file:~/the/full/path/myfile.ext ; default, but no thanks
myfile.ext ; what I want
Тепер: org-store-linkпосилання на жорсткі коди diredдля надання за замовчуванням. Натомість я написав користувальницьку функцію (cribbing з жорстко закодованої функції) і додав її до 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)
Поки що добре, і це працює, як очікувалося, але для одного:
- Коли дзвонить
org-insert-linkіз вбудованою поведінкою за замовчуванням, вона просто вставляє посилання, не запитуючи мене про опис. - Під час дзвінка за
org-insert-linkдопомогою моєї користувальницької функції він пропонує мені ввести опис (який він правильно заповнюється ім'ям файлу, що зберігається у:descriptionвластивості).
Я вважаю за краще не вимагати кожного опису кожного разу, і хочу org-insert-linkвикористовувати значення, :descriptionяке встановлює спеціальна функція.
Як я можу переконати org-insert-linkвикористовувати :descriptionавтоматично, не спонукаючи мене до цього?
link-locationчиdefault-descriptionфункціїorg-insert-link? Якщо параметр LINK-LOCATION не має нульового значення, це значення буде використовуватися як місце посилання, а не для читання інтерактивно. Якщо параметр DEFAULT-DESCRIPTION не дорівнює нулю, це значення буде використовуватися як опис за замовчуванням.