ถาม:ฉันจะรับ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 ไม่ใช่ค่ากลางค่านี้จะถูกใช้เป็นคำอธิบายเริ่มต้น