on master help sign in
Only suggest names that are nearby on `elm X` typos
9ca6fdbEvan Czaplicki
compiler/src/Reporting/Suggest.hs+17
@@ -3,6 +3,7 @@
3module Reporting.Suggest
3module Reporting.Suggest
4 ( distance
4 ( distance
5 , sort
5 , sort
6+ , rank
6 )
7 )
7 where
8 where
8
9
@@ -33,3 +34,19 @@ sort target toString values =
33toLower :: String -> String
34toLower :: String -> String
34toLower string =
35toLower string =
35 map Char.toLower string
36 map Char.toLower string
37+
38+
39+
40+-- RANK
41+
42+
43+rank :: String -> (a -> String) -> [a] -> [(Int,a)]
44+rank target toString values =
45+ let
46+ toRank v =
47+ distance (toLower target) (toLower (toString v))
48+
49+ addRank v =
50+ (toRank v, v)
51+ in
52+ List.sortOn fst (map addRank values)
ui/terminal/src/Terminal/Args/Error.hs+4−1
@@ -234,8 +234,11 @@ toCommandList exeName interfaces =
234exitWithUnknown :: String -> [String] -> IO a
234exitWithUnknown :: String -> [String] -> IO a
235exitWithUnknown unknown knowns =
235exitWithUnknown unknown knowns =
236 let
236 let
237+ nearbyKnowns =
238+ takeWhile (\(r,_) -> r <= 3) (Suggest.rank unknown id knowns)
239+
237 suggestions =
240 suggestions =
238− case map toGreen (Suggest.sort unknown id knowns) of
241+ case map toGreen (map snd nearbyKnowns) of
239 [] ->
242 [] ->
240 []
243 []
241
244