Textmate peut-il bien indenter le HTML?

17

Textmate a-t-il une fonction pour bien indenter le HTML?

HTML Tidy le met en retrait - mais il semble également supprimer les balises. (Ce n'est pas du HTML tout à fait correct, mais quand même!)

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:tal="http://xml.zope.org/namespaces/tal" xmlns:metal="http://xml.zope.org/namespaces/metal">
    <head>
        <title></title>
    <script type="text/javascript" src="http://www.speechapi.com/static/lib/swfobject.js"></script>
    <script type="text/javascript" src="http://www.speechapi.com/static/lib/speechapi-1.1.js"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<body>
    <!-- All above disappears -->       
    <p>Test</p>
    <!-- All below disappears-->
</body>
</html>
Casebash
la source
Pouvez-vous donner un exemple de
code
@Mark: mis à jour avec le code
Casebash
@Casebash J'ai essayé Tidy avec votre code et pour moi, il n'a ajouté que des balises. copypastecode.com/46216
Robert S Ciaccio
@calvera: Assurez-vous que votre type de document est défini sur HTML, pas sur du texte brut
Casebash
3
@Casebash: il a été défini sur html ... Pour info, d'après ce que je me souviens du plugin Tidy pour Notepad ++, il est configuré via un fichier texte. Alors peut-être qu'il y a un problème avec la configuration de Tidy.
Robert S Ciaccio

Réponses:

20

Vous pouvez ensuite appuyer sur + Apour tout sélectionner Text->Indent Selection.

James Moore
la source
Des années de TextMate et je n'ai jamais vu ou utilisé cette fonctionnalité ... \ o /
brasofilo
Malheureusement, ce n'est pas un formatage XML complet: il conserve les lignes indentées et ne divise pas les balises sur la même ligne en lignes distinctes. Utilisation de Textmate 2.0-rc.4.
Alexander Klimetschek
13

Vous pouvez utiliser Bundles > HTML > Tidyou le raccourci ctrl+ + H.

Loïc Wolff
la source
3
Tidy ne se contente pas de le mettre en retrait - il semble également en supprimer des parties!
Casebash
1
La question portait sur le retrait et non le rangement
tig
Le rangement échoue également en cas de problèmes tels que les noms d'éléments inconnus.
Alexander Klimetschek
1

Je voudrais souligner quelque chose qui croise un peu les autres réponses:

Si vous sélectionnez le texte que vous souhaitez formater (ou réindenter), TextMate appliquera des actions spécifiques uniquement à cela. Donc, si vous CMD+ Avotre document, puis appliquez Tidy (à partir du menu Bundles> HTML ou avec le raccourci CTRL+ SHIFT+ H), il ne fera généralement que des retraits, ignorant les alertes sur les validations (qui sont parfois inutiles car nous pouvons travailler sur des extraits de page ).

mcdado
la source
0

Vous pouvez utiliser Xcode ou Dashcode à la place si vous installez les outils de développement. Ils sont gratuits sur les disques d'installation fournis avec votre ordinateur. Je crois que Xcode et Dashcode ont une coloration syntaxique.

Si vous voulez un très bon logiciel, procurez-vous Coda. C'est un peu cher à 100 $, mais je dirais certainement que ça vaut le coup. Il a la coloration syntaxique et (la grande partie pour moi) l'auto-complétion.

daviesgeek
la source
0

Oui. L'appel Tidy dans le bundle HTML intégré de TextMate peut gérer votre HTML.

Les packs TextMate -> HTML -> Tidy produit:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:tal="http://xml.zope.org/namespaces/tal" xmlns:metal="http://xml.zope.org/namespaces/metal">
    <head>
        <title></title>
        <script type="text/javascript" src="http://www.speechapi.com/static/lib/swfobject.js">
</script>
        <script type="text/javascript" src="http://www.speechapi.com/static/lib/speechapi-1.1.js">
</script>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js">
</script>
    </head>
    <body>
        <!-- All above disappears -->
        <p>
            Test
        </p><!-- All below disappears-->
    </body>
</html>

Sur votre exemple de code. Rien n'a disparu. Vous obtenez également les avertissements suivants:

line 1 column 1 - Warning: missing <!DOCTYPE> declaration
line 2 column 5 - Warning: <body> isn't allowed in <head> elements
line 1 column 1 - Warning: <html> proprietary attribute "xmlns:tal"
line 1 column 1 - Warning: <html> proprietary attribute "xmlns:metal"
Ian C.
la source
0

Le problème que j'ai rencontré avec la Text -> Indent Selectionsolution intégrée ou Tidy est qu'elle ne fonctionne pas bien avec du code HTML partiel. Ceci est par exemple important lors de l'édition dans WordPress ou lorsque vous travaillez avec des partiels dans Ruby on Rails.

La solution qui a fonctionné pour moi a été d'ajouter une commande au bundle avec un script Perl personnalisé par John Watson que j'ai trouvé ici: http://snipplr.com/view.php?codeview&id=28256

Jessie Dedecker
la source