diff options
Diffstat (limited to '')
-rw-r--r-- | XMonad/Prompt/AppendFile.hs | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/XMonad/Prompt/AppendFile.hs b/XMonad/Prompt/AppendFile.hs new file mode 100644 index 0000000..9493d15 --- /dev/null +++ b/XMonad/Prompt/AppendFile.hs @@ -0,0 +1,66 @@ +----------------------------------------------------------------------------- +-- | +-- Module : XMonad.Prompt.AppendFile +-- Copyright : (c) 2007 Brent Yorgey +-- License : BSD-style (see LICENSE) +-- +-- Maintainer : <byorgey@gmail.com> +-- Stability : unstable +-- Portability : unportable +-- +-- A prompt for appending a single line of text to a file. Useful for +-- keeping a file of notes, things to remember for later, and so on--- +-- using a keybinding, you can write things down just about as quickly +-- as you think of them, so it doesn't have to interrupt whatever else +-- you're doing. +-- +-- Who knows, it might be useful for other purposes as well! +-- +----------------------------------------------------------------------------- + +module XMonad.Prompt.AppendFile ( + -- * Usage + -- $usage + + appendFilePrompt + ) where + +import XMonad.Core +import XMonad.Prompt + +import System.IO +import Control.Exception + +-- $usage +-- +-- You can use this module by importing it, along with +-- "XMonad.Prompt", into your ~\/.xmonad\/xmonad.hs file: +-- +-- > import XMonad.Prompt +-- > import XMonad.Prompt.AppendFile +-- +-- and adding an appropriate keybinding, for example: +-- +-- > , ((modMask x .|. controlMask, xK_n), appendFilePrompt defaultXPConfig "/home/me/NOTES") +-- +-- For detailed instructions on editing your key bindings, see +-- "XMonad.Doc.Extending#Editing_key_bindings". + +data AppendFile = AppendFile FilePath + +instance XPrompt AppendFile where + showXPrompt (AppendFile fn) = "Add to " ++ fn ++ ": " + +-- | Given an XPrompt configuration and a file path, prompt the user +-- for a line of text, and append it to the given file. +appendFilePrompt :: XPConfig -> FilePath -> X () +appendFilePrompt c fn = mkXPrompt (AppendFile fn) + c + (const (return [])) + (doAppend fn) + +-- | Append a string to a file. +doAppend :: FilePath -> String -> X () +doAppend fn s = io $ bracket (openFile fn AppendMode) + hClose + (flip hPutStrLn s) |