@@ -861,16 +861,19 @@ M.chat_respond = function(params)
861
861
862
862
-- message needs role and content
863
863
local messages = {}
864
- local role = " "
864
+ local role = " user "
865
865
local content = " "
866
866
867
867
-- iterate over lines
868
- local start_index = header_end + 1
868
+ local start_index = header_end + 2
869
869
local end_index = # lines
870
870
if params .range == 2 then
871
871
start_index = math.max (start_index , params .line1 )
872
872
end_index = math.min (end_index , params .line2 )
873
873
end
874
+ if start_index > end_index then
875
+ start_index = end_index
876
+ end
874
877
875
878
local agent = M .get_chat_agent ()
876
879
local agent_name = agent .name
@@ -924,14 +927,13 @@ M.chat_respond = function(params)
924
927
table.insert (messages , { role = role , content = content })
925
928
role = " assistant"
926
929
content = " "
927
- elseif role ~= " " then
930
+ else
928
931
content = content .. " \n " .. line
929
932
end
930
933
end
931
934
-- insert last message not handled in loop
932
935
table.insert (messages , { role = role , content = content })
933
936
934
- -- replace first empty message with system prompt
935
937
content = " "
936
938
if headers .role and headers .role :match (" %S" ) then
937
939
content = headers .role
@@ -941,14 +943,20 @@ M.chat_respond = function(params)
941
943
if content :match (" %S" ) then
942
944
-- make it multiline again if it contains escaped newlines
943
945
content = content :gsub (" \\ n" , " \n " )
944
- messages [ 1 ] = { role = " system" , content = content }
946
+ table.insert ( messages , 1 , { role = " system" , content = content })
945
947
end
946
948
947
949
-- strip whitespace from ends of content
948
950
for _ , message in ipairs (messages ) do
949
951
message .content = message .content :gsub (" ^%s*(.-)%s*$" , " %1" )
950
952
end
951
953
954
+ messages = vim .tbl_filter (function (message )
955
+ return not (message .content == " " and message .role == " user" )
956
+ end , messages )
957
+
958
+ M .logger .debug (" messages: " .. vim .inspect (messages ), true )
959
+
952
960
-- write assistant prompt
953
961
local last_content_line = M .helpers .last_content_line (buf )
954
962
vim .api .nvim_buf_set_lines (buf , last_content_line , last_content_line , false , { " " , agent_prefix .. agent_suffix , " " })
0 commit comments