mirror of
https://github.com/xmonad/xmonad-contrib.git
synced 2025-05-19 11:30:22 -07:00
X.A.Search: Make (!>) right associative
Unless specified otherwise, operators in Haskell associative to the left. However, the ergonomics of (!>) heavily lean towards the left operand being a "single" search engine, not a combined one. This causes trouble when not using `multi` or defining search engines with a right fold, but (following the documentation) writing something like multiEngine = intelligent (wikipedia !> mathworld !> (prefixAware google)) instead. This particular definition would force the user to write `wikipedia/mathworld:wikipedia:search-term` instead of just `wikipedia:search-term` to access the first search engine. Simply giving (!>) an explicit associativity fixes these problems.
This commit is contained in:
parent
586416b0f9
commit
8e0e8a605d
@ -348,6 +348,7 @@ removeColonPrefix s = if ':' `elem` s then drop 1 $ dropWhile (':' /=) s else s
|
|||||||
google. The use of intelligent will make sure that URLs are opened directly. -}
|
google. The use of intelligent will make sure that URLs are opened directly. -}
|
||||||
(!>) :: SearchEngine -> SearchEngine -> SearchEngine
|
(!>) :: SearchEngine -> SearchEngine -> SearchEngine
|
||||||
(SearchEngine name1 site1) !> (SearchEngine name2 site2) = searchEngineF (name1 ++ "/" ++ name2) (\s -> if (name1++":") `isPrefixOf` s then site1 (removeColonPrefix s) else site2 s)
|
(SearchEngine name1 site1) !> (SearchEngine name2 site2) = searchEngineF (name1 ++ "/" ++ name2) (\s -> if (name1++":") `isPrefixOf` s then site1 (removeColonPrefix s) else site2 s)
|
||||||
|
infixr 6 !>
|
||||||
|
|
||||||
{- | Makes a search engine prefix-aware. Especially useful together with '!>'.
|
{- | Makes a search engine prefix-aware. Especially useful together with '!>'.
|
||||||
It will automatically remove the prefix from a query so that you don\'t end
|
It will automatically remove the prefix from a query so that you don\'t end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user