diff --git a/highlight_selection.py b/highlight_selection.py index 07b320f..5003edc 100644 --- a/highlight_selection.py +++ b/highlight_selection.py @@ -29,19 +29,21 @@ class HighlightSelection(Highlight): start_byte_in_line = begin - line.byte_offset() else: start_byte_in_line = 0 + start_char = line.byte_index_to_char_index(start_byte_in_line) if line.includes_byte(end): length_in_bytes = end - line.byte_offset() - start_byte_in_line + end_char = line.byte_index_to_char_index(start_byte_in_line + length_in_bytes) else: # renders the highlighting to the end of the line # this is how selections usually behave length_in_bytes = Settings.max_line_length() - start_byte_in_line - start_char = line.byte_index_to_char_index(start_byte_in_line) - end_char = line.byte_index_to_char_index(start_byte_in_line+length_in_bytes) - length_in_chars = end_char - start_char + # note: this mixes chars and bytes, but that should not matter, because + # it just means that we render the highlight into the invisible range on the right + end_char = start_char + length_in_bytes - #print("selected: %s" % (line.substr(start_char, length_in_chars))) + length_in_chars = end_char - start_char return [HighlightedRange(start_char, length_in_chars, brush=QBrush(QColor(156, 215, 255)), pen=Qt.PenStyle.NoPen)] else: