on master help sign in
Complete multiple identifiers in one expression
commitf0e096b896844f4d3e5ede39d5c1377a948822cb authorDavid Christiansen <david@davidchristiansen.dk> dateMon 11 Feb 2013, 11:28 (14 years ago) parentfc58a50
1 file changed+11−5
src/Idris/Completion.hs+11−5
src/Idris/Completion.hs+11−5
@@ -29,20 +29,26 @@ names = do i <- get
2929 let ctxt = tt_ctxt i
3030 return $ nub $ mapMaybe (nameString . fst) $ ctxtAlist ctxt
3131
32−completeWith :: [String] -> String -> (String, [Completion])
32+completeWith :: [String] -> String -> [Completion]
3333completeWith ns n = if uniqueExists
34− then ("", [simpleCompletion n])
35− else ("", map simpleCompletion prefixMatches)
34+ then [simpleCompletion n]
35+ else map simpleCompletion prefixMatches
3636 where prefixMatches = filter (isPrefixOf n) ns
3737 uniqueExists = n `elem` prefixMatches
3838
39+completeName :: String -> StateT IState IO [Completion]
40+completeName n = do ns <- names
41+ return $ completeWith ns n
42+
43+completeExpr :: CompletionFunc (StateT IState IO)
44+completeExpr = completeWord Nothing [' ', '\t'] completeName
3945
4046idrisCompletion :: [String] -> CompletionFunc (StateT IState IO)
4147idrisCompletion commands (before, after) = complete (reverse $ dropWhile (\x -> x == ' ') before)
4248 where complete :: String -> StateT IState IO (String, [Completion])
4349 complete [] = noCompletions
44− complete (':':cmd) = return $ completeWith commands (':':cmd)
45− complete n = do { ns <- names ; return $ completeWith ns n }
50+ complete (':':cmd) = return $ ("", completeWith commands (':':cmd))
51+ complete _ = completeExpr (before, after)
4652
4753 noCompletions = return (before, [])
4854