From c9d8c414434c999414a7fdfa4e7e8e245d7049cf Mon Sep 17 00:00:00 2001 From: Brent Yorgey Date: Tue, 27 Nov 2007 23:42:58 +0100 Subject: AppendFile: initial import XMonad.Prompt.AppendFile is a new module which provides a prompt for appending a single line of text to a file. I use it for quickly writing down ideas/todos/etc. to a special file when I can't be bothered to stop what I'm doing to write things down properly. darcs-hash:20071127224258-bd4d7-6695475026c9032a5f007ef924abb7dd3334181e.gz --- XMonad/Prompt/AppendFile.hs | 66 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 XMonad/Prompt/AppendFile.hs (limited to 'XMonad/Prompt/AppendFile.hs') 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 : +-- 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) -- cgit v1.2.3