A: 

You can customize the layout per tag, if it bothers you that much. Go to the options dialog and select the formatting option under Text Editor -> HTML

Having said that, I don't like some of the inconsistencies I couldn't fix, so I stopped using it except to reformat code from someone else before I started working on it. Once the initial reformat is done, I maintain the formatting manually.

Chris
That's what I'm doing already (first image). I'm trying to figure out if it will behave how I want it to, or if I should just give up and find another tool to auto-format with, and then copy it back in. Doing that seems to defeat the point of the IDE though
Chris S
+4  A: 

It looks like it is a bug, and isn't dependent on the tag being SPAN or B.

The work around I found

Add an extra space before the closing P.

How it fails

<p><b>My title</b></p>

Gets re-formatted as

<p>
  <b>My title</b></p>

How to get it to work

<p><b>My title</b> </p>

(NB the space after the B) gets reformatted as:

<p>
  <b>My title</b>
</p>

And that extra space is removed by VS anyway. Hallelujah my HTML looks beautiful!

Chris S
+1  A: 

I followed the same method as Chris. I decided to use a RegEx find and replace to do it for the whole document. The regex finds any closing p or h* tags that aren't preceded by white space or the start of a line and inserts a newline before the closing tag. Examine the regex to get a better understanding. Here's what I used:

Find what:

{[^:b^]}{\</(p|(h:z))\>}:b*$

Replace with:

\1\n\2

It only finds p and h* because those were the only two I found had this problem. Other tags can be added.