diff options
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/options.nim | 4 | ||||
-rw-r--r-- | compiler/suggest.nim | 6 |
2 files changed, 8 insertions, 2 deletions
diff --git a/compiler/options.nim b/compiler/options.nim index adb340fea..23c76acc5 100644 --- a/compiler/options.nim +++ b/compiler/options.nim @@ -86,7 +86,7 @@ type # please make sure we have under 32 options gcNone, gcBoehm, gcGo, gcMarkAndSweep, gcRefc, gcV2, gcGenerational IdeCmd* = enum - ideNone, ideSug, ideCon, ideDef, ideUse + ideNone, ideSug, ideCon, ideDef, ideUse, ideDus var gIdeCmd*: IdeCmd @@ -421,6 +421,7 @@ proc parseIdeCmd*(s: string): IdeCmd = of "con": ideCon of "def": ideDef of "use": ideUse + of "dus": ideDus else: ideNone proc `$`*(c: IdeCmd): string = @@ -429,4 +430,5 @@ proc `$`*(c: IdeCmd): string = of ideCon: "con" of ideDef: "def" of ideUse: "use" + of ideDus: "dus" of ideNone: "none" diff --git a/compiler/suggest.nim b/compiler/suggest.nim index ed21aa4ea..18d723315 100644 --- a/compiler/suggest.nim +++ b/compiler/suggest.nim @@ -309,6 +309,10 @@ proc suggestSym*(info: TLineInfo; s: PSym) {.inline.} = findUsages(info, s) elif gIdeCmd == ideDef: findDefinition(info, s) + elif gIdeCmd == ideDus and s != nil: + if isTracked(info, s.name.s.len): + suggestResult(symToSuggest(s, isLocal=false, $ideDef)) + findUsages(info, s) proc markUsed(info: TLineInfo; s: PSym) = incl(s.flags, sfUsed) @@ -366,7 +370,7 @@ proc suggestExpr*(c: PContext, node: PNode) = suggestCall(c, a, n, outputs) dec(c.compilesContextId) - if outputs > 0 and gIdeCmd != ideUse: suggestQuit() + if outputs > 0 and gIdeCmd notin {ideUse, ideDus}: suggestQuit() proc suggestStmt*(c: PContext, n: PNode) = suggestExpr(c, n) |