org mode 글에서 링크를 클립보드로 복사하기
(defun my/org-copy-link-at-point ()
(interactive)
(message "%S" (org-element-context))
)
(link (:type "https"
:path "//emacs.stackexchange.com/questions/3981/how-to-copy-links-out-of-org-mode"
:format bracket
:raw-link "https://emacs.stackexchange.com/questions/3981/how-to-copy-links-out-of-org-mode"
:begin 328
:end 494
:contents-begin 412
:contents-end 492
;;...
))
커서가 있는 org 요소(element)에 대한 정보를 가져올 수 있다. 여기서 raw-link
키값을 가져오면 되겠다.
(defun my/org-copy-link-at-point ()
(interactive)
(message "%S" (org-element-property :raw-link (org-element-context)))
)
"https://emacs.stackexchange.com/questions/3981/how-to-copy-links-out-of-org-mode"
잘 가져온다. type
과 path
키값을 가져와 조합할 필요 없이 raw-link
키값을 가져와서 그냥 쓰면 된다. 만약 link 프로퍼티가 없는 요소라면 nil
을 리턴한다.
(defun my/org-copy-link-at-point ()
(interactive)
(let ((link (org-element-property :raw-link (org-element-context))))
(when link
(kill-new link))
))
link 프로퍼티가 없으면 nil이니 검사해서 kill-new
함수를 사용해 클립보드로 복사한다.
(after! org
(map! :map org-mode-map
:localleader
(:prefix ("l" . "links")
"y" #'my/org-copy-link-at-point)))
doom emacs에 이미 정의된 키바인딩 규칙에 끼워 넣었다. org mode에서 SPC m l
키를 누르면 link와 관련된 키바인딩이 보인다. 여기에 마침 y
가 비어있길래 SPC m l y
키로 바인딩했다.
참고
- How to copy links OUT of org-mode? - Emacs Stack Exchange - emacs.stackexchan…
- Clipboard (GNU Emacs Manual) - gnu.org
C-x C-s C-x C-c