microsoft / vscode

Visual Studio Code
https://code.visualstudio.com
MIT License
162.64k stars 28.67k forks source link

StickyScroll partiall lost when project automatically configuring with CMake #163872

Closed BenBE closed 1 year ago

BenBE commented 1 year ago

Does this issue occur when all extensions are disabled?: No

The affected extension is ms-vscode.cpptools

Steps to Reproduce:

  1. Prepare:

    1. Open a project workspace with an active CMakeLists.txt configuration
    2. Open a C file with many levels of nesting (several if/for/while statements)
    3. Close the file (this simplifies things)
  2. Reproduction:

    1. Start VSCode in this workspace (with the above C file open)

    2. Note how the sticky scrolling header shows several levels of code blocks image

    3. Wait for the project to get automatically configured by CMake

    4. Suddenly the many blocks are repalced by one single line just showing the main function image

List of extensions: ``` 13xforever.language-x86-64-assembly austin.code-gnu-global basdp.language-gas-x86 bierner.markdown-mermaid bmd.stm32-for-vscode CL.stm32-debugger cschlosser.doxdocgen DamianKoper.gdb-debug dan-c-underwood.arm dgileadi.java-decompiler donjayamanne.githistory eamodio.gitlens FelschR.extbundles-csharp gattytto.phoityne-vscode go2sh.cmake-integration-vscode Gruntfuggly.todo-tree icsharpcode.ilspy-vscode Imanolea.z80-asm jeff-hykin.better-cpp-syntax justusadam.language-haskell k--kato.docomment KishoreIthadi.dotnet-core-essentials leo-labs.dotnet LoyieKing.smalise maelvalais.autoconf marus25.cortex-debug marus25.cortex-debug-dp-stm32f1 marus25.cortex-debug-dp-stm32f4 marus25.cortex-debug-dp-stm32h7 MS-CEINTL.vscode-language-pack-de ms-dotnettools.csharp ms-dotnettools.vscode-dotnet-runtime ms-python.python ms-toolsai.jupyter ms-vscode.cmake-tools ms-vscode.cpptools ms-vscode.cpptools-extension-pack ms-vscode.cpptools-themes ms-vscode.makefile-tools ms-vscode.mono-debug muhammad-sammy.csharp octref.vetur pflannery.vscode-versionlens platformio.platformio-ide redhat.java rockcat.avr-support RReverser.llvm Surendrajat.apklab tintinweb.vscode-decompiler tintoy.msbuild-project-tools torn4dom4n.latex-support trond-snekvik.gnu-mapfiles twxs.cmake Vue.volar wayou.vscode-todo-highlight webfreak.debug xdebug.php-debug ZixuanWang.linkerscript ```
gjsjohnmurray commented 1 year ago

Maybe what you are seeing is sticky scroll falling back to being indent-based until the language server is ready to provide information to the Outline view.

BenBE commented 1 year ago

That sounds like a possibility, and but this behaviour kinda looks inconsistent to me as it is. At least some indication of the fallback should be visible (somewhere).

At least the "indent based" fallback (also asked for in e.g. #162904, #162371) looks kinda reasonable and comes close to what I suggested back in https://github.com/microsoft/vscode/issues/26757#issuecomment-1207466319.

jrieken commented 1 year ago

uddenly the many blocks are repalced by one single line just showing the main function

The C/CPP extension that you are using is producing outline information for just the app_main function and that's what sticky scroll is picking up. You can tell because breadcrumbs shows the same "path".

You haven't shared the whole file but if you believe more entries should be shown than please reach out to the CPP extension directly.

/extCpp

VSCodeTriageBot commented 1 year ago

It looks like this is caused by the C++ extension. Please file the issue to the C++ extension repository. Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our issue reporting guidelines for more information.

Happy Coding!