2011-01-09 18 views
15

Ogni volta che riformattare il codice sorgente HTML in Visual Studio con Ctrl-K, Ctrl-D formatta il mio codice sorgente in questo modo:formattazione HTML in Visual Studio 2010

<p> 
    text</p> 
<p> 
    more text</p> 

Come posso farlo utilizzare il seguente formato anziché?

<p> 
    text 
</p> 
<p> 
    more text 
</p> 

So che ci sono impostazioni in Opzioni-> Editor di testo -> Html -> Formattazione, ma non ho trovato adatto lì.

Grazie,

Adrian

Edit: Ho controllato le impostazioni specifiche dei tag, e un'interruzione di pagina per i tag p è impostato su "Prima di aprire, all'interno, e dopo la chiusura". Inoltre, la piccola anteprima mostra esattamente il formato che voglio avere. Ma Visual Studio continua a sbagliare. Questo potrebbe avere qualcosa a che fare con l'installazione di Resharper sul mio sistema?

risposta

19

Il problema non ha nulla a che fare con ReSharper. Questa è una caratteristica di design del Visual Studio Source Formatter in cui tenterà di non modificare la semantica di un elemento a causa delle opzioni di formattazione specificate.

Quindi, hai specificato che vuoi che i tag p abbiano interruzioni all'interno del contenuto, ma un'interruzione dopo il tag ap cambierebbe la semantica del contenuto all'interno del tag, quindi il formattatore finisce per mettere il tag p di chiusura subito dopo il contenuto. Per avere il tag di chiusura su una linea separata dovrai aggiungere uno spazio in modo esplicito subito prima della fine del contenuto e del tag di chiusura.

Così:

<p>content</p> 

produrrà:

<p> 
    content</p> 

Mentre (si noti l'inclusione esplicita di uno spazio tra il contenuto e il tag p di chiusura):

<p>content </p> 

volontà prodotti:

<p> 
    content 
</p> 

Questo è discusso in un blog post da Scott Guthrie nel 3 ° paragrafo dal basso. Inizia a contare dal paragrafo subito sopra la sezione dei link aggiuntivi.

+0

Perché aggiungere uno spazio dopo un elemento 'p' cambia la semantica? Un browser tratterà questi casi in modo diverso? – knut

+0

c'è un plugin per risolvere questo problema? Questo problema dello spazio ha effetto solo sul layout di IE6, penso, e vorrei che formasse correttamente il codice. –

9

Fare clic su Strumenti, Opzioni, Editor di testo, HTML, Formattazione, Opzioni specifiche dei tag.
Aggiungere un nuovo tag lato client per p (se non è già presente) e selezionare Separate Closing tag e Before, within, and after closing.

+0

Grazie per la risposta! Si prega di vedere la mia modifica sopra ... –