@@ -237,10 +237,18 @@ keyword kwd =
237237 "KEYWORD=" ++ kwd
238238
239239
240−unkeyword :: String -> Maybe String
241−unkeyword message =
240+data SpecialMessage
241+ = MsgKeyword String
242+ | MsgTab
243+
244+
245+extractSpecialMessage :: String -> Maybe SpecialMessage
246+extractSpecialMessage message =
242247 if List.isPrefixOf "KEYWORD=" message then
243− Just (drop (length "KEYWORD=") message)
248+ Just $ MsgKeyword (drop (length "KEYWORD=") message)
249+
250+ else if tab == message then
251+ Just MsgTab
244252
245253 else
246254 Nothing
@@ -283,12 +291,17 @@ parseErrorReport messages =
283291 (preHint, maybePost) =
284292 case msgs of
285293 [msg] ->
286− case unkeyword msg of
287− Just kwd ->
294+ case extractSpecialMessage msg of
295+ Just (MsgKeyword kwd) ->
288296 ( "It looks like the keyword `" ++ kwd ++ "` is being used as a variable."
289297 , Just "Rename it to something else."
290298 )
291299
300+ Just MsgTab ->
301+ ( "A tab character was found, but all whitespace (including indentation) must be spaces not tabs."
302+ , Just "I am looking for spaces, not tabs."
303+ )
304+
292305 Nothing ->
293306 ( msg
294307 , Nothing