F: Wie kann ich eine benutzerdefinierte org
Linkfunktion zum automatischen Einfügen einer Beschreibung erhalten?
Ich möchte org
Links zu Dateien in einem dired
Puffer speichern , möchte jedoch, dass die Linkbeschreibung der Dateiname ohne Pfad ist, anstatt den vollständigen Pfad zu melden, dh:
file:~/the/full/path/myfile.ext ; default, but no thanks
myfile.ext ; what I want
Jetzt: org-store-link
Hardcodes von dired
, um die Standardeinstellung bereitzustellen. Stattdessen habe ich eine benutzerdefinierte Funktion geschrieben (Cribbing von der fest codierten Funktion) und sie hinzugefügt zu 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)
So weit so gut und es funktioniert wie erwartet, aber zum einen:
- Beim Aufrufen
org-insert-link
mit dem integrierten Standardverhalten wird der Link einfach eingefügt, ohne dass ich nach einer Beschreibung gefragt werde. - Wenn
org-insert-link
ich mit meiner benutzerdefinierten Funktion aufrufe, werde ich aufgefordert, eine Beschreibung einzugeben (die korrekt mit dem in der:description
Eigenschaft gespeicherten Dateinamen gefüllt wird ).
Ich möchte lieber nicht jedes Mal zur Beschreibung aufgefordert werden und möchte org-insert-link
den Wert verwenden :description
, den die benutzerdefinierten Funktionen festlegen.
Wie kann ich überzeugen org-insert-link
, das :description
automatisch zu verwenden, ohne mich dazu aufzufordern?
link-location
oderdefault-description
in der Funktionorg-insert-link
? Wenn der Parameter LINK-LOCATION nicht Null ist, wird dieser Wert als Verbindungsposition verwendet, anstatt eine interaktiv zu lesen. Wenn der Parameter DEFAULT-DESCRIPTION nicht null ist, wird dieser Wert als Standardbeschreibung verwendet.