Skip to content

Conversation

@tanloong
Copy link
Contributor

@tanloong tanloong commented Oct 28, 2025

This modifies _should_auto_indent() to scan characters from the start of the buffer up to the target position pos, tracking context to ignore irrelavant content within strings, then checks if the conditions for auto-indent are met.

It uses a stack (str_delims) to track quotes (" or '). When inside a string (stack not empty), characters like # or : are treated as literal text and are ignored. A flag (in_comment) marks when a # (not inside a string) has been encountered, ignoring all subsequent characters on that line as comment text. It tracks the indentation level of the last non-whitespace character (lastchar_line_indent), which helps ensure the colon is at a valid indentation level to trigger auto-indent.

The function returns True if the last non-whitespace character (outside comments/strings) is a colon (:), and the indentation level of the line where pos resides is not greater than the indentation of that colon.

Hi @wiggin15, as this _should_auto_indent() function is modified based on your original implementation (#119606), if you could help review when you have some spare time, I would be really appreciated!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant