1
0
forked from aniani/vim

patch 8.2.4648: handling LSP messages is a bit slow

Problem:    Handling LSP messages is a bit slow.
Solution:   Included support for LSP messages. (Yegappan Lakshmanan,
            closes #10025)
This commit is contained in:
Yegappan Lakshmanan
2022-03-30 10:16:05 +01:00
committed by Bram Moolenaar
parent 2bdad61267
commit 9247a221ce
9 changed files with 885 additions and 50 deletions

View File

@@ -86,6 +86,32 @@ json_encode_nr_expr(int nr, typval_T *val, int options)
ga_append(&ga, NUL);
return ga.ga_data;
}
/*
* Encode "val" into a JSON format string prefixed by the LSP HTTP header.
* Returns NULL when out of memory.
*/
char_u *
json_encode_lsp_msg(typval_T *val)
{
garray_T ga;
garray_T lspga;
ga_init2(&ga, 1, 4000);
if (json_encode_gap(&ga, val, 0) == FAIL)
return NULL;
ga_append(&ga, NUL);
ga_init2(&lspga, 1, 4000);
vim_snprintf((char *)IObuff, IOSIZE,
"Content-Length: %u\r\n"
"Content-Type: application/vim-jsonrpc; charset=utf-8\r\n\r\n",
ga.ga_len - 1);
ga_concat(&lspga, IObuff);
ga_concat_len(&lspga, ga.ga_data, ga.ga_len);
ga_clear(&ga);
return lspga.ga_data;
}
#endif
static void