@@ -16,6 +16,7 @@ module Terminal.Args
16import Control.Monad (filterM)
16import Control.Monad (filterM)
17import qualified Data.Char as Char
17import qualified Data.Char as Char
18import qualified Data.List as List
18import qualified Data.List as List
19+import qualified Data.Maybe as Maybe
19import qualified System.Directory as Dir
20import qualified System.Directory as Dir
20import qualified System.Environment as Env
21import qualified System.Environment as Env
21import qualified System.Exit as Exit
22import qualified System.Exit as Exit
@@ -295,16 +296,23 @@ suggestFiles extensions string =
295 FP.splitFileName string
296 FP.splitFileName string
297 do content <- Dir.getDirectoryContents dir
298 do content <- Dir.getDirectoryContents dir
298− filterM (isPossibleSuggestion extensions start dir) content
300+ <$> traverse (isPossibleSuggestion extensions start dir) content
301−isPossibleSuggestion :: [String] -> String -> FilePath -> FilePath -> IO Bool
303+isPossibleSuggestion :: [String] -> String -> FilePath -> FilePath -> IO (Maybe FilePath)
302isPossibleSuggestion extensions start dir path =
304isPossibleSuggestion extensions start dir path =
303 if List.isPrefixOf start path then
305 if List.isPrefixOf start path then
304 do isDir <- Dir.doesDirectoryExist (dir </> path)
306 do isDir <- Dir.doesDirectoryExist (dir </> path)
305− return (isDir || isOkayExtension path extensions)
310+ else if isOkayExtension path extensions then
307− return False
315+ return Nothing
310isOkayExtension :: FilePath -> [String] -> Bool
318isOkayExtension :: FilePath -> [String] -> Bool