microsoft / vscode

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

Elixir region folding broken, because Elixir formatter requires all comments to match code indent. #109539

Closed lastobelus closed 3 years ago

lastobelus commented 3 years ago

Issue Type: Bug

In the following example code:

defmodule KV.Registry do
  use GenServer

  # region [ callbacks ]
  @impl true
  @spec init(:ok) :: {:ok, %{}}
  def init(:ok) do
    {:ok, %{}}
  end
  # endregion [callbacks]
end

the region is not foldable.

If the leading space before the region markers is removed, the regions become foldable, but the built-in, unconfigurable elixir formatter requires all comments to be indented to match code indent.

Interestingly, a single leading space does not break folding...

VS Code version: Code 1.50.1 (d2e414d9e4239a252d1ab117bd7067f125afd80a, 2020-10-13T14:53:05.704Z) OS version: Darwin x64 19.6.0

System Info |Item|Value| |---|---| |CPUs|Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz (16 x 2400)| |GPU Status|2d_canvas: enabled
flash_3d: enabled
flash_stage3d: enabled
flash_stage3d_baseline: enabled
gpu_compositing: enabled
metal: disabled_off
multiple_raster_threads: enabled_on
oop_rasterization: enabled
opengl: enabled_on
protected_video_decode: unavailable_off
rasterization: enabled
skia_renderer: disabled_off_ok
video_decode: enabled
webgl: enabled
webgl2: enabled| |Load (avg)|1, 2, 2| |Memory (System)|32.00GB (5.26GB free)| |Process Argv|. --crash-reporter-id ded3109a-7540-4b34-bdd1-918ef201c94f| |Screen Reader|no| |VM|0%|
Extensions (134) Extension|Author (truncated)|Version ---|---|--- vscode-elixirc-mix-linter|PTD|0.0.3 rails-partial|aki|0.3.1 rails-routes|aki|0.4.1 Bookmarks|ale|11.4.0 project-manager|ale|11.3.1 cucumberautocomplete|ale|2.15.0 auto-add-brackets|ali|0.11.0 slim-lint|ali|0.2.0 vscode-erb-beautify|ali|0.2.0 cypress-snippets|and|1.2.0 word-stats|Ane|0.0.7 previewseqdiag-vscode|ari|0.2.4 rspec-focus|asu|0.2.0 rails-partial|ati|0.0.2 tailwind-docs|aus|1.4.0 theme-verdandi|be5|2.0.1 markdown-checkbox|bie|0.1.3 markdown-preview-github-styles|bie|0.1.6 mermaid-markdown-syntax-highlighting|bpr|1.0.3 vscode-tailwindcss|bra|0.4.3 vscode-seeing-is-believing|bra|0.1.1 vscode-toggle-quotes|Bri|0.3.3 vscode-gemfile|bun|0.4.0 solargraph|cas|0.21.1 npm-intellisense|chr|1.3.1 path-intellisense|chr|2.3.0 jsrefactor|cms|2.20.6 erb|Cra|0.0.1 vscode-github-actions|csc|0.8.1 vue-peek|dar|1.0.2 vscode-markdownlint|Dav|0.37.2 vscode-simpler-icons|dav|1.6.5 vscode-eslint|dba|2.1.13 find-related|eam|0.9.0 gitlens|eam|10.2.2 eppz-code|epp|1.2.52 moxer-icons|Equ|5.6.0 vsc-material-theme|Equ|33.0.0 vsc-material-theme-icons|equ|1.2.0 prettier-vscode|esb|5.7.1 font-switcher|eva|3.1.0 vscode-todo-plus|fab|4.18.0 file-icons|fil|1.0.26 auto-close-tag|for|0.5.9 vscode-sql-tagged-template-literals|fri|0.0.14 macros|ged|1.2.1 vscode-pull-request-github|Git|0.20.1 sass-lint|gle|1.0.6 cloudcode|goo|1.6.1 vscode-gitbuild|grz|1.1.0 helium-icon-theme|hel|1.0.0 headwind|hey|1.7.0 rails-nav|hjl|0.0.3 elixirlinter|iam|0.4.1 applescript|idl|0.19.0 elixir-ls|Jak|0.6.1 easy-icons|jam|0.3.1 vscode-theme-switcher|Jan|0.2.0 markdown-extended|jeb|1.0.18 rails-fast-nav|jem|1.3.4 ruby-markers|jua|0.2.1 endwise|kai|1.4.2 theme-karyfoundation-themes|kar|20.0.3 keen-neutral-icon-theme|kee|1.0.8 ruby-syntax-replacer|Kos|1.0.11 vscode-commit-reminder|Kur|0.3.0 lastobelussnippets|las|0.0.1 vscode-rufo|mbe|0.2.1 vscode-github-actions|me-|3.0.1 code-copy-ruby-ref|mic|0.2.2 colored-regions|mih|0.0.3 dotenv|mik|1.0.1 file-downloader|min|1.0.5 mindaro|min|1.0.120201021 theme-monokai-pro-vscode|mon|1.1.17 vscode-duplicate|mrm|1.2.1 vscode-slm|mrm|1.1.0 vscode-docker|ms-|1.7.0 csharp|ms-|1.23.4 vscode-aks-tools|ms-|0.0.8 vscode-kubernetes-tools|ms-|1.2.1 python|ms-|2020.9.114305 remote-containers|ms-|0.145.1 azure-account|ms-|0.9.3 vscode-mscgen|msc|1.2.0 vetur|oct|0.28.0 vuehelper|oys|0.1.0 advanced-new-file|pat|1.2.2 vscode-phoenix|ped|0.6.0 heroku-command|pko|0.0.8 webstorm-icons|pms|1.0.0 bracketeer|pus|1.3.1 ejs-language-support|Qas|0.0.1 vscode-seedling-icon-theme|ras|0.7.0 ruby|reb|0.27.0 vscode-yaml|red|0.11.1 code-stats-vscode|riu|1.0.18 sass-indented|rob|1.5.1 color-manager|roy|0.6.1 vscode-eex-format|Roy|0.1.0 multi-command|ryu|1.4.0 elixir-module-autoname|sad|0.0.2 vscode-javascript-booster|sbu|14.0.1 vscode-sql-beautify|sen|0.0.4 vscode-brewfile|sha|1.0.0 slim|sia|0.1.2 html5-boilerplate|sid|1.1.1 gherkin-autocomplete|sil|1.3.3 shopify-liquid|sis|2.3.0 vscode-fileutils|sle|3.3.3 vscode-eex-snippets|ste|0.0.7 code-spell-checker|str|1.9.2 vscode-stylelint|sty|0.85.0 vscode-field-lights|sve|0.0.11 language-stylus|sys|1.11.0 vscode-open-in-github|sys|1.14.0 ayu|tea|0.20.1 open-in-browser|tec|2.0.0 sassyah|tom|0.0.5 liquid-snippet-include-detection|tsh|0.11.0 lorem-ipsum|Tyr|1.2.0 refactor-css|urb|0.4.2 es-quotes|vil|0.2.6 vscode-mermaid-preview|vst|1.5.6 vscode-todo-highlight|way|1.0.4 vscode-ruby|win|0.27.0 change-case|wma|1.0.0 html2jade|wma|0.2.0 vscode-jumpy|wma|0.3.1 yokum|Met|0.0.1 city-lights-icon-vsc|Yum|1.1.3 markdown-all-in-one|yzh|3.3.0 material-theme|zhu|3.9.3 html-css-class-completion|Zig|1.19.0 (74 theme extensions excluded)
aeschli commented 3 years ago

That's elixir, right? You need to file this against the extension that adds the language support: https://github.com/elixir-lsp/vscode-elixir-ls/issues