changeset 33313:a60275d71dc2 v9.0.1922

patch 9.0.1922: LSP server request message is misinterpreted as a response message Commit: https://github.com/vim/vim/commit/78c5a5abc657f0173551157547213d8bbb033fd4 Author: Yegappan Lakshmanan <yegappan@yahoo.com> Date: Wed Sep 20 20:32:55 2023 +0200 patch 9.0.1922: LSP server request message is misinterpreted as a response message Problem: LSP server request message is misinterpreted as a response message Solution: Check that the message does not have the "message" field closes: #13133 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
author Christian Brabandt <cb@256bit.org>
date Wed, 20 Sep 2023 20:45:03 +0200
parents 3a4308ce45b5
children b811e2b76a5d
files src/channel.c src/version.c
diffstat 2 files changed, 12 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/channel.c
+++ b/src/channel.c
@@ -2927,9 +2927,16 @@ may_invoke_callback(channel_T *channel, 
 	    seq_nr = 0;
 	    if (d != NULL)
 	    {
-		di = dict_find(d, (char_u *)"id", -1);
-		if (di != NULL && di->di_tv.v_type == VAR_NUMBER)
-		    seq_nr = di->di_tv.vval.v_number;
+		// When looking for a response message from the LSP server,
+		// ignore new LSP request and notification messages.  LSP
+		// request and notification messages have the "method" field in
+		// the header and the response messages do not have this field.
+		if (!dict_has_key(d, "method"))
+		{
+		    di = dict_find(d, (char_u *)"id", -1);
+		    if (di != NULL && di->di_tv.v_type == VAR_NUMBER)
+			seq_nr = di->di_tv.vval.v_number;
+		}
 	    }
 
 	    argv[1] = *listtv;
--- a/src/version.c
+++ b/src/version.c
@@ -700,6 +700,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1922,
+/**/
     1921,
 /**/
     1920,