@@ -20,11 +20,11 @@ import Text.Trifecta.Delta
2020import Debug.Trace
2121import Data.List
2222import Data.List.Split(splitOn)
23−import Data.Char(toLower)
23+import Data.Char(isSpace, toLower)
2424import qualified Data.ByteString.UTF8 as UTF8
2525
2626parseCmd :: IState -> String -> String -> Result (Either String Command)
27−parseCmd i inputname = P.runparser pCmd i inputname
27+parseCmd i inputname = P.runparser pCmd i inputname . dropWhile isSpace
2828
2929pCmd :: P.IdrisParser (Either String Command)
3030pCmd = choice [ do c <- cmd ["q", "quit"]; noArgs c Quit
@@ -95,20 +95,20 @@ pCmd = choice [ do c <- cmd ["q", "quit"]; noArgs c Quit
9595 <|> eval
9696 where nop = do P.whiteSpace; eof; return (Right NOP)
9797 eval = exprArg "" Eval
98− unrecognized = do
99− P.lchar ':'
98+ unrecognized = do
99+ P.lchar ':'
100100 cmd <- many anyChar
101101 let cmd' = takeWhile (/=' ') cmd
102102 return (Left $ "Unrecognized command: " ++ cmd')
103103
104104cmd :: [String] -> P.IdrisParser String
105−cmd xs = try $ do
105+cmd xs = try $ do
106106 P.lchar ':'
107107 docmd sorted_xs
108−
108+
109109 where docmd [] = fail "Could not parse command"
110110 docmd (x:xs) = try (P.reserved x >> return x) <|> docmd xs
111−
111+
112112 sorted_xs = sortBy (\x y -> compare (length y) (length x)) xs
113113
114114