I'm trying to use the auto-indentation feature in Sublime Text 3 for HTML. I've got some block comments in the html and selecting Edit>Line>Reindent works until it hits a block comment.
Try to reindent the example here:
<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>
and it turns out like this:
<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>
Any thoughts?
I have logged the issue here: https://github.com/SublimeTextIssues/Core/issues/1271
The reason for this behavior is because Sublime Text, by default, is set to preserve the indentation of comments. To disable this:
Package Control: Install Package
PackageResourceViewer
PRV: O
PackageResourceViewer: Open Resource
Default
Indentation Rules - Comments.tmPreferences
<true/>
under<key>preserveIndent</key>
to<false/>
Reindentation will now work correctly with comments.
I would also recommend to edit the HTML indentation rules to ignore comments, so that it doesn't change indentation based on tags in comments. i.e. otherwise
would become:
To do this:
PRV: O
PackageResourceViewer: Open Resource
HTML
Miscellaneous.tmPreferences
Change
to
and
to
(this comments out the closing comment regex)
However, when the next release of ST3 is available, it might be a good idea to then delete your overrides, in case it is fixed properly. This way, you will continue to get updates to these files, otherwise you will be stuck with the versions you have saved. To do this:
Preferences
->Browse Packages
HTML
folderDefault
folder and delete theIndentation Rules - Comments.tmPreferences
fileIf the problem wasn't fixed in the next build, you can simply recreate these changes.
Tried your example in Sublime Text 3 (builds 3103 and 3114) and you are right, the indentation breaks when it finds a comment block.
Apparently, the reindentation functionality was always pretty weak and HTML is not the only context where it doesn't work (EDIT: Confirmed in PHP too, pretty much the same behavior).
I'd recommend submitting the issue if it isn't already submitted.