org-cliplink 패키지로 title과 url을 편하게 삽입
org-mode에서 웹 페이지 링크를 삽입할 때, C-c C-l
키를 눌러서 링크와 제목을 따서 추가했는데, 이걸 편하게 해주는 rexim/org-cliplink 패키지를 찾았다.
(use-package org-cliplink :ensure t)
패키지를 설치한 후에 M-x org-cliplink
함수를 실행하면 클립보드에 복사한 url로 웹페이지를 방문해 title을 가져와 org link를 삽입해준다.
[[https://www.youtube.com/watch?v=f84n5oFoZBc][Hammock Driven Development - Rich Hickey - YouTube]]
[[https://github.com/rexim/org-cliplink][GitHub - rexim/org-cliplink: Insert org-mode links from clipboard]]
title을 변경하고 싶다. Hammock Driven Development - Rich Hickey - youtube.com
이런 식으로 host url을 뒤에 붙여넣고 싶다. github은 rexim/org-cliplink - github.com
이런 식으로 url path와 host를 사용하고 싶다.
친절하게도 README.org에 방법을 써놨다. README에 어울리는 확장자는 뭐다? md가 아니라 org다. 아무튼.
(defun my-org-cliplink ()
(interactive)
(org-cliplink-insert-transformed-title
(org-cliplink-clipboard-content) ;take the URL from the CLIPBOARD
(lambda (url title)
(let* ((parsed-url (url-generic-parse-url url)) ;parse the url
(host-url (replace-regexp-in-string "^www\\." "" (url-host parsed-url)))
(clean-title
(cond
;; if the host is github.com, cleanup the title
((string= (url-host parsed-url) "github.com")
(replace-regexp-in-string "^/" ""
(car (url-path-and-query parsed-url))))
;; (replace-regexp-in-string "GitHub - .*: \\(.*\\)" "\\1" title))
((string= (url-host parsed-url) "www.youtube.com")
(replace-regexp-in-string "\\(.*\\) - Youtube" "\\1" title))
;; otherwise keep the original title
(t title)))
(title-with-url (format "%s - %s" clean-title host-url)))
;; forward the title to the default org-cliplink transformer
(org-cliplink-org-mode-link-transformer url title-with-url)))))
예제 함수를 고쳐서 github과 youtube URL을 커스터마이징하고 host url을 항상 뒤에 붙이게 고쳤다.
[[https://www.youtube.com/watch?v=f84n5oFoZBc][Hammock Driven Development - Rich Hickey - youtube.com]]
[[https://github.com/rexim/org-cliplink][rexim/org-cliplink - github.com]]
M-x my-org-cliplink
함수를 실행하면 원하는 대로 title이 가공돼서 삽입된다.
C-x C-s C-x C-c