on master help sign in
Make autocomplete a bit nicer
commit07c7666b9d405b5eb0291a244a78610ce7fe29f6 authorEvan Czaplicki <evancz@users.noreply.github.com> dateMon 9 Apr 2018, 17:47 (9 years ago) parent8a0fb69
2 files changed+16−8
ui/terminal/src/Terminal/Args.hs+12−4 ui/terminal/src/Terminal/Args/Chomp.hs+4−4
ui/terminal/src/Terminal/Args.hs+12−4
@@ -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
ui/terminal/src/Terminal/Args/Chomp.hs+4−4
@@ -438,9 +438,9 @@ suggestFlag unknownFlags flags targetIndex =
438438 [] ->
439439 Nothing
440440
441− Chunk index _ : otherUnknownFlags ->
441+ Chunk index string : otherUnknownFlags ->
442442 if index == targetIndex then
443− Just (return (map ("--" ++) (getFlagNames flags [])))
443+ Just (return (filter (List.isPrefixOf string) (getFlagNames flags [])))
444444 else
445445 suggestFlag otherUnknownFlags flags targetIndex
446446
@@ -464,10 +464,10 @@ getFlagName :: Flag a -> String
464464getFlagName flag =
465465 case flag of
466466 Flag name _ _ ->
467− name
467+ "--" ++ name ++ "="
468468
469469 OnOff name _ ->
470− name
470+ "--" ++ name
471471
472472
473473