@@ -16,6 +16,7 @@ module Terminal.Args
1616import Control.Monad (filterM)
1717import qualified Data.Char as Char
1818import qualified Data.List as List
19+import qualified Data.Maybe as Maybe
1920import qualified System.Directory as Dir
2021import qualified System.Environment as Env
2122import qualified System.Exit as Exit
@@ -295,16 +296,23 @@ suggestFiles extensions string =
295296 FP.splitFileName string
296297 in
297298 do content <- Dir.getDirectoryContents dir
298− filterM (isPossibleSuggestion extensions start dir) content
299+ Maybe.catMaybes
300+ <$> traverse (isPossibleSuggestion extensions start dir) content
299301
300302
301−isPossibleSuggestion :: [String] -> String -> FilePath -> FilePath -> IO Bool
303+isPossibleSuggestion :: [String] -> String -> FilePath -> FilePath -> IO (Maybe FilePath)
302304isPossibleSuggestion extensions start dir path =
303305 if List.isPrefixOf start path then
304306 do isDir <- Dir.doesDirectoryExist (dir </> path)
305− return (isDir || isOkayExtension path extensions)
307+ return $
308+ if isDir then
309+ Just (path ++ "/")
310+ else if isOkayExtension path extensions then
311+ Just path
312+ else
313+ Nothing
306314 else
307− return False
315+ return Nothing
308316
309317
310318isOkayExtension :: FilePath -> [String] -> Bool