diff --git a/djhtml/modes.py b/djhtml/modes.py
index 358618d..d512680 100644
--- a/djhtml/modes.py
+++ b/djhtml/modes.py
@@ -286,10 +286,21 @@ def create_token(self, raw_token, src, line):
mode = self
if raw_token == "<":
- if tag := re.match(r"([\w\-\.:]+)", src):
- token, mode = Token.Text(raw_token, mode=DjHTML), InsideHTMLTag(
- tag[1], line, self
+ if match := re.match(r"([\w\-\.:]+)(\s*)", src):
+ tagname = match[1]
+ following_spaces = match[2]
+ absolute = True
+ token = Token.Text(raw_token, mode=DjHTML)
+ offsets = dict(
+ relative=-1 if line.indents else 0,
+ absolute=len(line) + len(tagname) + 2,
)
+ if "\n" in following_spaces:
+ # Use "relative" multi-line indendation instead
+ absolute = False
+ token.indents = True
+ offsets = dict(relative=0, absolute=0)
+ mode = InsideHTMLTag(tagname, line, self, absolute, offsets)
else:
token = Token.Text(raw_token, mode=DjHTML)
elif raw_token == "