Ошибка отступа с возвышенным текстом

Я пытаюсь использовать функцию автоматического отступа в Sublime Text 3 для HTML. У меня есть несколько блочных комментариев в html, и выбор «Правка»> «Строка»> «Повторное вхождение» работает до тех пор, пока не будет достигнут блочный комментарий.

Попробуйте изменить пример здесь:

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

а получается вот так:

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

Какие-нибудь мысли?


person Mike_Piercy    schedule 07.07.2016    source источник
comment
Без комментария работает?   -  person The Dark Knight    schedule 07.07.2016
comment
Да, он отлично отступает, когда он повторно отступает без блока комментариев.   -  person Mike_Piercy    schedule 07.07.2016
comment
могу подтвердить, точная проблема возникает у меня с ST3 3103   -  person Sebastianb    schedule 07.07.2016


Ответы (2)


Я зарегистрировал проблему здесь: https://github.com/SublimeTextIssues/Core/issues/1271

Причина такого поведения в том, что Sublime Text по умолчанию настроен на сохранение отступов комментариев. Чтобы отключить это:

  1. Установите Package Control, если он еще не установлен.
  2. Install PackageResourceViewer if it is not already installed:
    • Open the Command Palette
    • Выберите Package Control: Install Package
    • Выберите PackageResourceViewer
  3. Откройте палитру команд
  4. Введите PRV: O
  5. Выберите PackageResourceViewer: Open Resource
  6. Выберите Default
  7. Выберите Indentation Rules - Comments.tmPreferences
  8. Измените <true/> под <key>preserveIndent</key> на <false/>
  9. Сохраните файл

Переотступ теперь будет корректно работать с комментариями.


Я бы также рекомендовал отредактировать правила отступа HTML, чтобы игнорировать комментарии, чтобы он не менял отступ на основе тегов в комментариях. то есть иначе

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

станет:

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

Сделать это:

  1. Открыть палитру команд
  2. Введите PRV: O
  3. Выберите PackageResourceViewer: Open Resource
  4. Выберите HTML
  5. Выберите Miscellaneous.tmPreferences
  6. Изменять

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

    to

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

    а также

    |--&gt;
    

    to

    (?#|--&gt;)
    

    (это комментирует регулярное выражение закрытия комментария)

  7. Сохрани это

Однако, когда будет доступен следующий выпуск ST3, может быть хорошей идеей удалить ваши переопределения, если они исправлены должным образом. Таким образом, вы продолжите получать обновления этих файлов, иначе вы застрянете с сохраненными версиями. Сделать это:

  1. Preferences -> Browse Packages
  2. Удалите папку HTML
  3. Зайдите в папку Default и удалите файл Indentation Rules - Comments.tmPreferences

Если проблема не была устранена в следующей сборке, вы можете просто воссоздать эти изменения.

person Keith Hall    schedule 08.07.2016
comment
Потрясающий. Очень хороший ответ. Я выполнил шаги, и все сработало, как и ожидалось. Я ценю уровень детализации. Я буду следить за будущими обновлениями этого. - person Mike_Piercy; 08.07.2016
comment
Этот пакет также может помочь исправить файлы с нарушенным отступом: packagecontrol.io/packages/Normalize%20Indentation - person kursus; 12.08.2017

Попробовал ваш пример в Sublime Text 3 (сборки 3103 и 3114), и вы правы, отступ прерывается, когда он находит блок комментариев.

Судя по всему, функциональность повторного отступа всегда была довольно слабой, а HTML это не единственный контекст, в котором он не работает (EDIT: подтверждено и в PHP, почти такое же поведение).

Я бы рекомендовал отправить проблему, если она еще не отправлена.

person Sebastianb    schedule 07.07.2016
comment
Спасибо, я посмотрю и отправлю вопрос о том, что его уже нет. - person Mike_Piercy; 07.07.2016
comment
Есть эта проблема github.com/SublimeTextIssues/Core/issues/1271 - person AdamS; 29.10.2017