Repository navigation
New Language server only displays the top level symbols #2050
Description
Environment data
- VS Code version: 1.24.1
- Extension version (available under the Extensions sidebar): 2018.6.0
- OS and version: Ubuntu 16.04 x64
- Python version (& distribution if applicable, e.g. Anaconda): Python 2.7.12
- Type of virtual environment used (N/A | venv | virtualenv | conda | ...): N/A
- Relevant/affected Python packages and their versions: N/A
Actual behavior
Language server
Only top-level items are listed.
Jedi
"Go to Symbol in File..." is most times very very slow on 1.24.1
on a largish Python file (~1500 lines) - most times I'm just looking at the animated thingie. In some cases (if I give it enough time to finish?) the second time I invoke it, it appears and lists symbols fast, but next time it's slow again. Using it on this file: https://github.com/peterlevi/ojo/blob/master/ojo/ojo.py (vscode started directly in the root of that whole repo). In cases when it appears, it lists 646 symbols in the file.
Issue first reported as a comment here: microsoft/vscode-cpptools#1472 (comment)
Expected behavior
"Go to Symbol in File..." to be usable
Steps to reproduce:
- git clone https://github.com/peterlevi/ojo.git
- cd ojo
- code .
- Open ojo.py
- Press shortcut for invoking "Go To Symbol in File..."
Logs
Output for Python in the Output panel (View→Output, change the drop-down the upper-right of the Output panel to Python)
Starting the classic analysis engine.
##########Linting Output - pylint##########
No config file found, using default configuration
/home/peter/.local/lib/python2.7/site-packages/astroid/brain/brain_gi.py:136: PyGIWarning: Gdk was imported without specifying a version first. Use gi.require_version('Gdk', '3.0') before import to ensure that the right version gets loaded.
__import__(m)
************* Module ojo.ojo
1269,0,warning,W1401:Anomalous backslash in string: '\W'. String constant might be missing an r prefix.
349,8,warning,W0602:Using global for 'killed' but no assignment is done
1275,18,error,E1121:Too many positional arguments for method call
1282,34,warning,W0612:Unused variable 'e'
1345,19,error,E0712:Catching an exception which doesn't inherit from BaseException: GError
1337,12,warning,W0612:Unused variable 'format'
1345,35,warning,W0612:Unused variable 'e'
1243,34,error,E0203:Access to member 'wheel_timer' before its definition line 1247
Output from Console under the Developer Tools panel (toggle Developer Tools on under Help)
INFO no standard startup: not the explorer viewlet
TMSyntax.ts:44 Overwriting grammar scope name to file mapping for scope source.python.
Old grammar file: /usr/share/code/resources/app/extensions/python/syntaxes/MagicPython.tmLanguage.json.
New grammar file: /home/peter/.vscode/extensions/magicstack.magicpython-1.0.12/grammars/MagicPython.tmLanguage
e.register @ TMSyntax.ts:44

Activity
DonJayamanne commentedon Jun 22, 2018
Please could you try the following:
settings.json"python.jediEnabled": falseGo to Symbolonce againNote: Since this is the first time you'll be using this new lanaguge server, you'll need to be patient for it to get downloaded and started (slow only the first time).
Also please note, this is still in the early phases of development, hence there may be a few issues, if you do come across any please do report them.
Finally, you can alway revert to using the old
language serverby change the setting to"python.jediEnabled": truepeterlevi commentedon Jun 23, 2018
I tried the above steps. It is fast now, but behaves incorrectly because it lists only the 4 top-level symbols in the file, and ignores all of the symbols within the single and, admittedly, humongous god-like class in the file. Here's a screenshot:

derekwallace commentedon Jun 27, 2018
I see the same behaviour. using latest nighly and the new Python analysis engine (jedi disabled)
Intellisense works correctly and lists symbols as i type
Go to symbol only lists the toplevel class
DonJayamanne commentedon Jun 27, 2018
Ok, I'll change the title to reflect the new issue in the language server.
[-]"Go to Symbol in File..." is unusably slow[/-][+]New Language server only displays the top level symbols[/+]derekwallace commentedon Jun 28, 2018
This may be useful when debugging.

Outline currently wrong (only toplevel class)
If i start to type a new method , it updates with all the methods.

Now when i complete the prototype, they disappear.

derekwallace commentedon Jul 5, 2018
Don Jayamanne (@DonJayamanne) Any idea when this issue will be resolved? In general the new analysis engine solves all the issues with intellisense vs using jedi analysis engine.
brettcannon commentedon Jul 5, 2018
derekwallace we don't give out ETAs as a general rule, plus the language server is still experimental so we really don't give out ETAs regarding it
brettcannon commentedon Jul 17, 2018
I can verify that the next version of the language server that will be available with the 2018.7.0 release of the extension will list more than 4 items, but it does not yet support methods within a class.
DonJayamanne commentedon Jul 18, 2018
That's interesting, this is a bug if it doesn't. It used to work.
The extension relies on this to work as we need to get a list of methods in a test suite when displaying code lenses.
MikhailArkhipov commentedon Aug 6, 2018
The symbols and variables in classes and functions are known, we just happen not to transfer them out to VSC.
DonJayamanne commentedon Aug 7, 2018
@MikailArkhipov, method names are not returned either.
This impacts the ability to display codelenses above unit test methods.
I am almost 99.99% certain this used to work at a certain point.
MikhailArkhipov commentedon Aug 7, 2018
No, it never drilled into nested scopes. It does now

MikhailArkhipov commentedon Aug 10, 2018
microsoft/PTVS#4624
MikhailArkhipov commentedon Aug 10, 2018
#2334 still applies though.