Sat Jul 25 22:20:04 BST 2009  Ian Lynagh <igloo@earth.li>
  * Make the code compatible with the stricter labelled-field parsing rules
diff -rN -u old-haskeline/System/Console/Haskeline/Backend/DumbTerm.hs new-haskeline/System/Console/Haskeline/Backend/DumbTerm.hs
--- old-haskeline/System/Console/Haskeline/Backend/DumbTerm.hs	2009-07-25 23:10:46.000000000 +0100
+++ new-haskeline/System/Console/Haskeline/Backend/DumbTerm.hs	2009-07-25 23:10:46.000000000 +0100
@@ -87,7 +87,7 @@
     if length xs1' > p  || newP >= w
         then refitLine (xs2,ys2)
         else do -- we haven't moved outside the margins
-            put Window {pos=newP}
+            put $ Window {pos=newP}
             case (xs1',xs2') of
                 ([],[]) | ys1 == ys2    -> return () -- no change
                 (_,[]) | xs1' ++ ys1 == ys2 -> -- moved left
@@ -106,7 +106,7 @@
     w <- maxWidth
     let xs' = dropFrames w xs
     let p = length xs'    
-    put Window {pos=p}
+    put $ Window {pos=p}
     let ys' = take (w - p) ys
     let k = length ys'
     printText $ cr ++ graphemesToString (xs' ++ ys')
diff -rN -u old-haskeline/System/Console/Haskeline/Backend/Posix.hsc new-haskeline/System/Console/Haskeline/Backend/Posix.hsc
--- old-haskeline/System/Console/Haskeline/Backend/Posix.hsc	2009-07-25 23:10:46.000000000 +0100
+++ new-haskeline/System/Console/Haskeline/Backend/Posix.hsc	2009-07-25 23:10:46.000000000 +0100
@@ -60,12 +60,12 @@
                 rows :: CUShort <- (#peek struct winsize,ws_row) ws
                 cols :: CUShort <- (#peek struct winsize,ws_col) ws
                 if ret >= 0
-                    then return $ Just Layout {height=fromEnum rows,width=fromEnum cols}
+                    then return $ Just $ Layout {height=fromEnum rows,width=fromEnum cols}
                     else return Nothing
 
 unsafeHandleToFD :: Handle -> IO FD
 unsafeHandleToFD h =
-  withHandle_ "unsafeHandleToFd" h $ \Handle__{haDevice=dev} -> do
+  withHandle_ "unsafeHandleToFd" h $ \(Handle__{haDevice=dev}) -> do
   case cast dev of
     Nothing -> ioError (ioeSetErrorString (mkIOError IllegalOperation
                                            "unsafeHandleToFd" (Just h) Nothing)
@@ -80,7 +80,7 @@
     return $ Just $ Layout {height=read r,width=read c}
 
 tryGetLayouts :: [IO (Maybe Layout)] -> IO Layout
-tryGetLayouts [] = return Layout {height=24,width=80}
+tryGetLayouts [] = return $ Layout {height=24,width=80}
 tryGetLayouts (f:fs) = do
     ml <- f
     case ml of
@@ -254,7 +254,7 @@
     encoders <- liftM2 Encoders (openEncoder codeset) (openPartialDecoder codeset)
     case ttyH of
         Nothing -> return fileRT
-        Just h -> return fileRT {
+        Just h -> return $ fileRT {
                     closeTerm = closeTerm fileRT >> hClose h,
                     -- NOTE: could also alloc Encoders once for each call to wrapRunTerm
                     termOps = Just $ tOps encoders h
@@ -283,7 +283,7 @@
     let encoder str = join $ fmap ($ str) $ openEncoder codeset
     let decoder str = join $ fmap ($ str) $ openDecoder codeset
     decoder' <- openPartialDecoder codeset
-    return RunTerm {putStrOut = \str -> encoder str >>= putTerm,
+    return $ RunTerm {putStrOut = \str -> encoder str >>= putTerm,
                 closeTerm = setLocale oldLocale >> return (),
                 wrapInterrupt = withSigIntHandler,
                 encodeForTerm = encoder,
diff -rN -u old-haskeline/System/Console/Haskeline/Backend/Terminfo.hs new-haskeline/System/Console/Haskeline/Backend/Terminfo.hs
--- old-haskeline/System/Console/Haskeline/Backend/Terminfo.hs	2009-07-25 23:10:46.000000000 +0100
+++ new-haskeline/System/Console/Haskeline/Backend/Terminfo.hs	2009-07-25 23:10:46.000000000 +0100
@@ -43,7 +43,7 @@
     bellAudible' <- bell `mplus` return mempty
     bellVisual' <- visualBell `mplus` return mempty
     wrapLine' <- getWrapLine nl' (leftA' 1)
-    return Actions{leftA = leftA', rightA = rightA',upA = upA',
+    return $ Actions{leftA = leftA', rightA = rightA',upA = upA',
                 clearToLineEnd = clearToLineEnd', nl = nl',cr = cr',
                 bellAudible = bellAudible', bellVisual = bellVisual',
                 clearAllA = clearAll',
@@ -141,7 +141,7 @@
 tinfoLayout term = return $ getCapability term $ do
                         r <- termColumns
                         c <- termLines
-                        return Layout {height=r,width=c}
+                        return $ Layout {height=r,width=c}
 
 terminfoKeys :: Terminal -> [(String,Key)]
 terminfoKeys term = catMaybes $ map getSequence keyCapabilities
@@ -176,13 +176,13 @@
     TermPos {termRow=r,termCol=c} <- get
     if c+n < w  
         then do
-                put TermPos {termRow=r,termCol=c+n}
+                put $ TermPos {termRow=r,termCol=c+n}
                 output (right n)
         else do
               let m = c+n
               let linesDown = m `div` w
               let newCol = m `rem` w
-              put TermPos {termRow=r+linesDown, termCol=newCol}
+              put $ TermPos {termRow=r+linesDown, termCol=newCol}
               output $ cr <#> mreplicate linesDown nl <#> right newCol
                       
 changeLeft n = do
@@ -190,13 +190,13 @@
     TermPos {termRow=r,termCol=c} <- get
     if c - n >= 0 
         then do 
-                put TermPos {termRow = r,termCol = c-n}
+                put $ TermPos {termRow = r,termCol = c-n}
                 output (left n)
         else do      
                 let m = n - c
                 let linesUp = 1 + ((m-1) `div` w)
                 let newCol = (-m) `mod` w -- mod returns positive #
-                put TermPos {termRow = r - linesUp, termCol=newCol}
+                put $ TermPos {termRow = r - linesUp, termCol=newCol}
                 output $ cr <#> up linesUp <#> right newCol
                 
 -- TODO: I think if we wrap this all up in one call to output, it'll be faster...
@@ -214,13 +214,13 @@
     if length str < roomLeft
         then do
                 posixEncode (graphemesToString str) >>= output . text
-                put TermPos{termRow=r, termCol=c+length str}
+                put $ TermPos{termRow=r, termCol=c+length str}
                 return []
         else do
                 let (thisLine,rest) = splitAt roomLeft str
                 bstr <- posixEncode (graphemesToString thisLine)
                 output (text bstr <#> wrapLine)
-                put TermPos {termRow=r+1,termCol=0}
+                put $ TermPos {termRow=r+1,termCol=0}
                 return rest
 
 drawLineDiffT :: LineChars -> LineChars -> DrawM ()
@@ -236,7 +236,7 @@
         changeLeft (length ys2)
 
 linesLeft :: Layout -> TermPos -> Int -> Int
-linesLeft Layout {width=w} TermPos {termCol = c} n
+linesLeft (Layout {width=w}) (TermPos {termCol = c}) n
     | c + n < w = 1
     | otherwise = 1 + div (c+n) w
 
diff -rN -u old-haskeline/System/Console/Haskeline/Command/History.hs new-haskeline/System/Console/Haskeline/Command/History.hs
--- old-haskeline/System/Console/Haskeline/Command/History.hs	2009-07-25 23:10:46.000000000 +0100
+++ new-haskeline/System/Console/Haskeline/Command/History.hs	2009-07-25 23:10:46.000000000 +0100
@@ -13,8 +13,8 @@
                     deriving Show
 
 prevHistoryM :: [Grapheme] -> HistLog -> Maybe ([Grapheme],HistLog)
-prevHistoryM _ HistLog {pastHistory = []} = Nothing
-prevHistoryM s HistLog {pastHistory=ls:past, futureHistory=future}
+prevHistoryM _ (HistLog {pastHistory = []}) = Nothing
+prevHistoryM s (HistLog {pastHistory=ls:past, futureHistory=future})
         = Just (ls, 
             HistLog {pastHistory=past, futureHistory= s:future})
 
@@ -163,4 +163,4 @@
         delLastChar s = s {searchTerm = minit (searchTerm s)}
         minit xs = if null xs then [] else init xs
         oneMoreChar c = doSearch True . addChar c
-        searchMore d s = doSearch False s {direction=d}
+        searchMore d s = doSearch False (s {direction=d})
diff -rN -u old-haskeline/System/Console/Haskeline/Command/Undo.hs new-haskeline/System/Console/Haskeline/Command/Undo.hs
--- old-haskeline/System/Console/Haskeline/Command/Undo.hs	2009-07-25 23:10:46.000000000 +0100
+++ new-haskeline/System/Console/Haskeline/Command/Undo.hs	2009-07-25 23:10:46.000000000 +0100
@@ -28,12 +28,12 @@
                 _ -> False
 
 undoPast, redoFuture :: Save s => s -> Undo -> (s,Undo)
-undoPast ls u@Undo {pastUndo = []} = (ls,u)
-undoPast ls u@Undo {pastUndo = (pastLS:lss)}
+undoPast ls u@(Undo {pastUndo = []}) = (ls,u)
+undoPast ls u@(Undo {pastUndo = (pastLS:lss)})
         = (restore pastLS, u {pastUndo = lss, futureRedo = save ls : futureRedo u})
 
-redoFuture ls u@Undo {futureRedo = []} = (ls,u)
-redoFuture ls u@Undo {futureRedo = (futureLS:lss)}
+redoFuture ls u@(Undo {futureRedo = []}) = (ls,u)
+redoFuture ls u@(Undo {futureRedo = (futureLS:lss)})
             = (restore futureLS, u {futureRedo = lss, pastUndo = save ls : pastUndo u})
 
 
diff -rN -u old-haskeline/System/Console/Haskeline/IO.hs new-haskeline/System/Console/Haskeline/IO.hs
--- old-haskeline/System/Console/Haskeline/IO.hs	2009-07-25 23:10:46.000000000 +0100
+++ new-haskeline/System/Console/Haskeline/IO.hs	2009-07-25 23:10:46.000000000 +0100
@@ -61,8 +61,8 @@
     reqV <- newEmptyMVar
     finished <- newEmptyMVar
     tid <- forkIO (runHaskeline settings reqV finished)
-    return HD {requestVar = reqV, forkedThread = tid,
-                subthreadFinished = finished}
+    return $ HD {requestVar = reqV, forkedThread = tid,
+                 subthreadFinished = finished}
 
 runHaskeline :: Settings IO -> MVar (Maybe Request) -> MVar () -> IO ()
 runHaskeline settings reqV finished = runInputT settings loop
diff -rN -u old-haskeline/System/Console/Haskeline/Key.hs new-haskeline/System/Console/Haskeline/Key.hs
--- old-haskeline/System/Console/Haskeline/Key.hs	2009-07-25 23:10:46.000000000 +0100
+++ new-haskeline/System/Console/Haskeline/Key.hs	2009-07-25 23:10:46.000000000 +0100
@@ -44,7 +44,7 @@
 simpleKey = Key noModifier
 
 metaKey :: Key -> Key
-metaKey (Key m bc) = Key m {hasMeta = True} bc
+metaKey (Key m bc) = Key (m {hasMeta = True}) bc
 
 simpleChar, metaChar, ctrlChar :: Char -> Key
 simpleChar = simpleKey . KeyChar
@@ -113,7 +113,7 @@
 
 canonicalizeKey :: Key -> Key
 canonicalizeKey (Key m (KeyChar c))
-    | hasControl m = Key m {hasControl = False}
+    | hasControl m = Key (m {hasControl = False})
                         (KeyChar (setControlBits c))
-    | hasShift m = Key m {hasShift = False} (KeyChar (toUpper c))
+    | hasShift m = Key (m {hasShift = False}) (KeyChar (toUpper c))
 canonicalizeKey k = k
diff -rN -u old-haskeline/System/Console/Haskeline/Vi.hs new-haskeline/System/Console/Haskeline/Vi.hs
--- old-haskeline/System/Console/Haskeline/Vi.hs	2009-07-25 23:10:46.000000000 +0100
+++ new-haskeline/System/Console/Haskeline/Vi.hs	2009-07-25 23:10:46.000000000 +0100
@@ -383,7 +383,7 @@
                     }
 
 searchText :: SearchEntry -> [Grapheme]
-searchText SearchEntry {entryState = IMode xs ys} = reverse xs ++ ys
+searchText (SearchEntry {entryState = IMode xs ys}) = reverse xs ++ ys
 
 instance LineState SearchEntry where
     beforeCursor prefix se = beforeCursor (prefix ++ [searchChar se])
@@ -416,12 +416,12 @@
     let toSearch' = if null toSearch
                         then (lastSearch vstate)
                         else toSearch
-    result <- doSearch False SearchMode {
+    result <- doSearch False (SearchMode {
                                     searchTerm = toSearch',
                                     foundHistory = save cm, -- TODO: not needed
-                                    direction = dir}
+                                    direction = dir})
     case result of
         Left e -> effect e >> setState cm
         Right sm -> do
-            put vstate {lastSearch = toSearch'}
+            put $ vstate {lastSearch = toSearch'}
             setState (restore (foundHistory sm))
diff -rN -u old-haskeline/configure new-haskeline/configure
--- old-haskeline/configure	2009-07-25 23:10:46.000000000 +0100
+++ new-haskeline/configure	1970-01-01 01:00:00.000000000 +0100
@@ -1,2 +0,0 @@
-#!/bin/sh
-# Dummy file to be run by autoconfUserHooks.

