ไปงานปาร์ตี้สาย (และโพสต์แรกของฉันที่นี่โดยวิธี) แต่ฉันคิดว่านี่อาจเป็นประโยชน์กับผู้อื่นเช่นกัน คำตอบที่ได้รับการยอมรับทำงานได้อย่างสมบูรณ์แบบเมื่อ yanking ภายใน emacs อีกครั้ง แต่ข้อความจริงที่คัดลอกไปยังคลิปบอร์ดของระบบยังคงเป็นไวยากรณ์โหมดเต็มรูปแบบขององค์กร ฉันต้องการบางสิ่งที่สามารถคัดลอกลิงก์จากทั้งโหมดองค์กรและ emacs กรณีการใช้งาน: ฉันทำเว็บหลายครั้งเมื่อเร็ว ๆ นี้และฉันมักจะใช้เบราว์เซอร์หลายตัว มีเพียงหนึ่งในนั้นเท่านั้นที่สามารถเป็นค่าเริ่มต้นสำหรับC-c c-o
ทางลัดและบางครั้งฉันต้องการเปิดลิงก์ในที่ไม่ใช่ค่าเริ่มต้น นอกจากนี้การวางลิงก์ไปยังผู้ร่วมงานใน Slack และอื่น ๆ
เรื่องสั้นสั้นฉันมากับวิธีนี้โดยการผสมและจับคู่คำตอบที่ยอมรับ :
(defun my-org-export-url ()
(interactive)
(let* ((link-info (assoc :link (org-context)))
(text (when link-info
(buffer-substring-no-properties (or (cadr link-info) (point-min))
(or (caddr link-info) (point-max))))))
(if (not text)
(error "Not in org link")
(string-match org-bracket-link-regexp text)
(kill-new (substring text (match-beginning 1) (match-end 1))))))
สิ่งนี้จะคัดลอกไปยังคลิปบอร์ดลิงก์เป็นเพียงส่วนหนึ่งของลิงก์โหมดองค์กร
ที่จริงแล้วฉันได้รวมทั้งคำตอบก่อนหน้านี้และฟังก์ชั่นใหม่นี้ภายในของฉัน.emacs
แต่ละคนมีการผูกกุญแจของตัวเอง รหัสเต็มที่นี่:
(defun my-yank-org-link (text)
(if (derived-mode-p 'org-mode)
(insert text)
(string-match org-bracket-link-regexp text)
(insert (substring text (match-beginning 1) (match-end 1)))))
(defun my-org-copy-smart-url ()
(interactive)
(let* ((link-info (assoc :link (org-context)))
(text (when link-info
(buffer-substring-no-properties (or (cadr link-info) (point-min))
(or (caddr link-info) (point-max))))))
(if (not text)
(error "Not in org link")
(add-text-properties 0 (length text) '(yank-handler (my-yank-org-link)) text)
(kill-new text))))
(global-set-key (kbd "C-c c") 'my-org-copy-smart-url)
(defun my-org-export-url ()
(interactive)
(let* ((link-info (assoc :link (org-context)))
(text (when link-info
(buffer-substring-no-properties (or (cadr link-info) (point-min))
(or (caddr link-info) (point-max))))))
(if (not text)
(error "Not in org link")
(string-match org-bracket-link-regexp text)
(kill-new (substring text (match-beginning 1) (match-end 1))))))
(global-set-key (kbd "C-c e") 'my-org-export-url)
ฉันได้เลือกC-c e
และC-c c
ปุ่มลัดเพราะมันเป็นตัวช่วยจำที่ดีสำหรับe
xport และc
opy และพวกมันไม่ได้ใช้ในโหมดองค์กร พวกเขายังพอดีกับปุ่มลัดที่มีอยู่แล้วC-c C-o
สำหรับการo
เชื่อมโยงการ pening
if
เพราะเมื่อใช้ GUI Emacs มันจะคัดลอกลิงค์ทั้งหมด ([[a]][b]]
) แทนส่วน URL (a
)