web-search: allow custom search engines

This commit is contained in:
Marc Cornellà 2020-06-10 12:04:14 +02:00
parent 3c777ebf1b
commit 60442dc47b
2 changed files with 36 additions and 1 deletions

View file

@ -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=(
<context> <URL>
<context> <URL>
)
```
where `<context>` is the name of the search context, and `<URL>` 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 <query>` or `reddit <query>`.

View file

@ -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