diff options
author | Saem Ghani <saemghani+github@gmail.com> | 2021-01-06 11:26:16 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-06 20:26:16 +0100 |
commit | 21dfa04cbf638f4059244b4cecf1906b84889a1e (patch) | |
tree | 0f4033bb685bf751bce947c5ff151467fa55c31a /compiler | |
parent | 8a3b6190c3559061ca43cd73faba1a44170b1ee6 (diff) | |
download | Nim-21dfa04cbf638f4059244b4cecf1906b84889a1e.tar.gz |
fixes nim-lang/nimsuggest#119 outline includes (#16608)
nimsuggest outline should account for includes, now it does: - the module prefix will be of the module doing the including - the filename will be of the module that was included - adds a test case for it
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/suggest.nim | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/compiler/suggest.nim b/compiler/suggest.nim index 186b23cd9..73929f813 100644 --- a/compiler/suggest.nim +++ b/compiler/suggest.nim @@ -491,9 +491,19 @@ proc suggestSym*(conf: ConfigRef; info: TLineInfo; s: PSym; usageSym: var PSym; findUsages(conf, info, s, usageSym) elif conf.ideCmd == ideHighlight and info.fileIndex == conf.m.trackPos.fileIndex: suggestResult(conf, symToSuggest(conf, s, isLocal=false, ideHighlight, info, 100, PrefixMatch.None, false, 0)) - elif conf.ideCmd == ideOutline and info.fileIndex == conf.m.trackPos.fileIndex and - isDecl: - suggestResult(conf, symToSuggest(conf, s, isLocal=false, ideOutline, info, 100, PrefixMatch.None, false, 0)) + elif conf.ideCmd == ideOutline and isDecl: + # if a module is included then the info we have is inside the include and + # we need to walk up the owners until we find the outer most module, + # which will be the last skModule prior to an skPackage. + var + parentFileIndex = info.fileIndex # assume we're in the correct module + parentModule = s.owner + while parentModule != nil and parentModule.kind == skModule: + parentFileIndex = parentModule.info.fileIndex + parentModule = parentModule.owner + + if parentFileIndex == conf.m.trackPos.fileIndex: + suggestResult(conf, symToSuggest(conf, s, isLocal=false, ideOutline, info, 100, PrefixMatch.None, false, 0)) proc extractPragma(s: PSym): PNode = if s.kind in routineKinds: |