diff options
Diffstat (limited to 'plugins/web-search')
| -rw-r--r-- | plugins/web-search/web-search.plugin.zsh | 61 | 
1 files changed, 33 insertions, 28 deletions
diff --git a/plugins/web-search/web-search.plugin.zsh b/plugins/web-search/web-search.plugin.zsh index 28559deb9..572427b0b 100644 --- a/plugins/web-search/web-search.plugin.zsh +++ b/plugins/web-search/web-search.plugin.zsh @@ -1,43 +1,46 @@  # web_search from terminal  function web_search() { -  # get the open command -  local open_cmd -  if [[ "$OSTYPE" = darwin* ]]; then -    open_cmd='open' -  else -    open_cmd='xdg-open' -  fi +  emulate -L zsh + +  # define search engine URLS +  typeset -A urls +  urls=( +    google      "https://www.google.com/search?q=" +    bing        "https://www.bing.com/search?q=" +    yahoo       "https://search.yahoo.com/search?p=" +    duckduckgo  "https://www.duckduckgo.com/?q=" +    yandex      "https://yandex.ru/yandsearch?text=" +  ) + +  # define the open command +  case "$OSTYPE" in +    darwin*)  open_cmd="open" ;; +    cygwin*)  open_cmd="cygstart" ;; +    linux*)   open_cmd="xdg-open" ;; +    *)        echo "Platform $OSTYPE not supported" +              return 1 +              ;; +  esac    # check whether the search engine is supported -  if [[ ! $1 =~ '(google|bing|yahoo|duckduckgo)' ]]; -  then +  if [[ -z "$urls[$1]" ]]; then      echo "Search engine $1 not supported."      return 1    fi -  local url="http://www.$1.com" - -  # no keyword provided, simply open the search engine homepage -  if [[ $# -le 1 ]]; then -    $open_cmd "$url" -    return -  fi -  if [[ $1 == 'duckduckgo' ]]; then -  #slightly different search syntax for DDG -    url="${url}/?q=" +  # search or go to main page depending on number of arguments passed +  if [[ $# -gt 1 ]]; then +    # build search url: +    # join arguments passed with '+', then append to search engine URL +    url="${urls[$1]}${(j:+:)@[2,-1]}"    else -    url="${url}/search?q=" +    # build main page url: +    # split by '/', then rejoin protocol (1) and domain (2) parts with '//' +    url="${(j://:)${(s:/:)urls[$1]}[1,2]}"    fi -  shift   # shift out $1 - -  while [[ $# -gt 0 ]]; do -    url="${url}$1+" -    shift -  done -  url="${url%?}" # remove the last '+' -  nohup $open_cmd "$url" >/dev/null 2&>1 +  nohup $open_cmd "$url" &>/dev/null  } @@ -45,6 +48,8 @@ alias bing='web_search bing'  alias google='web_search google'  alias yahoo='web_search yahoo'  alias ddg='web_search duckduckgo' +alias yandex='web_search yandex' +  #add your own !bang searches here  alias wiki='web_search duckduckgo \!w'  alias news='web_search duckduckgo \!n'  | 
