[gnome-builder] lsp: Improve compatibility with textDocument/hover



commit fd803f606f6bc5ea7af5a3fdbf325a1f0165c212
Author: JCWasmx86 <JCWasmx86 t-online de>
Date:   Sun Mar 27 18:31:50 2022 +0200

    lsp: Improve compatibility with textDocument/hover
    
    Before this commit, only the first item of the contents of the response where shown.
    
    This means, e.g. in the case of eclipse.jdt.ls that is returning several MarkedStrings, only the first 
one is shown.
    
    With this commit, all informations are shown.

 src/libide/lsp/ide-lsp-hover-provider.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)
---
diff --git a/src/libide/lsp/ide-lsp-hover-provider.c b/src/libide/lsp/ide-lsp-hover-provider.c
index 1ca2fc900..43ac69e32 100644
--- a/src/libide/lsp/ide-lsp-hover-provider.c
+++ b/src/libide/lsp/ide-lsp-hover-provider.c
@@ -108,7 +108,7 @@ parse_marked_string (GVariant *v)
   else
     {
       g_variant_iter_init (&iter, v);
-      if ((item = g_variant_iter_next_value (&iter)))
+      while ((item = g_variant_iter_next_value (&iter)))
         {
           GVariant *asv = item;
           g_autoptr(GVariant) child2 = NULL;
@@ -133,7 +133,7 @@ parse_marked_string (GVariant *v)
                 g_string_append (str, value);
     #else
               if (!ide_str_empty0 (value))
-                g_string_append_printf (gstr, "```\n%s\n```", value);
+                g_string_append_printf (gstr, "```\n%s\n```\n", value);
     #endif
             }
 
@@ -141,8 +141,11 @@ parse_marked_string (GVariant *v)
         }
     }
   if (gstr->len)
-    return ide_marked_content_new_from_data (gstr->str, gstr->len, IDE_MARKED_KIND_MARKDOWN);
-
+    {
+      while (g_ascii_isspace(gstr->str[gstr->len]))
+        g_string_erase (gstr, gstr->len - 1, 1);
+      return ide_marked_content_new_from_data (gstr->str, gstr->len, IDE_MARKED_KIND_MARKDOWN);
+    }
   return NULL;
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]