Czy Textmate ładnie wcina HTML?

17

Czy Textmate ma funkcję ładnego wcięcia HTML?

HTML Tidy wcina go, ale wydaje się, że usuwa również tagi. (To nie jest całkowicie poprawny HTML, ale nadal!)

<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
źródło
Czy możesz podać przykład HTML, w którym tagi są usuwane, ponieważ jest to zaskakujące
151019
@Mark: Zaktualizowano kodem
Casebash
@Casebash Wypróbowałem Tidy z twoim kodem i dla mnie dodałem tylko tagi. copypastecode.com/46216
Robert S Ciaccio
@calvera: Upewnij się, że typem dokumentu jest HTML, a nie zwykły tekst
Casebash
3
@Casebash: został ustawiony na html ... FYI, z tego co pamiętam o wtyczce Tidy dla Notepad ++, jest konfigurowany za pomocą pliku tekstowego. Więc może coś jest nie tak z konfiguracją Tidy.
Robert S Ciaccio,

Odpowiedzi:

20

Możesz nacisnąć +, Aaby zaznaczyć wszystko Text->Indent Selection.

James Moore
źródło
Lata TextMate i nigdy nie widziałem ani nie korzystałem z tej funkcji ... \ o /
brasofilo,
Niestety nie jest to pełne formatowanie XML: zachowuje źle wcięte linie i nie dzieli znaczników tej samej linii na osobne linie. Korzystanie z Textmate 2.0-rc.4.
Alexander Klimetschek
13

Możesz użyć Bundles > HTML > Tidyskrótu ctrl+ + H.

Loïc Wolff
źródło
3
Tidy nie tylko wcina - zdaje się również usuwać jego części!
Casebash
1
Pytanie dotyczyło wcięcia, a nie sprzątania
tig
Sprzątanie kończy się również niepowodzeniem, gdy występują pewne problemy, takie jak nieznane nazwy elementów.
Alexander Klimetschek
1

Chciałbym wskazać coś, co krzyżuje nieco inne odpowiedzi:

Jeśli wybierzesz tekst, który chcesz sformatować (lub powtórzyć), TextMate zastosuje tylko określone działania. Tak więc, jeśli CMD+ ATwój dokument, a następnie zastosujesz Tidy (albo z menu Pakiety> HTML lub za pomocą skrótu CTRL+ SHIFT+ H), przeważnie zrobi to tylko wcięcie, pomijając alerty dotyczące sprawdzania poprawności (które czasami są niepotrzebne, ponieważ możemy pracować nad fragmentami strony ).

McDado
źródło
0

Zamiast tego możesz użyć Xcode lub Dashcode, jeśli zainstalujesz Narzędzia programistyczne. Są one dostępne bezpłatnie na dyskach instalacyjnych dostarczonych z komputerem. Uważam, że zarówno Xcode, jak i Dashcode mają podświetlanie składni.

Jeśli chcesz naprawdę dobrego oprogramowania, kup Codę. Jest to trochę drogo za 100 USD, ale zdecydowanie powiedziałbym, że warto. Ma podświetlanie składni i (dla mnie dużą część) autouzupełnianie.

daviesgeek
źródło
0

Tak. Wywołanie Tidy we wbudowanym pakiecie HTML TextMate może obsługiwać Twój HTML.

Pakiety TextMate -> HTML -> Tidy produkuje:

<!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>

Na przykładowym kodzie. Nic nie zniknęło. Otrzymasz również następujące ostrzeżenia:

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.
źródło
0

Problem, którego doświadczyłem z wbudowanym Text -> Indent Selectionrozwiązaniem Tidy, polega na tym, że nie działa on dobrze z częściowym kodem HTML. Jest to ważne na przykład podczas edycji w WordPressie lub pracy z częściami w Ruby on Rails.

Rozwiązaniem, które działało dla mnie, było dodanie polecenia do pakietu ze niestandardowym skryptem Perla autorstwa Johna Watsona, który znalazłem tutaj: http://snipplr.com/view.php?codeview&id=28256

Jessie Dedecker
źródło