diff src/json.c @ 28244:85b07a942518 v8.2.4648

patch 8.2.4648: handling LSP messages is a bit slow Commit: https://github.com/vim/vim/commit/9247a221ce7800c0ae1b3487112d314b8ab79f53 Author: Yegappan Lakshmanan <yegappan@yahoo.com> Date: Wed Mar 30 10:16:05 2022 +0100 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)
author Bram Moolenaar <Bram@vim.org>
date Wed, 30 Mar 2022 11:30:05 +0200
parents 41e0dcf38521
children 62cc3b60493b
line wrap: on
line diff
--- a/src/json.c
+++ b/src/json.c
@@ -86,6 +86,32 @@ json_encode_nr_expr(int nr, typval_T *va
     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