mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-30 18:02:05 +00:00
nimsuggest: track type contexts
This commit is contained in:
@@ -112,6 +112,7 @@ type
|
||||
signatures*: TStrTable
|
||||
recursiveDep*: string
|
||||
suggestionsMade*: bool
|
||||
inTypeContext*: int
|
||||
|
||||
proc makeInstPair*(s: PSym, inst: PInstantiation): TInstantiationPair =
|
||||
result.genericSym = s
|
||||
|
||||
@@ -1169,6 +1169,8 @@ proc fixupTypeOf(c: PContext, prev: PType, typExpr: PNode) =
|
||||
|
||||
proc semTypeNode(c: PContext, n: PNode, prev: PType): PType =
|
||||
result = nil
|
||||
when defined(nimsuggest):
|
||||
inc c.inTypeContext
|
||||
|
||||
if gCmd == cmdIdeTools: suggestExpr(c, n)
|
||||
case n.kind
|
||||
@@ -1374,6 +1376,8 @@ proc semTypeNode(c: PContext, n: PNode, prev: PType): PType =
|
||||
localError(n.info, errTypeExpected)
|
||||
result = newOrPrevType(tyError, prev, c)
|
||||
n.typ = result
|
||||
when defined(nimsuggest):
|
||||
dec c.inTypeContext
|
||||
|
||||
proc setMagicType(m: PSym, kind: TTypeKind, size: int) =
|
||||
m.typ.kind = kind
|
||||
|
||||
@@ -20,8 +20,13 @@
|
||||
## - If there is a prefix (foo|), symbols starting with this prefix come first.
|
||||
## - If the prefix is part of the name (but the name doesn't start with it),
|
||||
## these symbols come second.
|
||||
## - Otherwise consider the context. We currently distinguish between type
|
||||
## and non-type contexts.
|
||||
## - If we have a prefix, only symbols matching this prefix are returned and
|
||||
## nothing else.
|
||||
## - If we have no prefix, consider the context. We currently distinguish
|
||||
## between type and non-type contexts.
|
||||
## - Finally, sort matches by relevance. The relevance is determined by the
|
||||
## number of usages, so ``strutils.replace`` comes before
|
||||
## ``strutils.wordWrap``.
|
||||
|
||||
# included from sigmatch.nim
|
||||
|
||||
|
||||
Reference in New Issue
Block a user