Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Formatting of switch statement

Say I have my cursor position to the right of a right facing case curly brace, like so:

enter image description here

Now, if I press enter, I expect it to auto align the cursor two tabs in, just like the break statement. But what it does is this:

enter image description here

It adds a ridiculous five tabs! Knowing that Visual studio has a metric ton of settings, I navigate to Tools::Settings::Text Editor::C/C++::Formatting::Indentation, and see the following window:

enter image description here

But changing the highlighted options in any combination actually doesn't affect the indentation at all! None of the other options seem to apply to switch statements, so I don't know what to do. How do I make it not indent 5 spaces, without disabling auto formatting?

And I might add, it not only places 5 tabs when I press enter at the end of the curly brace, but when any auto format event takes place. So when I add a semicolon at the end of a line it places 5 tabs even if I had taken them out before.

like image 710
BWG Avatar asked Feb 07 '14 23:02

BWG


3 Answers

This is probably a bit late for you now, but in case someone else finds this issue: it seems to be a Visual Studio bug, you're probably running the freshly installed version of the VS2K13 called REL.

Downloading the Update 4 at http://www.microsoft.com/en-us/download/details.aspx?id=44921 helped in my case.

like image 163
h4lc0n Avatar answered Oct 20 '22 01:10

h4lc0n


The curly braces ({ and }) are throwing off the auto-indenter, and it's indenting to one tab beyond the brace.

Braces there are not illegal in a switch statement, but they usually don't do you any good. Unless you need it for scoping a variable declaration, just remove the curly braces. You'll get the same code flow, and you won't confuse the auto-indenter.

EDIT Come to think of it, you can solve this by simply moving the brace to a new line. This isn't necessarily horrible - it highlights that you're using a brace.

case SDLK_g:
    {
        // etc
        break;
    }
like image 32
Scott Mermelstein Avatar answered Oct 20 '22 01:10

Scott Mermelstein


I went into VS2013 and created a new project and just tried making a really simple switch but it formatted correctly for me, even with the curly braces. Are you able to post that set of code?

The only other thing I can think of is maybe a setting on how braces are set up, but I don't know why that would affect it. (Nor do I think there is really even a setting for that for C++...) Other than that though you could try just not using the braces at all since you are inside a case statement, you don't technically need them.

Other than that something may have happened during installation. So re-installing is an option too.

EDIT:
Also, could just go with it and finish the code and then when finished just highlight the rows and un-indent ([SHIFT]+[TAB]) them back to their correct spot.

like image 1
Josh Braun Avatar answered Oct 20 '22 02:10

Josh Braun