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, это значение будет использоваться в качестве описания по умолчанию.