mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 19:07:35 +00:00
LibLine: Remove duplicate members in CompletionSuggestion
Previously, we stored two representations of the same string in `CompletionSuggestion` object: one for the bytes and the other for the code points corresponding to those bytes. To minimize duplication, this patch combine both representations into a single UTF-8 string, which is already supported by our new String class. Following this update, we successfully reduce the size of each object from 376 bytes to 256 bytes
This commit is contained in:
parent
89877b3f40
commit
19f137c1e6
7 changed files with 54 additions and 66 deletions
|
@ -26,9 +26,9 @@ ErrorOr<void> XtermSuggestionDisplay::display(SuggestionManager const& manager)
|
|||
|
||||
manager.set_start_index(0);
|
||||
TRY(manager.for_each_suggestion([&](auto& suggestion, auto) {
|
||||
longest_suggestion_length = max(longest_suggestion_length, suggestion.text_view.length() + suggestion.display_trivia_view.length());
|
||||
longest_suggestion_byte_length = max(longest_suggestion_byte_length, suggestion.text_string.length() + suggestion.display_trivia_string.length());
|
||||
longest_suggestion_byte_length_without_trivia = max(longest_suggestion_byte_length_without_trivia, suggestion.text_string.length());
|
||||
longest_suggestion_length = max(longest_suggestion_length, suggestion.text_view().length() + suggestion.display_trivia_view().length());
|
||||
longest_suggestion_byte_length = max(longest_suggestion_byte_length, suggestion.text_string().length() + suggestion.display_trivia_string().length());
|
||||
longest_suggestion_byte_length_without_trivia = max(longest_suggestion_byte_length_without_trivia, suggestion.text_string().length());
|
||||
return IterationDecision::Continue;
|
||||
}));
|
||||
|
||||
|
@ -65,9 +65,9 @@ ErrorOr<void> XtermSuggestionDisplay::display(SuggestionManager const& manager)
|
|||
manager.set_start_index(0);
|
||||
size_t page_start = 0;
|
||||
TRY(manager.for_each_suggestion([&](auto& suggestion, auto index) {
|
||||
size_t next_column = num_printed + suggestion.text_view.length() + longest_suggestion_length + 2;
|
||||
size_t next_column = num_printed + suggestion.text_view().length() + longest_suggestion_length + 2;
|
||||
if (next_column > m_num_columns) {
|
||||
auto lines = (suggestion.text_view.length() + m_num_columns - 1) / m_num_columns;
|
||||
auto lines = (suggestion.text_view().length() + m_num_columns - 1) / m_num_columns;
|
||||
lines_used += lines;
|
||||
num_printed = 0;
|
||||
}
|
||||
|
@ -94,10 +94,10 @@ ErrorOr<void> XtermSuggestionDisplay::display(SuggestionManager const& manager)
|
|||
|
||||
manager.set_start_index(m_pages[page_index].start);
|
||||
TRY(manager.for_each_suggestion([&](auto& suggestion, auto index) -> ErrorOr<IterationDecision> {
|
||||
size_t next_column = num_printed + suggestion.text_view.length() + longest_suggestion_length + 2;
|
||||
size_t next_column = num_printed + suggestion.text_view().length() + longest_suggestion_length + 2;
|
||||
|
||||
if (next_column > m_num_columns) {
|
||||
auto lines = (suggestion.text_view.length() + m_num_columns - 1) / m_num_columns;
|
||||
auto lines = (suggestion.text_view().length() + m_num_columns - 1) / m_num_columns;
|
||||
lines_used += lines;
|
||||
TRY(stderr_stream->write_until_depleted("\n"sv.bytes()));
|
||||
num_printed = 0;
|
||||
|
@ -115,10 +115,10 @@ ErrorOr<void> XtermSuggestionDisplay::display(SuggestionManager const& manager)
|
|||
|
||||
if (spans_entire_line) {
|
||||
num_printed += m_num_columns;
|
||||
TRY(stderr_stream->write_until_depleted(suggestion.text_string.bytes()));
|
||||
TRY(stderr_stream->write_until_depleted(suggestion.display_trivia_string.bytes()));
|
||||
TRY(stderr_stream->write_until_depleted(suggestion.text_string().bytes()));
|
||||
TRY(stderr_stream->write_until_depleted(suggestion.display_trivia_string().bytes()));
|
||||
} else {
|
||||
auto field = DeprecatedString::formatted("{: <{}} {}", suggestion.text_string, longest_suggestion_byte_length_without_trivia, suggestion.display_trivia_string);
|
||||
auto field = DeprecatedString::formatted("{: <{}} {}", suggestion.text_string(), longest_suggestion_byte_length_without_trivia, suggestion.display_trivia_string());
|
||||
TRY(stderr_stream->write_until_depleted(DeprecatedString::formatted("{: <{}}", field, longest_suggestion_byte_length + 2).bytes()));
|
||||
num_printed += longest_suggestion_length + 2;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue