on master help sign in
Complete identifiers following non-whitespace

Now, identifiers following non-whitespace, non-identifier characters (such as operators or parentheses) will also be completed successfully.

commit0bcdd5194754efdff396aa2e4df7af93bf3a2a30 authorDavid Christiansen <david@davidchristiansen.dk> dateTue 12 Mar 2013, 16:37 (14 years ago) parent169fea1
2 files changed+8−4
src/Core/CoreParser.hs+6−3 src/Idris/Completion.hs+2−1
src/Core/CoreParser.hs+6−3
@@ -1,7 +1,7 @@
11{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances #-}
22
33module Core.CoreParser(parseTerm, parseFile, parseDef, pTerm, iName,
4− idrisLexer, maybeWithNS, pDocComment) where
4+ idrisLexer, maybeWithNS, pDocComment, opChars) where
55
66import Core.TT
77
@@ -39,8 +39,11 @@ idrisDef = haskellDef {
3939 "Bits8", "Bits16", "Bits32", "Bits64"]
4040 }
4141
42−iOpStart = oneOf ":!#$%&*+./<=>?@\\^|-~"
43−iOpLetter = oneOf ":!#$%&*+./<=>?@\\^|-~"
42+-- | The characters allowed in operator names
43+opChars = ":!#$%&*+./<=>?@\\^|-~"
44+
45+iOpStart = oneOf opChars
46+iOpLetter = oneOf opChars
4447-- <|> letter
4548
4649idrisLexer :: TokenParser a
src/Idris/Completion.hs+2−1
@@ -3,6 +3,7 @@ module Idris.Completion (replCompletion, proverCompletion) where
33
44import Core.Evaluate (ctxtAlist)
55import Core.TT
6+import Core.CoreParser (opChars)
67
78import Idris.AbsSyntaxTree
89
@@ -104,7 +105,7 @@ completeName extra n = do ns <- names
104105 return $ completeWith (extra ++ ns) n
105106
106107completeExpr :: [String] -> CompletionFunc Idris
107−completeExpr extra = completeWord Nothing " \t" (completeName extra)
108+completeExpr extra = completeWord Nothing (" \t(){}:" ++ opChars) (completeName extra)
108109
109110completeOption :: CompletionFunc Idris
110111completeOption = completeWord Nothing " \t" completeOpt