P: Jak mogę uzyskać niestandardową org
funkcję linku do automatycznego wstawiania opisu?
Chciałbym przechowywać org
linki do plików w dired
buforze, ale wolałbym, aby opis linku był ścieżką bez nazwy pliku, niż zgłosić pełną ścieżkę, tj .:
file:~/the/full/path/myfile.ext ; default, but no thanks
myfile.ext ; what I want
Teraz: org-store-link
twarde kody łączy z, dired
aby podać wartość domyślną. Zamiast tego napisałem niestandardową funkcję (cribbing z funkcji zakodowanej na stałe) i dodałem ją do 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)
Jak dotąd tak dobrze i działa zgodnie z oczekiwaniami, ale z jednej strony:
- Podczas wywoływania
org-insert-link
z wbudowanym domyślnym zachowaniem, po prostu wstawia link, nie pytając mnie o opis. - Podczas wywoływania za
org-insert-link
pomocą mojej funkcji niestandardowej monituje mnie o wprowadzenie opisu (który poprawnie wypełnia nazwą pliku zapisaną we:description
właściwości).
Wolałbym nie być monitowany o opis za każdym razem i chcę org-insert-link
użyć wartości :description
tego zestawu funkcji niestandardowych.
Jak przekonać org-insert-link
do korzystania z :description
trybu automatycznego bez monitowania mnie o to?
link-location
lubdefault-description
funkcjaorg-insert-link
pomagają? Jeśli parametr LINK-LOCATION ma wartość inną niż zero, ta wartość zostanie użyta jako lokalizacja łącza zamiast odczytu jednego interaktywnie. Jeśli parametr DEFAULT-DESCRIPTION ma wartość inną niż zero, ta wartość zostanie użyta jako opis domyślny.