Q: Как я могу получить пользовательскую org
функцию ссылки для автоматической вставки описания?
Я хотел бы хранить org
ссылки на файлы в dired
буфере, но предпочел бы, чтобы описание ссылки было именем файла без пути, а не сообщало полный путь, то есть:
file:~/the/full/path/myfile.ext ; default, but no thanks
myfile.ext ; what I want
Теперь: org-store-link
жесткие ссылки dired
для обеспечения по умолчанию. Вместо этого я написал пользовательскую функцию (извлечение из жестко закодированной функции) и добавил ее в 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 не равен nil, это значение будет использоваться в качестве местоположения ссылки вместо интерактивного чтения. Если параметр DEFAULT-DESCRIPTION не равен nil, это значение будет использоваться в качестве описания по умолчанию.