mirror of
https://github.com/xmonad/xmonad-contrib.git
synced 2025-05-19 11:30:22 -07:00
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.
This commit is contained in:
parent
98840048e5
commit
baa85def23
66
XMonad/Prompt/AppendFile.hs
Normal file
66
XMonad/Prompt/AppendFile.hs
Normal file
@ -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)
|
@ -122,6 +122,7 @@ library
|
||||
XMonad.Prompt.Window
|
||||
XMonad.Prompt.Workspace
|
||||
XMonad.Prompt.XMonad
|
||||
XMonad.Prompt.AppendFile
|
||||
XMonad.Util.Anneal
|
||||
XMonad.Util.CustomKeys
|
||||
XMonad.Util.Dmenu
|
||||
|
Loading…
x
Reference in New Issue
Block a user