Browse Source

Fixed tooltip indentation after list items

master
eidheim 1 month ago
parent
commit
9d285e4466
  1. 20
      src/tooltips.cpp
  2. 25
      tests/tooltips_test.cpp

20
src/tooltips.cpp

@ -395,6 +395,26 @@ void Tooltip::wrap_lines() {
auto next = last_space;
next.forward_char();
buffer->erase(last_space, next);
// Indent next line if current line is indented, or for list items
auto start = buffer->get_iter_at_line(mark->get_iter().get_line());
auto end = start;
if((*end == '-' || *end == '*' || *end == '+') && end.forward_char() && *end == ' ')
buffer->insert(mark->get_iter(), "\n ");
else if((*end >= '1' && *end <= '9') && end.forward_char()) {
while((*end >= '0' && *end <= '9') && end.forward_char()) {
}
if(*end == '.' && end.forward_char() && *end == ' ' && end.forward_char())
buffer->insert(mark->get_iter(), "\n" + std::string(end.get_line_offset(), ' '));
else
buffer->insert(mark->get_iter(), "\n");
}
else if((*end == ' ' || *end == '\t') && end.forward_char()) {
while((*end == ' ' || *end == '\t') && end.forward_char()) {
}
buffer->insert(mark->get_iter(), "\n" + std::string(end.get_line_offset(), ' '));
}
else
buffer->insert(mark->get_iter(), "\n");
iter = mark->get_iter();

25
tests/tooltips_test.cpp

@ -540,6 +540,31 @@ int main() {
tooltip->wrap_lines();
g_assert(tooltip->buffer->get_text() == "testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest\ntest test");
}
{
auto tooltip = get_markdown_tooltip("- test test test test test test test test test test test test test test test test test test test test test");
tooltip->wrap_lines();
g_assert(tooltip->buffer->get_text() == "- test test test test test test test test test test test test test test test\n test test test test test test");
}
{
auto tooltip = get_markdown_tooltip("+ test test test test test test test test test test test test test test test test test test test test test");
tooltip->wrap_lines();
g_assert(tooltip->buffer->get_text() == "+ test test test test test test test test test test test test test test test\n test test test test test test");
}
{
auto tooltip = get_markdown_tooltip("* test test test test test test test test test test test test test test test test test test test test test");
tooltip->wrap_lines();
g_assert(tooltip->buffer->get_text() == "* test test test test test test test test test test test test test test test\n test test test test test test");
}
{
auto tooltip = get_markdown_tooltip("1. test test test test test test test test test test test test test test test test test test test test test");
tooltip->wrap_lines();
g_assert(tooltip->buffer->get_text() == "1. test test test test test test test test test test test test test test test\n test test test test test test");
}
{
auto tooltip = get_markdown_tooltip("10. test test test test test test test test test test test test test test test test test test test test test");
tooltip->wrap_lines();
g_assert(tooltip->buffer->get_text() == "10. test test test test test test test test test test test test test test test\n test test test test test test");
}
// Testing insert_doxygen
{

Loading…
Cancel
Save