Skip to content

Multiple indent guides rendered at some indent levels #413

@tomlin7

Description

@tomlin7

Bug

Multiple indent guides rendered at some indent levels. For example, see the indent level 3 in following screenshot

image

This is either an inconsistency caused by the bitmap used or the code, or tk itself not scaling properly.

Following code manages updation of indent guides

def update_indent_guides(self) -> None:
if self.minimalist:
return
self.tag_remove("indent_guide", "1.0", "end")
self.tag_remove("current_indent_guide", "1.0", "end")
lines = self.get("1.0", "end-1c").split("\n")
self.current_indent_level = self.get_current_indent_level() - 1
for line_number, line in enumerate(lines, start=1):
indent_level = self.calculate_indent_level(line)
if indent_level > 0:
self.add_indent_guide(line_number, indent_level)
def calculate_indent_level(self, line: str) -> int:
indent = len(line) - len(line.lstrip())
return indent // self.base.tab_spaces
def add_indent_guide(self, line_number: int, indent_level: int) -> None:
for level in range(indent_level):
start_index = f"{line_number}.{level * self.base.tab_spaces - 1}"
end_index = f"{line_number}.{level * self.base.tab_spaces + 1}"
self.tag_add(
(
"current_indent_guide"
if level == self.current_indent_level
else "indent_guide"
),
start_index,
end_index,
)

The indent guide uses following bitmaps

self.tag_configure(
"indent_guide",
bgstipple=f"@{self.indentguide_stipple}",
background=self.base.theme.border,
)
self.tag_configure(
"current_indent_guide",
bgstipple=f"@{self.indentguide_stipple}",
background=self.base.theme.secondary_foreground,
)

System Information

  • OS: Windows 11
  • Python Version: 3.12.5

Metadata

Metadata

Assignees

Labels

bugSomething isn't workinghelp wantedExtra attention is neededlanguage featuressyntax highlighting, lsp, other language featuressuggestions neededbugs/features that are still not figured out and need solution suggestionstext editorRelated to text editor's features

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions