I am using the completion list, and I need to add detailed descriptions to each item.
I created a detail window provider by inheriting IContentProvider. The method of getting the window content (GetContent) is a synchronous method, but my method of obtaining detailed information is asynchronous. If I use the method of blocking data acquisition, once the asynchronous method has a delay or becomes unresponsive, my program will directly enter the suspended animation state, which is too risky for me.
Visual Studio Code currently has a very popular LSP (Language Server protocol) protocol, and almost all methods need to be called asynchronously. But all the methods of our SyntaxEditor are synchronized, which is very troublesome in the process of expanding the syntax editor, and it is easy to have problems of view freezes or even crashes.
Can this problem be improved?