ถาม:ฉันจะรับorgฟังก์ชันลิงก์ที่กำหนดเองเพื่อแทรกคำอธิบายโดยอัตโนมัติได้อย่างไร
ฉันต้องการจัดเก็บorgลิงก์ไปยังไฟล์ในdiredบัฟเฟอร์ แต่ต้องการให้คำอธิบายลิงก์เป็นชื่อไฟล์ sans path แทนที่จะรายงานเส้นทางแบบเต็มเช่น:
file:~/the/full/path/myfile.ext ; default, but no thanks
myfile.ext ; what I want
ตอนนี้: org-store-linkลิงก์ hardcodes จาก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 ไม่ใช่ค่ากลางค่านี้จะถูกใช้เป็นตำแหน่งลิงก์แทนการอ่านหนึ่งแบบโต้ตอบ หากพารามิเตอร์ DEFAULT-DESCRIPTION ไม่ใช่ค่ากลางค่านี้จะถูกใช้เป็นคำอธิบายเริ่มต้น