emacs로 웹브라우저 검색을 편하게 하자
원하는 URL을 조합해 웹브라우저로 여는 대화형 함수 만들기 - elixir 문서 편하게 검색 글로 적은 것처럼 emacs에서 elixir 문서 검색 단어를 입력받아 주소를 조합해 웹브라우저로 여는 함수를 만들어 사용하고 있다. 써보니 편해서 이걸 더 확장했다.
대화형(interactive) 함수에서 선택 영역 혹은 문자열 입력을 받기 기능을 사용해서 선택 영역이 있으면 그걸 그대로 검색 단어로 쓰게 기능을 추가했다. 선택 영역이 없으면 프롬프트(prompt)로 검색 문자를 받게 한다.
(map! :leader
(:prefix-map ("S" . "custom search")
:desc "google" "g" #'my/search-google
:desc "naver" "n" #'my/search-naver
:desc "dict" "d" #'my/search-dict
:desc "dotnet" "D" #'my/search-dotnet
:desc "core dict" "c" #'my/search-core-dictionary
:desc "onelook" "e" #'my/search-onelook
:desc "thesaurus" "t" #'my/search-thesaurus
:desc "elixir" "x" #'my/search-elixir
:desc "flutter" "f" #'my/search-flutter
:desc "my blogs" "b" #'my/search-blogs
)
)
elixir뿐만 아니라 google, naver, 사전 등 자주 쓰는 사이트에 대한 검색을 추가했다. doom emacs 함수를 사용해서 키 바인딩도 했다. SPC S g
키를 누르면 구글 검색이 되는 식이다.
(defun my/search-google ()
(interactive)
(let ((search-terms (my/search--use-region-or-read-user-input)))
(my/search--browse "https://google.com/search"
`(("q" ,search-terms)))))
(defun my/search-dict ()
(interactive)
(let ((search-terms (my/search--use-region-or-read-user-input)))
(my/search--browse "https://dict.naver.com/search.dict"
`(("query" ,search-terms)))))
(defun my/search--browse (base-url query-string-list)
(let* ((query-string (url-build-query-string query-string-list))
(url (format "%s?%s" base-url query-string)))
(browse-url url)))
(defun my/search--use-region-or-read-user-input ()
(if (doom-region-active-p)
(buffer-substring (doom-region-beginning) (doom-region-end))
(read-string "Enter your search terms: ")))
여러 검색 함수에서 공통으로 사용하는 함수를 추출했다. my/search--browse
함수는 쿼리 문자열(query string)을 조합해 웹브라우저로 사이트를 여는 역할을 한다. my/search--use-region-or-read-user-input
함수는 선택한 영역이 있으면 거기서 문자열을 추출하고 없다면 프롬프트(prompt)를 띄워 사용자 입력을 받는다. 이 함수를 구현할 때 doom emacs에서 evil mode 비주얼 모드(visual mode) 선택 영역을 잘 검출하게 수정한 함수를 사용했다. doom emacs를 쓰지 않는다면 region-active-p
, region-beginning
, region-end
함수를 사용하면 된다.
링크
- 원하는 URL을 조합해 웹브라우저로 여는 대화형 함수 만들기 - elixir 문서 편하게 검색 - ohyecloudy.com
- doom emacs 전환 후기 - ohyecloudy.com
- 대화형(interactive) 함수에서 선택 영역 혹은 문자열 입력을 받기 - ohyecloudy.com
- Query string - en.wikipedia.org
- emacs-evil/evil - github.com
C-x C-s C-x C-c