2016-07-07 41 views
6

Próbuję użyć funkcji automatycznego wcięcia w Sublime Text 3 dla HTML. Mam kilka komentarzy blokowych w html i wybieram Edytuj> Linia> Reindent działa, dopóki nie trafi komentarz bloku.Błąd wcięcia z Sublime Text

Spróbuj reindent przykład tutaj:

<html> 
<head> 
<title>Testing Indent</title> 
</head> 
<body> 
<table> 
<tr> 
<td> 
Cell 1 
</td> 
</tr> 
<tr> 
Cell 2 
<!--Block Comment Here 
And a Little More Here 
--> 
</tr> 
</table> 
</body> 
</html> 

i okazuje się tak:

<html> 
<head> 
    <title>Testing Indent</title> 
</head> 
<body> 
    <table> 
     <tr> 
      <td> 
       Cell 1 
      </td> 
     </tr> 
     <tr> 
      <td> 
       Cell 2 
<!--Block Comment Here 
And a Little More Here 
--> 
</td> 
</tr> 
</table> 
</body> 
</html> 

Wszelkie myśli?

+0

Czy działa bez komentarza? –

+0

Tak, wcięcia są w porządku, gdy są wcięte ponownie bez bloku komentarza. –

+0

może potwierdzić, dokładny problem przydarza mi się ze ST3 3103 – Sebastianb

Odpowiedz

13

Mam zalogowany Chodzi tutaj: https://github.com/SublimeTextIssues/Core/issues/1271

Powodem takiego zachowania jest bo Sublime Text, domyślnie ustawiony jest, aby zachować wcięcie komentarzach. Aby to wyłączyć:

  1. Install Package Control jeśli nie jest już zainstalowany
  2. Install PackageResourceViewer jeśli nie jest już zainstalowana:
    • Otwórz Polecenie Palette
    • Wybierz Package Control: Install Package
    • Wybierz PackageResourceViewer
  3. Otwórz Polecenie Palette
  4. Rodzaj PRV: O
  5. Wybierz PackageResourceViewer: Open Resource
  6. Wybierz Default
  7. Wybierz Indentation Rules - Comments.tmPreferences
  8. Zmiana <true/> pod <key>preserveIndent</key> do <false/>
  9. zapisać plik

Reindentation będzie teraz działał poprawnie z komentarzami.


Polecam również edytować zasady HTML wcięcia ignorować komentarze, tak, że nie zmienia się wcięcia na podstawie znaczników w komentarzu. to znaczyinaczej

<html> 
<head> 
<title>Testing Indent</title> 
</head> 
<body> 
<table> 
<tr> 
<td> 
Cell 1 
</td> 
</tr> 
<tr> 
Cell 2 
<!-- 
Block Comment Here 
<td> 
And a Little More Here 
</td> 
--> 
</tr> 
</table> 
</body> 
</html> 

staną:

<html> 
<head> 
    <title>Testing Indent</title> 
</head> 
<body> 
    <table> 
     <tr> 
      <td> 
       Cell 1 
      </td> 
     </tr> 
     <tr> 
      Cell 2 
      <!-- 
      Block Comment Here 
      <td> 
       And a Little More Here 
      </td> 
     --> 
    </tr> 
</table> 
</body> 
</html> 

Aby to zrobić:

  1. polecenia Otwórz Palette
  2. Rodzaj PRV: O
  3. Wybierz PackageResourceViewer: Open Resource
  4. Wybierz HTML
  5. Wybierz Miscellaneous.tmPreferences
  6. Zmień

    <key>scope</key> 
    <string>text.html</string> 
    

    do

    <key>scope</key> 
    <string>text.html - comment</string> 
    

    i

    |--&gt; 
    

    do

    (?#|--&gt;) 
    

    (ten komentuje się regex komentarz zamknięcia)

  7. Zapisz to

Jednak kiedy następne wydanie ST3 jest dostępna, to może być dobry pomysł, aby następnie usunąć swoje zastępuje, na wypadek gdyby został poprawnie naprawiony. W ten sposób będziesz nadal otrzymywać aktualizacje tych plików, w przeciwnym razie utkniesz z zapisanymi wersjami. Aby to zrobić:

  1. Preferences ->Browse Packages
  2. usunąć folder HTML
  3. Przejdź do folderu Default i usunąć plik

Indentation Rules - Comments.tmPreferences Jeśli problem nie został rozwiązany w następnej zbuduj, możesz po prostu odtworzyć te zmiany.

+1

Awesome. Bardzo dobra odpowiedź. Postępowałem zgodnie z instrukcjami i wszystko działało zgodnie z oczekiwaniami. Doceniam poziom szczegółowości. Będę mieć oko na przyszłe aktualizacje tego. –

+1

Dzięki kolego! – Ash

+0

Ten pakiet może również pomóc w "naprawieniu" plików z uszkodzonym wcięciem: https://packagecontrol.io/packages/Normalize%20Indentation – kursus

1

Próbowałem twojego przykładu w Sublime Text 3 (kompilacje 3103 i 3114) i masz rację, wcięcie łamie się, gdy znajdzie blok komentarza.

Najwyraźniej funkcja ponownego włączania zawsze była pretty weak i HTML nie jest jedynym kontekstem, w którym to nie działa (EDYTOWANIE: Potwierdzone w PHP też, prawie takie samo zachowanie).

Polecam submitting the issue, jeśli nie został jeszcze przesłany.

+0

Dzięki, będę musiał rzucić okiem i zgłosić problem z jego nie ma już. –

+0

Istnieje ten problem https://github.com/SublimeTextIssues/Core/issues/1271 – AdamS