microsoft / microsoft/vscode-cpptools

Code folding with `//#region` and `//#endregion`

Open
#7,511 16 comments 32 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Feature Request Language Service Visual Studio
Dominant language
TypeScript
Stars
6.2k
Forks
1.7k
Avg merge
14h 46m
Merged PRs (30d)
61

Description

Type: Feature Request

Please make //#region and //#endregion folding available on VSCode for C/C++ too.

Feature request suggested by @Colengms in https://github.com/microsoft/vscode/issues/123016#issuecomment-837074185_

The documentation describes that C/C++ region should be defined with #pragma region and #pragma endregion, although many C/C++ application complain about unknown pragma, generating many warnings. In the very same documentation, the default for many languages is //#region and //#endregion which is definitely the very best choice for C/C++. There are VS Code extensions like this that try to fix these annoying issue, but they create other problems, since single line comments should never use /* */, it makes harder to comment out a block with regions inside.

  • Using #pragma region almost always require to disable unknown pragmas with the compiler flag -Wno-unknown-pragmas, which may hide useful warnings such as the typo #pragma ocne.
  • GCC is one of the most famous compiler, and still there are recently complaining about the need to disable unknown pragmas in order to use #pragma region.
  • There are even cases of compilations bugs with the use of #pragma region such as this. Which would never happen if //#region would be a default.
  • The number of people trying to find workarounds are getting ridiculous at this point, there are people even using #ifndef MY_REGION_NAME ... #endif, which may lead to pieces of code being ignored by the compiler if the region is a duplicate name.
  • This issue uses an example of C/C++ where it tries the intuitive region folding (#region inside line comment), but VSCode fails to fold, since #pragma region should have been used instead.

VS Code version: Code 1.55.2 (3c4e3df, 2021-04-13T09:35:57.887Z)
OS version: Windows_NT x64 6.1.7601
ms-vscode.cpptools Version 1.3.1: April 19, 2021

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the C/C++ folding support in the extension and compare its handling with the region syntax described in the VS Code codebasics documentation and the linked folding examples. Done means //#region and //#endregion fold correctly for C/C++ without requiring #pragma directives, with behavior verified in the extension.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, typescript
Domain
tooling
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.