on master help sign in
Complete identifiers following non-whitespace
0bcdd51David Christiansen
src/Core/CoreParser.hs+6−3
@@ -1,7 +1,7 @@
1{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances #-}
1{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances #-}
2
2
3module Core.CoreParser(parseTerm, parseFile, parseDef, pTerm, iName,
3module Core.CoreParser(parseTerm, parseFile, parseDef, pTerm, iName,
4− idrisLexer, maybeWithNS, pDocComment) where
4+ idrisLexer, maybeWithNS, pDocComment, opChars) where
5
5
6import Core.TT
6import Core.TT
7
7
@@ -39,8 +39,11 @@ idrisDef = haskellDef {
39 "Bits8", "Bits16", "Bits32", "Bits64"]
39 "Bits8", "Bits16", "Bits32", "Bits64"]
40 }
40 }
41
41
42+-- | The characters allowed in operator names
43+opChars = ":!#$%&*+./<=>?@\\^|-~"
44+
42−iOpStart = oneOf ":!#$%&*+./<=>?@\\^|-~"
45+iOpStart = oneOf opChars
43−iOpLetter = oneOf ":!#$%&*+./<=>?@\\^|-~"
46+iOpLetter = oneOf opChars
44-- <|> letter
47-- <|> letter
45
48
46idrisLexer :: TokenParser a
49idrisLexer :: TokenParser a
src/Idris/Completion.hs+2−1
@@ -3,6 +3,7 @@ module Idris.Completion (replCompletion, proverCompletion) where
3
3
4import Core.Evaluate (ctxtAlist)
4import Core.Evaluate (ctxtAlist)
5import Core.TT
5import Core.TT
6+import Core.CoreParser (opChars)
6
7
7import Idris.AbsSyntaxTree
8import Idris.AbsSyntaxTree
8
9
@@ -104,7 +105,7 @@ completeName extra n = do ns <- names
104 return $ completeWith (extra ++ ns) n
105 return $ completeWith (extra ++ ns) n
105
106
106completeExpr :: [String] -> CompletionFunc Idris
107completeExpr :: [String] -> CompletionFunc Idris
107−completeExpr extra = completeWord Nothing " \t" (completeName extra)
108+completeExpr extra = completeWord Nothing (" \t(){}:" ++ opChars) (completeName extra)
108
109
109completeOption :: CompletionFunc Idris
110completeOption :: CompletionFunc Idris
110completeOption = completeWord Nothing " \t" completeOpt
111completeOption = completeWord Nothing " \t" completeOpt