Sophie

Sophie

distrib > Fedora > 18 > i386 > by-pkgid > 16551e78563a5b49ff9624ee1c8b8101 > files > 730

ghc-xmonad-contrib-devel-0.11-1.1.fc18.i686.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>XMonad.Actions.Search</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_XMonad-Actions-Search.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/XMonad-Actions-Search.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">xmonad-contrib-0.11: Third party extensions for xmonad</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>Safe-Infered</td></tr></table><p class="caption">XMonad.Actions.Search</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">Usage
</a></li><li><a href="#g:2">Use case: searching with a submap
</a></li><li><a href="#g:3">Types
</a></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc empty">&nbsp;</div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:search">search</a> :: <a href="XMonad-Actions-Search.html#t:Browser">Browser</a> -&gt; <a href="XMonad-Actions-Search.html#t:Site">Site</a> -&gt; <a href="XMonad-Actions-Search.html#t:Query">Query</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:X">X</a> <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a></li><li class="src short"><span class="keyword">data</span>  <a href="#t:SearchEngine">SearchEngine</a>  = <a href="#v:SearchEngine">SearchEngine</a> <a href="XMonad-Actions-Search.html#t:Name">Name</a> <a href="XMonad-Actions-Search.html#t:Site">Site</a></li><li class="src short"><a href="#v:searchEngine">searchEngine</a> :: <a href="XMonad-Actions-Search.html#t:Name">Name</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-String.html#t:String">String</a> -&gt; <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a></li><li class="src short"><a href="#v:searchEngineF">searchEngineF</a> :: <a href="XMonad-Actions-Search.html#t:Name">Name</a> -&gt; <a href="XMonad-Actions-Search.html#t:Site">Site</a> -&gt; <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a></li><li class="src short"><a href="#v:promptSearch">promptSearch</a> :: <a href="XMonad-Prompt.html#t:XPConfig">XPConfig</a> -&gt; <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:X">X</a> <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a></li><li class="src short"><a href="#v:promptSearchBrowser">promptSearchBrowser</a> :: <a href="XMonad-Prompt.html#t:XPConfig">XPConfig</a> -&gt; <a href="XMonad-Actions-Search.html#t:Browser">Browser</a> -&gt; <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:X">X</a> <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a></li><li class="src short"><a href="#v:selectSearch">selectSearch</a> :: <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:X">X</a> <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a></li><li class="src short"><a href="#v:selectSearchBrowser">selectSearchBrowser</a> :: <a href="XMonad-Actions-Search.html#t:Browser">Browser</a> -&gt; <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:X">X</a> <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a></li><li class="src short"><a href="#v:isPrefixOf">isPrefixOf</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Eq.html#t:Eq">Eq</a> a =&gt; [a] -&gt; [a] -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:escape">escape</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-String.html#t:String">String</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-String.html#t:String">String</a></li><li class="src short"><a href="#v:use">use</a> :: <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a> -&gt; <a href="XMonad-Actions-Search.html#t:Site">Site</a></li><li class="src short"><a href="#v:intelligent">intelligent</a> :: <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a> -&gt; <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a></li><li class="src short"><a href="#v:-33--62-">(!&gt;)</a> :: <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a> -&gt; <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a> -&gt; <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a></li><li class="src short"><a href="#v:prefixAware">prefixAware</a> :: <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a> -&gt; <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a></li><li class="src short"><a href="#v:namedEngine">namedEngine</a> :: <a href="XMonad-Actions-Search.html#t:Name">Name</a> -&gt; <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a> -&gt; <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a></li><li class="src short"><a href="#v:amazon">amazon</a>, <a href="#v:youtube">youtube</a>, <a href="#v:wiktionary">wiktionary</a>, <a href="#v:wikipedia">wikipedia</a>, <a href="#v:wayback">wayback</a>, <a href="#v:thesaurus">thesaurus</a>, <a href="#v:scholar">scholar</a>, <a href="#v:openstreetmap">openstreetmap</a>, <a href="#v:mathworld">mathworld</a>, <a href="#v:maps">maps</a>, <a href="#v:lucky">lucky</a>, <a href="#v:isohunt">isohunt</a>, <a href="#v:imdb">imdb</a>, <a href="#v:images">images</a>, <a href="#v:hoogle">hoogle</a>, <a href="#v:hackage">hackage</a>, <a href="#v:google">google</a>, <a href="#v:dictionary">dictionary</a>, <a href="#v:debpts">debpts</a>, <a href="#v:debbts">debbts</a>, <a href="#v:deb">deb</a>, <a href="#v:codesearch">codesearch</a>, <a href="#v:alpha">alpha</a> :: <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a></li><li class="src short"><a href="#v:multi">multi</a> :: <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:Browser">Browser</a> = <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/System-IO.html#t:FilePath">FilePath</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:Site">Site</a> = <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-String.html#t:String">String</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-String.html#t:String">String</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:Query">Query</a> = <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-String.html#t:String">String</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:Name">Name</a> = <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-String.html#t:String">String</a></li><li class="src short"><span class="keyword">data</span>  <a href="#t:Search">Search</a> </li></ul></div><div id="interface"><h1 id="g:1">Usage
</h1><div class="doc"><p>This module is intended to allow easy access to databases on the
   Internet through xmonad's interface. The idea is that one wants to
   run a search but the query string and the browser to use must come
   from somewhere. There are two places the query string can come from
   - the user can type it into a prompt which pops up, or the query
   could be available already in the X Windows copy/paste buffer
   (perhaps you just highlighted the string of interest).
</p><p>Thus, there are two main functions: <code><a href="XMonad-Actions-Search.html#v:promptSearch">promptSearch</a></code>, and
   <code><a href="XMonad-Actions-Search.html#v:selectSearch">selectSearch</a></code> (implemented using the more primitive <code><a href="XMonad-Actions-Search.html#v:search">search</a></code>). To
   each of these is passed an engine function; this is a function that
   knows how to search a particular site.
</p><p>For example, the <code><a href="XMonad-Actions-Search.html#v:google">google</a></code> function knows how to search Google, and
   so on. You pass <code><a href="XMonad-Actions-Search.html#v:promptSearch">promptSearch</a></code> and <code><a href="XMonad-Actions-Search.html#v:selectSearch">selectSearch</a></code> the engine you
   want, the browser you want, and anything special they might need;
   this whole line is then bound to a key of you choosing in your
   xmonad.hs. For specific examples, see each function.  This module
   is easily extended to new sites by using <code><a href="XMonad-Actions-Search.html#v:searchEngine">searchEngine</a></code>.
</p><p>The currently available search engines are:
</p><ul><li> <code><a href="XMonad-Actions-Search.html#v:amazon">amazon</a></code> -- Amazon keyword search.
</li><li> <code><a href="XMonad-Actions-Search.html#v:alpha">alpha</a></code> -- Wolfram|Alpha query.
</li><li> <code><a href="XMonad-Actions-Search.html#v:codesearch">codesearch</a></code> -- Google Labs Code Search search.
</li><li> <code><a href="XMonad-Actions-Search.html#v:deb">deb</a></code>    -- Debian package search.
</li><li> <code><a href="XMonad-Actions-Search.html#v:debbts">debbts</a></code> -- Debian Bug Tracking System.
</li><li> <code><a href="XMonad-Actions-Search.html#v:debpts">debpts</a></code>  -- Debian Package Tracking System.
</li><li> <code><a href="XMonad-Actions-Search.html#v:dictionary">dictionary</a></code> -- dictionary.reference.com search.
</li><li> <code><a href="XMonad-Actions-Search.html#v:google">google</a></code> -- basic Google search.
</li><li> <code><a href="XMonad-Actions-Search.html#v:hackage">hackage</a></code> -- Hackage, the Haskell package database.
</li><li> <code><a href="XMonad-Actions-Search.html#v:hoogle">hoogle</a></code> -- Hoogle, the Haskell libraries API search engine.
</li><li> <code><a href="XMonad-Actions-Search.html#v:images">images</a></code> -- Google images.
</li><li> <code><a href="XMonad-Actions-Search.html#v:imdb">imdb</a></code>   -- the Internet Movie Database.
</li><li> <code><a href="XMonad-Actions-Search.html#v:isohunt">isohunt</a></code> -- isoHunt search.
</li><li> <code><a href="XMonad-Actions-Search.html#v:lucky">lucky</a></code> -- Google <a href="I'm feeling lucky.html">I'm feeling lucky</a> search.
</li><li> <code><a href="XMonad-Actions-Search.html#v:maps">maps</a></code>   -- Google maps.
</li><li> <code><a href="XMonad-Actions-Search.html#v:mathworld">mathworld</a></code> -- Wolfram MathWorld search.
</li><li> <code><a href="XMonad-Actions-Search.html#v:openstreetmap">openstreetmap</a></code> -- OpenStreetMap free wiki world map.
</li><li> <code><a href="XMonad-Actions-Search.html#v:scholar">scholar</a></code> -- Google scholar academic search.
</li><li> <code><a href="XMonad-Actions-Search.html#v:thesaurus">thesaurus</a></code> -- thesaurus.reference.com search.
</li><li> <code><a href="XMonad-Actions-Search.html#v:wayback">wayback</a></code> -- the Wayback Machine.
</li><li> <code><a href="XMonad-Actions-Search.html#v:wikipedia">wikipedia</a></code> -- basic Wikipedia search.
</li><li> <code><a href="XMonad-Actions-Search.html#v:youtube">youtube</a></code> -- Youtube video search.
</li><li> <code><a href="XMonad-Actions-Search.html#v:multi">multi</a></code> -- Search based on the prefix. &quot;amazon:Potter&quot; will use amazon, etc. With no prefix searches google.
</li></ul><p>Feel free to add more! 
</p></div><div class="top"><p class="src"><a name="v:search" class="def">search</a> :: <a href="XMonad-Actions-Search.html#t:Browser">Browser</a> -&gt; <a href="XMonad-Actions-Search.html#t:Site">Site</a> -&gt; <a href="XMonad-Actions-Search.html#t:Query">Query</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:X">X</a> <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a><a href="src/XMonad-Actions-Search.html#search" class="link">Source</a></p><div class="doc"><p>Given a browser, a search engine's transformation function, and a search term, perform the
   requested search in the browser.
</p></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:SearchEngine" class="def">SearchEngine</a>  <a href="src/XMonad-Actions-Search.html#SearchEngine" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:SearchEngine" class="def">SearchEngine</a> <a href="XMonad-Actions-Search.html#t:Name">Name</a> <a href="XMonad-Actions-Search.html#t:Site">Site</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div><div class="top"><p class="src"><a name="v:searchEngine" class="def">searchEngine</a> :: <a href="XMonad-Actions-Search.html#t:Name">Name</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-String.html#t:String">String</a> -&gt; <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a><a href="src/XMonad-Actions-Search.html#searchEngine" class="link">Source</a></p><div class="doc"><p>Given a base URL, create the <code><a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a></code> that escapes the query and
   appends it to the base. You can easily define a new engine locally using
   exported functions without needing to modify <a href="XMonad-Actions-Search.html">XMonad.Actions.Search</a>:
</p><pre> myNewEngine = searchEngine &quot;site&quot; &quot;http://site.com/search=&quot;
</pre><p>The important thing is that the site has a interface which accepts the escaped query
   string as part of the URL. Alas, the exact URL to feed searchEngine varies
   from site to site, often considerably, so there's no general way to cover this.
</p><p>Generally, examining the resultant URL of a search will allow you to reverse-engineer
   it if you can't find the necessary URL already described in other projects such as Surfraw. 
</p></div></div><div class="top"><p class="src"><a name="v:searchEngineF" class="def">searchEngineF</a> :: <a href="XMonad-Actions-Search.html#t:Name">Name</a> -&gt; <a href="XMonad-Actions-Search.html#t:Site">Site</a> -&gt; <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a><a href="src/XMonad-Actions-Search.html#searchEngineF" class="link">Source</a></p><div class="doc"><p>If your search engine is more complex than this (you may want to identify
   the kind of input and make the search URL dependent on the input or put the query
   inside of a URL instead of in the end) you can use the alternative <code><a href="XMonad-Actions-Search.html#v:searchEngineF">searchEngineF</a></code> function.
</p><pre> searchFunc :: String -&gt; String
 searchFunc s | &quot;wiki:&quot;   `isPrefixOf` s = &quot;http://en.wikipedia.org/wiki/&quot; ++ (escape $ tail $ snd $ break (==':') s)
              | &quot;http://&quot; `isPrefixOf` s = s
              | otherwise               = (use google) s
 myNewEngine = searchEngineF &quot;mymulti&quot; searchFunc
</pre><p><code>searchFunc</code> here searches for a word in wikipedia if it has a prefix
   of &quot;wiki:&quot; (you can use the <code><a href="XMonad-Actions-Search.html#v:escape">escape</a></code> function to escape any forbidden characters), opens an address
   directly if it starts with &quot;http://&quot; and otherwise uses the provided google search engine.
   You can use other engines inside of your own through the <code><a href="XMonad-Actions-Search.html#v:use">use</a></code> function as shown above to make
   complex searches.
</p><p>The user input will be automatically escaped in search engines created with <code><a href="XMonad-Actions-Search.html#v:searchEngine">searchEngine</a></code>,
   <code><a href="XMonad-Actions-Search.html#v:searchEngineF">searchEngineF</a></code>, however, completely depends on the transformation function passed to it. 
</p></div></div><div class="top"><p class="src"><a name="v:promptSearch" class="def">promptSearch</a> :: <a href="XMonad-Prompt.html#t:XPConfig">XPConfig</a> -&gt; <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:X">X</a> <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a><a href="src/XMonad-Actions-Search.html#promptSearch" class="link">Source</a></p><div class="doc"><p>Like <code><a href="XMonad-Actions-Search.html#v:search">search</a></code>, but in this case, the string is not specified but grabbed
 from the user's response to a prompt. Example:
</p><pre> , ((modm, xK_g), promptSearch greenXPConfig google)
</pre><p>This specializes <a href="promptSearchBrowser.html">promptSearchBrowser</a> by supplying the browser argument as
   supplied by <code><a href="XMonad-Prompt-Shell.html#v:getBrowser">getBrowser</a></code> from <a href="XMonad-Prompt-Shell.html">XMonad.Prompt.Shell</a>. 
</p></div></div><div class="top"><p class="src"><a name="v:promptSearchBrowser" class="def">promptSearchBrowser</a> :: <a href="XMonad-Prompt.html#t:XPConfig">XPConfig</a> -&gt; <a href="XMonad-Actions-Search.html#t:Browser">Browser</a> -&gt; <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:X">X</a> <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a><a href="src/XMonad-Actions-Search.html#promptSearchBrowser" class="link">Source</a></p><div class="doc"><p>Like <code><a href="XMonad-Actions-Search.html#v:search">search</a></code>, but for use with the output from a Prompt; it grabs the
   Prompt's result, passes it to a given searchEngine and opens it in a given
   browser. 
</p></div></div><div class="top"><p class="src"><a name="v:selectSearch" class="def">selectSearch</a> :: <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:X">X</a> <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a><a href="src/XMonad-Actions-Search.html#selectSearch" class="link">Source</a></p><div class="doc"><p>Like <code><a href="XMonad-Actions-Search.html#v:search">search</a></code>, but for use with the X selection; it grabs the selection,
   passes it to a given searchEngine and opens it in the default browser . Example:
</p><pre> , ((modm .|. shiftMask, xK_g), selectSearch google)
</pre><p>This specializes <a href="selectSearchBrowser.html">selectSearchBrowser</a> by supplying the browser argument as
   supplied by <code><a href="XMonad-Prompt-Shell.html#v:getBrowser">getBrowser</a></code> from <a href="XMonad-Prompt-Shell.html">XMonad.Prompt.Shell</a>. 
</p></div></div><div class="top"><p class="src"><a name="v:selectSearchBrowser" class="def">selectSearchBrowser</a> :: <a href="XMonad-Actions-Search.html#t:Browser">Browser</a> -&gt; <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:X">X</a> <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Tuple.html#t:-40--41-">()</a><a href="src/XMonad-Actions-Search.html#selectSearchBrowser" class="link">Source</a></p><div class="doc"><p>Like <code><a href="XMonad-Actions-Search.html#v:search">search</a></code>, but for use with the X selection; it grabs the selection,
   passes it to a given searchEngine and opens it in a given browser.
</p></div></div><div class="top"><p class="src"><a name="v:isPrefixOf" class="def">isPrefixOf</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Eq.html#t:Eq">Eq</a> a =&gt; [a] -&gt; [a] -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Bool.html#t:Bool">Bool</a></p><div class="doc"><p>The <code><a href="XMonad-Actions-Search.html#v:isPrefixOf">isPrefixOf</a></code> function takes two lists and returns <code><a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Bool.html#v:True">True</a></code>
 iff the first list is a prefix of the second.
</p></div></div><div class="top"><p class="src"><a name="v:escape" class="def">escape</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-String.html#t:String">String</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-String.html#t:String">String</a><a href="src/XMonad-Actions-Search.html#escape" class="link">Source</a></p><div class="doc"><p>Escape the search string so search engines understand it. Only
 digits and ASCII letters are not encoded. All non ASCII characters
 which are encoded as UTF8
</p></div></div><div class="top"><p class="src"><a name="v:use" class="def">use</a> :: <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a> -&gt; <a href="XMonad-Actions-Search.html#t:Site">Site</a><a href="src/XMonad-Actions-Search.html#use" class="link">Source</a></p><div class="doc"><p>Given an already defined search engine, extracts its transformation
   function, making it easy to create compound search engines.
   For an instance you can use <code>use google</code> to get a function which
   makes the same transformation as the google search engine would.
</p></div></div><div class="top"><p class="src"><a name="v:intelligent" class="def">intelligent</a> :: <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a> -&gt; <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a><a href="src/XMonad-Actions-Search.html#intelligent" class="link">Source</a></p><div class="doc"><p>This function wraps up a search engine and creates a new one, which works
   like the argument, but goes directly to a URL if one is given rather than
   searching.
</p><pre> myIntelligentGoogleEngine = intelligent google
</pre><p>Now if you search for http://xmonad.org it will directly open in your browser
</p></div></div><div class="top"><p class="src"><a name="v:-33--62-" class="def">(!&gt;)</a> :: <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a> -&gt; <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a> -&gt; <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a><a href="src/XMonad-Actions-Search.html#%21%3E" class="link">Source</a></p><div class="doc"><p>Connects a few search engines into one. If the search engines' names are
   &quot;s1&quot;, &quot;s2&quot; and &quot;s3&quot;, then the resulting engine will use s1 if the query
   is <code>s1:word</code>, s2 if you type <code>s2:word</code> and s3 in all other cases.
</p><p>Example:
</p><pre> multiEngine = intelligent (wikipedia !&gt; mathworld !&gt; (prefixAware google))
</pre><p>Now if you type &quot;wiki:Haskell&quot; it will search for &quot;Haskell&quot; in Wikipedia,
  &quot;mathworld:integral&quot; will search mathworld, and everything else will fall back to
  google. The use of intelligent will make sure that URLs are opened directly. 
</p></div></div><div class="top"><p class="src"><a name="v:prefixAware" class="def">prefixAware</a> :: <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a> -&gt; <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a><a href="src/XMonad-Actions-Search.html#prefixAware" class="link">Source</a></p><div class="doc"><p>Makes a search engine prefix-aware. Especially useful together with <code><a href="XMonad-Actions-Search.html#v:-33--62-">!&gt;</a></code>.
   It will automatically remove the prefix from a query so that you don't end
     up searching for google:xmonad if google is your fallback engine and you
     explicitly add the prefix. 
</p></div></div><div class="top"><p class="src"><a name="v:namedEngine" class="def">namedEngine</a> :: <a href="XMonad-Actions-Search.html#t:Name">Name</a> -&gt; <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a> -&gt; <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a><a href="src/XMonad-Actions-Search.html#namedEngine" class="link">Source</a></p><div class="doc"><p>Changes search engine's name 
</p></div></div><div class="top"><p class="src"><a name="v:amazon" class="def">amazon</a>, <a name="v:youtube" class="def">youtube</a>, <a name="v:wiktionary" class="def">wiktionary</a>, <a name="v:wikipedia" class="def">wikipedia</a>, <a name="v:wayback" class="def">wayback</a>, <a name="v:thesaurus" class="def">thesaurus</a>, <a name="v:scholar" class="def">scholar</a>, <a name="v:openstreetmap" class="def">openstreetmap</a>, <a name="v:mathworld" class="def">mathworld</a>, <a name="v:maps" class="def">maps</a>, <a name="v:lucky" class="def">lucky</a>, <a name="v:isohunt" class="def">isohunt</a>, <a name="v:imdb" class="def">imdb</a>, <a name="v:images" class="def">images</a>, <a name="v:hoogle" class="def">hoogle</a>, <a name="v:hackage" class="def">hackage</a>, <a name="v:google" class="def">google</a>, <a name="v:dictionary" class="def">dictionary</a>, <a name="v:debpts" class="def">debpts</a>, <a name="v:debbts" class="def">debbts</a>, <a name="v:deb" class="def">deb</a>, <a name="v:codesearch" class="def">codesearch</a>, <a name="v:alpha" class="def">alpha</a> :: <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a><a href="src/XMonad-Actions-Search.html#amazon" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:multi" class="def">multi</a> :: <a href="XMonad-Actions-Search.html#t:SearchEngine">SearchEngine</a><a href="src/XMonad-Actions-Search.html#multi" class="link">Source</a></p></div><h1 id="g:2">Use case: searching with a submap
</h1><div class="doc"><p>In combination with <a href="XMonad-Actions-Submap.html">XMonad.Actions.Submap</a> you can create a powerful
and easy way to search without adding a whole bunch of bindings.
</p><p>First import the necessary modules:
</p><pre> import qualified XMonad.Prompt         as P
 import qualified XMonad.Actions.Submap as SM
 import qualified XMonad.Actions.Search as S
</pre><p>Then add the following to your key bindings:
</p><pre> ...
 -- Search commands
 , ((modm, xK_s), SM.submap $ searchEngineMap $ S.promptSearch P.defaultXPConfig)
 , ((modm .|. shiftMask, xK_s), SM.submap $ searchEngineMap $ S.selectSearch)

 ...

 searchEngineMap method = M.fromList $
       [ ((0, xK_g), method S.google)
       , ((0, xK_h), method S.hoogle)
       , ((0, xK_w), method S.wikipedia)
       ]
</pre><p>Or in combination with XMonad.Util.EZConfig:
</p><pre> ...
 ] -- end of regular keybindings
 -- Search commands
 ++ [(&quot;M-s &quot; ++ k, S.promptSearch P.defaultXPConfig f) | (k,f) &lt;- searchList ]
 ++ [(&quot;M-S-s &quot; ++ k, S.selectSearch f) | (k,f) &lt;- searchList ]

 ...

 searchList :: [(String, S.SearchEngine)]
 searchList = [ (&quot;g&quot;, S.google)
              , (&quot;h&quot;, S.hoohle)
              , (&quot;w&quot;, S.wikipedia)
              ]
</pre><p>Make sure to set firefox to open new pages in a new window instead of
in a new tab: <code>Firefox -&gt; Edit -&gt; Preferences -&gt; Tabs -&gt; New pages
should be opened in...</code>
</p><p>Now <em>mod-s</em> + <em>g</em>/<em>h</em>/<em>w</em> prompts you for a search string, then
opens a new firefox window that performs the search on Google, Hoogle
or Wikipedia respectively.
</p><p>If you select something in whatever application and hit <em>mod-shift-s</em> +
<em>g</em>/<em>h</em>/<em>w</em> it will search the selected string with the specified
engine.
</p><p>Happy searching! 
</p></div><h1 id="g:3">Types
</h1><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Browser" class="def">Browser</a> = <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/System-IO.html#t:FilePath">FilePath</a><a href="src/XMonad-Actions-Search.html#Browser" class="link">Source</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Site" class="def">Site</a> = <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-String.html#t:String">String</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-String.html#t:String">String</a><a href="src/XMonad-Actions-Search.html#Site" class="link">Source</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Query" class="def">Query</a> = <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-String.html#t:String">String</a><a href="src/XMonad-Actions-Search.html#Query" class="link">Source</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Name" class="def">Name</a> = <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-String.html#t:String">String</a><a href="src/XMonad-Actions-Search.html#Name" class="link">Source</a></p></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Search" class="def">Search</a>  <a href="src/XMonad-Actions-Search.html#Search" class="link">Source</a></p><div class="doc"><p>A customized prompt indicating we are searching, and the name of the site.
</p></div><div class="subs instances"><p id="control.i:Search" class="caption collapser" onclick="toggleSection('i:Search')">Instances</p><div id="section.i:Search" class="show"><table><tr><td class="src"><a href="XMonad-Prompt.html#t:XPrompt">XPrompt</a> <a href="XMonad-Actions-Search.html#t:Search">Search</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.10.0</p></div></body></html>