Bryce Wagner
Bryce Wagner

Reputation: 1511

Turn off "smart semicolon" in Visual Studio C# editor

In Visual Studio 2019, it likes to try to guess where it should put the semicolon when you hit it. Often it will jump to a completely different line or insert newlines. Every time it does anything besides append it as the next character, this is extremely disruptive, and I have to go back and fix what it broke. This is akin to the disruptive "Automatic brace completion" which always puts braces where I don't want them, but can be turned off. I can't find anywhere to turn off the semicolon behavior. Is there any way to turn this feature off?

Most of the time when the semicolon misbehaves, it's because I hit it by mistake, but rather than hitting backspace, I now have a bigger mess to clean up. And I've never had a situation where it did something extra that I wanted it to do.

Some examples, with * being the cursor location:

// between a ) and ; 
Foo()*;
// inserts an extra space
Foo();* ;

// before an existing semicolon:
return null*;
// moves the old semicolon to the next line:
return null;*
;

// pressing semicolon in the middle of a multi-line function call:
string path = Path.Combine(
    "C:\\",
    "b"*
    "filename.txt");
// moves the cursor to the end of the block and inserts a "; " before ";":
string path = Path.Combine(
    "C:\\",
    "b"
    "filename.txt");* ;

Upvotes: 6

Views: 1043

Answers (1)

Bryce Wagner
Bryce Wagner

Reputation: 1511

Visual Studio 16.10 adds a new configuration option to control this:

Text Editor -> C# -> Intellisense -> Automatically complete statements on semicolon

With that checked, I get the problematic behavior described in the question. When I uncheck that option, it works as it did before.

Upvotes: 5

Related Questions