@@ -4,8 +4,10 @@ module Idris.Completion (replCompletion, proverCompletion) where
4import Idris.Core.Evaluate (ctxtAlist)
4import Idris.Core.Evaluate (ctxtAlist)
5import Idris.Core.TT
5import Idris.Core.TT
7+import Idris.AbsSyntax (runIO)
7import Idris.AbsSyntaxTree
8import Idris.AbsSyntaxTree
8import Idris.Help
9import Idris.Help
10+import Idris.Imports (installedPackages)
9import Idris.Colours
11import Idris.Colours
10import Idris.ParseHelpers(opChars)
12import Idris.ParseHelpers(opChars)
11import qualified Idris.ParseExpr (constants, tactics)
13import qualified Idris.ParseExpr (constants, tactics)
@@ -142,9 +144,11 @@ completeCmd cmd (prev, next) = fromMaybe completeCmdName $ fmap completeArg $ lo
142 completeArg NoArg = noCompletion (prev, next)
144 completeArg NoArg = noCompletion (prev, next)
143 completeArg ConsoleWidthArg = completeConsoleWidth (prev, next)
145 completeArg ConsoleWidthArg = completeConsoleWidth (prev, next)
144 completeArg DeclArg = completeExpr [] (prev, next)
146 completeArg DeclArg = completeExpr [] (prev, next)
147+ completeArg PkgArgs = completePkg (prev, next)
145 completeArg (ManyArgs a) = completeArg a
148 completeArg (ManyArgs a) = completeArg a
146 completeArg (OptionalArg a) = completeArg a
149 completeArg (OptionalArg a) = completeArg a
147 completeArg (SeqArgs a b) = completeArg a
150 completeArg (SeqArgs a b) = completeArg a
151+ completeArg _ = noCompletion (prev, next)
148 completeCmdName = return $ ("", completeWith commands cmd)
152 completeCmdName = return $ ("", completeWith commands cmd)
150-- | Complete REPL commands and defined identifiers
154-- | Complete REPL commands and defined identifiers
@@ -155,6 +159,11 @@ replCompletion (prev, next) = case firstWord of
155 where firstWord = fst $ break isWhitespace $ dropWhile isWhitespace $ reverse prev
159 where firstWord = fst $ break isWhitespace $ dropWhile isWhitespace $ reverse prev
162+completePkg :: CompletionFunc Idris
163+completePkg = completeWord Nothing " \t()" completeP
164+ where completeP p = do pkgs <- runIO installedPackages
165+ return $ completeWith pkgs p
158-- The TODOs are Issue #1769 on the issue tracker.
167-- The TODOs are Issue #1769 on the issue tracker.
159-- https://github.com/idris-lang/Idris-dev/issues/1769
168-- https://github.com/idris-lang/Idris-dev/issues/1769
160completeTactic :: [String] -> String -> CompletionFunc Idris
169completeTactic :: [String] -> String -> CompletionFunc Idris