content: -----------------------------------------------------------------------------
  -- |
  -- Module      :  XMonad.Prompt.ConfirmPrompt
  -- Copyright   :  (C) 2015 Antoine Beaupré
  -- License     :  BSD3
  --
  -- Maintainer  :  Antoine Beaupré <anarcat@debian.org>
  -- Stability   :  unstable
  -- Portability :  unportable
  --
  -- A module for setting up simple confirmation prompts for keybindings.
  --
  -----------------------------------------------------------------------------
  module XMonad.Prompt.ConfirmPrompt (confirmPrompt
                                      -- * Usage
                                      -- $usage
                                      , module XMonad.Prompt
                                      -- * Use case: confirming exit
                                      -- $tip
                                      , EnterPrompt
                                      ) where
  
  import XMonad (X)
  import XMonad.Prompt (XPConfig, XPrompt, showXPrompt, mkXPrompt, mkComplFunFromList)
  
  {- $usage
  
  This module makes it easy to add a confirmation prompt for specific
  actions. Instead of just running the action, a simple confirmation
  prompt will be created using 'XMonad.Prompt' primitives. The action
  will then run normally if the user confirms.
  -}
  
  {- $tip
  This should be used something like this:
  
  > ...
  > , ((modm , xK_l), confirmPrompt defaultXPConfig "exit" $ io (exitWith ExitSuccess))
  > ...
  -}
  
  {- | Customized 'XPrompt' prompt that will ask to confirm the given string -}
  data EnterPrompt = EnterPrompt String
  instance XPrompt EnterPrompt where
      showXPrompt (EnterPrompt n) = "Confirm " ++ n ++ " (esc/ENTER)"
  
  {- | Prompt the user to confirm a given action. We offer no completion
       and simply ask to confirm (ENTER) or cancel (ESCAPE). The actual key
       handling is done by mkXPrompt.-}
  confirmPrompt :: XPConfig -> String -> X() -> X()
  confirmPrompt config app func = mkXPrompt (EnterPrompt app) config (mkComplFunFromList []) $ const func
  