From 60442dc47b9092375bb41a1f803b25389c834427 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Wed, 10 Jun 2020 12:04:14 +0200 Subject: [PATCH] web-search: allow custom search engines --- plugins/web-search/README.md | 24 ++++++++++++++++++++++++ plugins/web-search/web-search.plugin.zsh | 13 ++++++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/plugins/web-search/README.md b/plugins/web-search/README.md index 81908fb94..ad5080a44 100644 --- a/plugins/web-search/README.md +++ b/plugins/web-search/README.md @@ -52,3 +52,27 @@ Also there are aliases for bang-searching DuckDuckGo: | `map` | `!m` | | `image` | `!i` | | `ducky` | `!` | + +### Custom search engines + +If you want to add other search contexts to the plugin, you can use the +`$ZSH_WEB_SEARCH_ENGINES` variable. Set it before Oh My Zsh is sourced, +with the following format: + +```zsh +ZSH_WEB_SEARCH_ENGINES=( + + +) +``` + +where `` is the name of the search context, and `` a URL of +the same type as the search contexts above. For example, to add `reddit`, +you'd do: + +```zsh +ZSH_WEB_SEARCH_ENGINES=(reddit "https://www.reddit.com/search/?q=") +``` + +These custom search engines will also be turned to aliases, so you can +both do `web_search reddit ` or `reddit `. diff --git a/plugins/web-search/web-search.plugin.zsh b/plugins/web-search/web-search.plugin.zsh index 326a30745..e8842d906 100644 --- a/plugins/web-search/web-search.plugin.zsh +++ b/plugins/web-search/web-search.plugin.zsh @@ -6,6 +6,7 @@ function web_search() { # define search engine URLS typeset -A urls urls=( + $ZSH_WEB_SEARCH_ENGINES google "https://www.google.com/search?q=" bing "https://www.bing.com/search?q=" yahoo "https://search.yahoo.com/search?p=" @@ -25,7 +26,7 @@ function web_search() { # check whether the search engine is supported if [[ -z "$urls[$1]" ]]; then - echo "Search engine $1 not supported." + echo "Search engine '$1' not supported." return 1 fi @@ -67,3 +68,13 @@ alias youtube='web_search duckduckgo \!yt' alias map='web_search duckduckgo \!m' alias image='web_search duckduckgo \!i' alias ducky='web_search duckduckgo \!' + +# other search engine aliases +if [[ ${#ZSH_WEB_SEARCH_ENGINES} -gt 0 ]]; then + typeset -A engines + engines=($ZSH_WEB_SEARCH_ENGINES) + for key in ${(k)engines}; do + alias "$key"="web_search $key" + done + unset engines key +fi