tweak spellsuggest; three counts for equal distances candidates by default (#21700)

* tweak spellsuggest; three counts for equal distances candidates

* only suggest typos when length > 3
This commit is contained in:
ringabout
2023-04-21 21:36:18 +08:00
committed by GitHub
parent 175a83c2de
commit b54b03d04f
2 changed files with 4 additions and 7 deletions

View File

@@ -490,12 +490,9 @@ proc fixSpelling(c: PContext, n: PNode, ident: PIdent, result: var string) =
let e = list.pop()
if c.config.spellSuggestMax == spellSuggestSecretSauce:
const
smallThres = 2
maxCountForSmall = 4
# avoids ton of operator matches when mis-matching short symbols such as `i`
# other heuristics could be devised, such as only suggesting operators if `name0`
# is an operator (likewise with non-operators).
if e.dist > e0.dist or (name0.len <= smallThres and count >= maxCountForSmall): break
minLengthForSuggestion = 4
maxCount = 3 # avoids ton of matches; three counts for equal distances
if e.dist > e0.dist or count >= maxCount or name0.len < minLengthForSuggestion: break
elif count >= c.config.spellSuggestMax: break
if count == 0:
result.add "\ncandidates (edit distance, scope distance); see '--spellSuggest': "

View File

@@ -1,6 +1,6 @@
discard """
# pending bug #16521 (bug 12) use `matrix`
cmd: "nim c --spellsuggest --hints:off $file"
cmd: "nim c --spellsuggest:12 --hints:off $file"
action: "reject"
nimout: '''
tspellsuggest2.nim(45, 13) Error: undeclared identifier: 'fooBar'