Wed Dec 30 02:01:39 EST 2009  Daniel Wagner <daniel@wagner-home.com>
  * allow escaping in string constants in the configuration

Wed Dec 30 02:46:04 EST 2009  Daniel Wagner <daniel@wagner-home.com>
  * add positions with height information

New patches:

[allow escaping in string constants in the configuration
Daniel Wagner <daniel@wagner-home.com>**20091230070139
 Ignore-this: 2d6a4b3a08e5f52033e27a6db92f37a
] {
hunk ./Parsers.hs 28
 
 import Control.Monad.Writer(mapM_, ap, liftM, liftM2, MonadWriter, tell)
 import Control.Applicative.Permutation(optAtom, runPermsSep)
-import Control.Applicative(Applicative, (<*>), Alternative, empty, (<$), (<$>))
+import Control.Applicative(Applicative, (<*>), Alternative, empty, (<$>))
 import qualified Control.Applicative
 
 import Data.List(tails, find, inits)
hunk ./Parsers.hs 151
     = fun `liftM` a `ap` b `ap` c `ap` d `ap` e `ap` f `ap` g `ap` h `ap` i
 
 stripComments :: String -> String
-stripComments = unlines . map (drop 5 . strip False . (replicate 5 ' '++)) . lines
+stripComments = unlines . map (strip False) . lines
     where strip m ('-':'-':xs) = if m then "--" ++ strip m xs else ""
hunk ./Parsers.hs 153
-          strip m ('\\':xss) = case xss of
-                                '\\':xs -> '\\' : strip m xs
-                                _ -> strip m $ drop 1 xss
           strip m ('"':xs) = '"': strip (not m) xs
           strip m (x:xs) = x : strip m xs
           strip _ [] = []
hunk ./Parsers.hs 170
         eof
         return x
       perms = runPermsSep (WrappedParser $ wrapSkip $ string ",") $ liftM9 Config
-        <$> withDef font         "font"          strField
-        <*> withDef bgColor      "bgColor"       strField
-        <*> withDef fgColor      "fgColor"       strField
-        <*> withDef position     "position"     (field readsToParsec)
-        <*> withDef lowerOnStart "lowerOnStart" (field parseEnum    )
-        <*> withDef commands     "commands"     (field readsToParsec)
-        <*> withDef sepChar      "sepChar"       strField
-        <*> withDef alignSep     "alignSep"      strField
-        <*> withDef template     "template"      strField
+        <$> withDef font         "font"
+        <*> withDef bgColor      "bgColor"
+        <*> withDef fgColor      "fgColor"
+        <*> withDef position     "position"
+        <*> withDef lowerOnStart "lowerOnStart"
+        <*> withDef commands     "commands"
+        <*> withDef sepChar      "sepChar"
+        <*> withDef alignSep     "alignSep"
+        <*> withDef template     "template"
 
       wrapSkip x = many space >> liftM2 const x (many space)
       sepEndSpaces = mapM_ (\s -> liftM2 const (string s) $ many space)
hunk ./Parsers.hs 183
 
-      withDef ext name parser = optAtom (do tell [name]; return $ ext defaultConfig)
-                                        (liftM return $ WrappedParser $ parser name)
-
-      parseEnum = choice $ map (\x -> x <$ string (show x)) [minBound .. maxBound]
-
-      strField name = flip field name $ between (char '"') (char '"') (many1 . satisfy $ (/= '"'))
-      field cont name = sepEndSpaces [name,"="] >> cont
+      field  cont name = sepEndSpaces [name,"="] >> cont
+      withDef ext name = optAtom (do tell [name]; return $ ext defaultConfig)
+                                 (liftM return $ WrappedParser $ field readsToParsec name)
}
[add positions with height information
Daniel Wagner <daniel@wagner-home.com>**20091230074604
 Ignore-this: 1244d13c44610fc3b1d9b73a0ebfac59
] {
hunk ./Config.hs 61
 
 data XPosition = Top
                | TopW Align Int
+               | TopSize Align Int Int
                | Bottom
                | BottomW Align Int
hunk ./Config.hs 64
+               | BottomSize Align Int Int
                | Static {xpos, ypos, width, height :: Int}
                | OnScreen Int XPosition
                  deriving ( Read, Eq )
hunk ./README 134
 :    Default font color.
 
 `position`
-:     Top, TopW, Bottom, BottomW or Static (with x, y, width and height).
+:     Top, TopW, TopSize, Bottom, BottomW, BottomSize or Static (with x, y,
+      width and height).
 
 :     TopW and BottomW take 2 arguments: an alignment parameter (L for
       left, C for centered, R for Right) and an integer for the
hunk ./README 142
       percentage width xmobar window will have in respect to the
       screen width.
 
+:     TopSize and BottomSize take 3 arguments: an alignment parameter, an
+      integer for the percentage width, and an integer for the minimum pixel
+      height that the xmobar window will have.
+
 :     For example:
 
 :          position = BottomW C 75
hunk ./Xmobar.hs 151
 setPosition p rs ht =
     case p' of
     Top                -> (Rectangle rx          ry      rw      h     , True)
-    TopW L i           -> (Rectangle rx          ry     (nw i)   h     , True)
-    TopW R i           -> (Rectangle (right  i)  ry     (nw i)   h     , True)
-    TopW C i           -> (Rectangle (center i)  ry     (nw i)   h     , True)
+    TopW a i           -> (Rectangle (ax a i  )  ry     (nw i )  h     , True)
+    TopSize a i ch     -> (Rectangle (ax a i  )  ry     (nw i ) (mh ch), True)
     Bottom             -> (Rectangle rx          ny      rw      h     , True)
hunk ./Xmobar.hs 154
-    BottomW L i        -> (Rectangle rx          ny     (nw i)   h     , True)
-    BottomW R i        -> (Rectangle (right  i)  ny     (nw i)   h     , True)
-    BottomW C i        -> (Rectangle (center i)  ny     (nw i)   h     , True)
+    BottomW a i        -> (Rectangle (ax a i  )  ny     (nw i )  h     , True)
+    BottomSize a i ch  -> (Rectangle (ax a i  )  ny     (nw i ) (mh ch), True)
     Static cx cy cw ch -> (Rectangle (fi cx   ) (fi cy) (fi cw) (fi ch), True)
     OnScreen _ p''     -> setPosition p'' [scr] ht
     where
hunk ./Xmobar.hs 166
       center i = rx + (fi $ div (remwid i) 2)
       right  i = rx + (fi $ remwid i)
       remwid i = rw - pw (fi i)
+      ax L     = const rx
+      ax R     = right
+      ax C     = center
       pw i     = rw * (min 100 i) `div` 100
       nw       = fi . pw . fi
       h        = fi ht
hunk ./Xmobar.hs 172
+      mh h'    = max (fi h') h
 
       safeIndex i = lookup i . zip [0..]
 
hunk ./Xmobar.hs 198
     OnScreen _ p'   -> getStrutValues r p' rwh
     Top             -> [0, 0, st,  0, 0, 0, 0, 0, nx, nw,  0,  0]
     TopW    _ _     -> [0, 0, st,  0, 0, 0, 0, 0, nx, nw,  0,  0]
+    TopSize      {} -> [0, 0, st,  0, 0, 0, 0, 0, nx, nw,  0,  0]
     Bottom          -> [0, 0,  0, sb, 0, 0, 0, 0,  0,  0, nx, nw]
     BottomW _ _     -> [0, 0,  0, sb, 0, 0, 0, 0,  0,  0, nx, nw]
hunk ./Xmobar.hs 201
+    BottomSize   {} -> [0, 0,  0, sb, 0, 0, 0, 0,  0,  0, nx, nw]
     Static _ _ _ _  -> getStaticStrutValues p rwh
     where st = fi y + fi h
           sb = rwh - fi y
}

Context:

[Allow comments and leading whitespace in config (Adam Vogt)
Jose Antonio Ortega Ruiz <jao@gnu.org>**20100128183302
 Ignore-this: 121d37987dbb55c41ee5799a5ec94e57
] 
[Another tiny refactoring.
Jose Antonio Ortega Ruiz <jao@gnu.org>**20100125204839
 Ignore-this: 50e76f6d7eb97924b10842a597a00066
] 
[Inconsequential refactoring of Disk.
Jose Antonio Ortega Ruiz <jao@gnu.org>**20100125201807
 Ignore-this: b1d249892a8a8a44bdbe0dad9e366bcb
] 
[Documentation for the Disk monitor
Jose A Ortega Ruiz <jao@gnu.org>**20100125032850
 Ignore-this: 6ad4fcf176b34efc1527973f4f18e12
] 
[Disk: better error recovery
Jose Antonio Ortega Ruiz <jao@gnu.org>**20100125031534
 Ignore-this: 9a4573711403eb432c20e99efe176811
] 
[hlinting the previous patch
Jose A Ortega Ruiz <jao@gnu.org>**20100125025511
 Ignore-this: 9d5eba79f7a89ec7cea59d6b36089cba
] 
[New disk i/o monitor
Jose A Ortega Ruiz <jao@gnu.org>**20100125023112
 Ignore-this: f12c861c05fbaa80271f577dee952c69
] 
[CoreTemps: revert to non-rounding by default
Jose A. Ortega Ruiz <jao@gnu.org>**20100121123451
 Ignore-this: b8e96bb91956ea8235c7cae5dba4f4b1
 We can control now whether to print decimals using -M
] 
[New options in Monitors (padding and width)
Jose A. Ortega Ruiz <jao@gnu.org>**20100121123111
 Ignore-this: c49cd3f7a80073e897cddaab88143f56
 Maximum/minimum field width, padding characters and padding alignment
 can now be specified as options (-M, -m, -c, -a).
] 
[README updated
Jose A. Ortega Ruiz <jao@gnu.org>**20100120221754
 Ignore-this: 48b90288174eb8b78e0b66b892d63e
] 
[New Monitor option to specify minimum percentage width
Jose A. Ortega Ruiz <jao@gnu.org>**20100120215608
 Ignore-this: 5e0413c218f257c0db06f83665bd2e5
 The new option, -p, is a number specifying how many characters the numerical part
 of percentages should take. Padding consists of whitespace. 
 E.g. -p 3 makes '3%' appear as '  3%'. The default value is 0, which means padding
 is disabled.
] 
[MultiCpus: hlinting
Jose A. Ortega Ruiz <jao@gnu.org>**20100119222347
 Ignore-this: 3052c410453447cc9ff89950df4c0077
] 
[CoreTemp: round temperatures instead of truncating them
Jose A. Ortega Ruiz <jao@gnu.org>**20100119194726
 Ignore-this: dd5d719c37169216ad664f916d2bb590
] 
[CoreTemp: return temperatures as integer values
Jose A. Ortega Ruiz <jao@gnu.org>**20100119191955
 Ignore-this: ce917bed99a2d812238d4581fbbff3d6
] 
[Tiny refactoring
Jose A. Ortega Ruiz <jao@gnu.org>**20100119021753
 Ignore-this: 404b0000887a9c4dfc5209a9f647d561
] 
[MultiCpus: pad percentages
Jose A. Ortega Ruiz <jao@gnu.org>**20100119020244
 Ignore-this: 6b8133d37a7ed40ae8b3dbc4d31920fa
] 
[MultiCpus: average only over two samples
Jose A. Ortega Ruiz <jao@gnu.org>**20100118010702
 Ignore-this: bb8498323409ea15d452f46ab64f31cb
] 
[Small refactoring
Jose A. Ortega Ruiz <jao@gnu.org>**20100118010639
 Ignore-this: 886cfda3510443d12f90c6184bf7f6e6
] 
[Export only public functions in MultiCpu
Jose A. Ortega Ruiz <jao@gnu.org>**20100117233534
 Ignore-this: efde63978ca9b2ff9450f5f173700f18
] 
[Checking for division by 0 in MultiCpus
Jose A. Ortega Ruiz <jao@gnu.org>**20100117233109
 Ignore-this: 37834de5acc423c47e29c9e0a492b71c
] 
[New MultiCpu monitor that works like Cpu for multiple CPU cores
Jose A. Ortega Ruiz <jao@gnu.org>**20100117221500
 Ignore-this: 64152f888f1e007612dc8e1f1eace875
] 
[Since ACPI reads can be slow, use a helper /bin/cat process to perform them
svein.ove@aas.no**20091102173811
 Ignore-this: ae34afa8524d6cfb6baab8eb6c3a3b85
] 
[Also avoid excessive precision in memory displays
John Goerzen <jgoerzen@complete.org>**20080917031153] 
[Don't show tenths of items
John Goerzen <jgoerzen@complete.org>**20080917025306
 
 This is more precision than needed for CPU, Mem, Swap, etc. and 
 consumes valuable space on small devices
] 
[Use native utf-8 input in GHC 6.12
svein.ove@aas.no**20100102193207
 Ignore-this: f307e7ee3f4b04a692b1a4183f3de83e
] 
[Add very experimental EWMH plugin
Spencer Janssen <sjanssen@cse.unl.edu>**20091209021620
 Ignore-this: 9837736ecbe1f4595f7f892bbfa3f620
] 
[xmonadpropwrite: pass input unchanged, UTF8 not needed
Tomas Janousek <tomi@nomi.cz>**20091120234024
 Ignore-this: 54b2aa3a8c9fa566d10474b5b09d0017
] 
[extend XMonadLog with XPropertyLog
Tomas Janousek <tomi@nomi.cz>**20091120144426
 Ignore-this: baec7062f93ab5950f57c44876c2f
 
 XMonadLog can be even more awesome with the ability to gather input from
 custom sources. This patch adds exactly that, along with a script to read from
 pipe and write to xmobar using an X property.
] 
[Depend on Cabal 1.6, required for "4.*" dependency
Spencer Janssen <sjanssen@cse.unl.edu>**20091119044609
 Ignore-this: 39c28d9851787420eddb6e910903d376
] 
[Add XMonadLog.
Spencer Janssen <sjanssen@cse.unl.edu>**20091107010104
 Ignore-this: 99ce96d00494d6bd681ef524bb93f8c7
 Support for writing WM status to a root window property was just added to
 xmonad, this is the accompanying xmobar plugin.  The idea is to use XMonadLog
 rather than StdinReader with xmonad, this should hopefully be more robust than
 communicating over a pipe.
] 
[use whatever version of parsec we have
Andrea Rossato <andrea.rossato@ing.unitn.it>**20091014091406
 Ignore-this: 0c7a7a10292e4e8cd3a379b178afd5d63950b775
] 
[reference to i3status in the README
Andrea Rossato <andrea.rossato@ing.unitn.it>**20091014091339
 Ignore-this: 77464d96a83855eba1772c6b099314be5c84f3b0
] 
[Strip '--' comments in xmobarrc
Adam Vogt <vogt.adam@gmail.com>**20091011035541
 Ignore-this: f58bb2b32a2257d48c039bb8866b5b65
] 
[Use a newtype for the backtracking Parsec Alternative instance
Adam Vogt <vogt.adam@gmail.com>**20091011035512
 Ignore-this: e79b4134f53f7449f54b08c4fc4dc787
] 
[Support for base 4 without base-3 compatibility
Adam Vogt <vogt.adam@gmail.com>**20091011015618
 Ignore-this: 6846a123ade5dc1164841e62beabbf71
] 
[Distribute xmobar.config-sample
Adam Vogt <vogt.adam@gmail.com>**20090918153425
 Ignore-this: 78b3c774c43357cf143dde0c980a5b8c
] 
[Fix for PipeReader contents feching.
jao@pobox.com**20090926215132
 Ignore-this: d3362cb2b00c407b9ccc6adc97fdbf0d
 
 Apparently, a pipe has to be opened in r/w mode for xmobar to update the
 display of its contents when the latter changes in time. I don't see the
 reason for this, but the fact remains that opening the pipe in ReadMode does
 not work.
 
] 
[Fix parsing in Plugins.Monitors.Net
wirtwolff@gmail.com**20090826211324
 Ignore-this: 49586807b8118e3dfee9e8e57888175c
 To close http://code.google.com/p/xmobar/issues/detail?id=9
 Parse /proc/net/dev correctly with or without spaces after ':'
] 
[fix a few warnings, clean up some recently added stuff, and restrict parsec to <3
Andrea Rossato <andrea.rossato@ing.unitn.it>**20090925192159
 Ignore-this: df12dd4ab0ccec4de18b15e77a6150c484bd5ec5
 Parsec 3 adds Applicative and Alternative instances which conflict
 with the ones needed for version 2 (no other reasons I'm aware of
 bind us to parsec-2).
] 
[Output to stdout whenever fields are defaulted in a config.
Adam Vogt <vogt.adam@gmail.com>**20090923022835
 Ignore-this: 3bf71f10543f14aa17b6b403480bcdde
 
 This is done without a command line flag, but perhaps it should be.
] 
[Parse config file more intelligently.
Adam Vogt <vogt.adam@gmail.com>**20090914023921
 Ignore-this: 9d6cd7536b6df73f3af44b7a74b826a1
   
 Using parsec and action-permutations, config options may be permuted or left
 out (to be replaced by the default configuration option).
 
 This patch improves forwards compatibility with xmobar (ex. the addition of
 lowerOnStart broke many configs), and provides some help to find typos in the
 config. The commands section is still parsed with Read however.
] 
[clean up a bit the previous patch
Andrea Rossato <andrea.rossato@ing.unitn.it>**20090925115655
 Ignore-this: 464ed4ec3e01439d3b927778a916d700c8b9673d
] 
[fixed "Abnormally high cpu load on X" (11 issue in tracker)
Sergei Trofimovich <slyfox@inbox.ru>**20090814194103
 Ignore-this: f9c79a48b39c163b56393723b7215c72
 
 Steps to reproduce are described in
 http://code.google.com/p/xmobar/issues/detail?id=11
 
 I've noticed large bunch of XAllocNamedColor calls/sec
 in xmobar ltrace log.
 This patch introduces simple hackish color cachig. It's more PoC,
 than real fix.
] 
[Accept the outermost OnScreen XPosition
Adam Vogt <vogt.adam@gmail.com>**20090420005732
 Ignore-this: 9db9f39958618cf4c9ea91330f162aec
 
 Takes the outermost directive. This implementation has the potentially
 desirable side-effect of causing xmobar to run when given OnScreen 1, when
 there is only 1 screen.
] 
[Add command line option for picking a screen
Adam Vogt <vogt.adam@gmail.com>**20090420003639
 Ignore-this: 5d9ddc7847f9000346b2ad18f95262db
] 
[TAG 0.9.2
Andrea Rossato <andrea.rossato@ing.unitn.it>**20090411104528
 Ignore-this: 35bbf68e1e0152b7f3591580d41a8dc5
] 
Patch bundle hash:
828617fd87e0b8bf49b13e2c00e40d859d563bf8
