1
1
local ref = MiniTest .expect .reference_screenshot
2
+ local eq = MiniTest .expect .equality
2
3
3
4
local child = MiniTest .new_child_neovim ()
4
5
@@ -7,9 +8,6 @@ T["ui_preview"] = MiniTest.new_set({
7
8
hooks = {
8
9
pre_case = function ()
9
10
child .restart ({ " -u" , " scripts/minimal_init.lua" })
10
- child .api .nvim_set_hl (0 , " CopilotLspNesAdd" , { link = " DiffAdd" , default = true })
11
- child .api .nvim_set_hl (0 , " CopilotLspNesDelete" , { link = " DiffDelete" , default = true })
12
- child .api .nvim_set_hl (0 , " CopilotLspNesApply" , { link = " DiffText" , default = true })
13
11
child .bo .filetype = " txt"
14
12
end ,
15
13
post_once = child .stop ,
@@ -32,6 +30,14 @@ local cases = {
32
30
},
33
31
newText = " XYZ" ,
34
32
},
33
+ preview = {
34
+ inline_insertion = {
35
+ text = " XYZ" ,
36
+ line = 1 ,
37
+ character = 2 ,
38
+ },
39
+ },
40
+ final = " 123456\n abXYZcdefg\n hijklmn" ,
35
41
},
36
42
[" inline deletion" ] = {
37
43
content = " 123456\n abcdefg\n hijklmn" ,
@@ -48,8 +54,23 @@ local cases = {
48
54
},
49
55
newText = " " ,
50
56
},
57
+ preview = {
58
+ deletion = {
59
+ range = {
60
+ start = {
61
+ line = 1 ,
62
+ character = 2 ,
63
+ },
64
+ [" end" ] = {
65
+ line = 1 ,
66
+ character = 5 ,
67
+ },
68
+ },
69
+ },
70
+ },
71
+ final = " 123456\n abfg\n hijklmn" ,
51
72
},
52
- [" insert lines after line end " ] = {
73
+ [" insert lines below " ] = {
53
74
content = " 123456\n abcdefg\n hijklmn" ,
54
75
edit = {
55
76
range = {
@@ -64,8 +85,15 @@ local cases = {
64
85
},
65
86
newText = " \n XXXX\n YYY" ,
66
87
},
88
+ preview = {
89
+ lines_insertion = {
90
+ text = " XXXX\n YYY" ,
91
+ line = 1 ,
92
+ },
93
+ },
94
+ final = " 123456\n abcdefg\n XXXX\n YYY\n hijklmn" ,
67
95
},
68
- [" insert lines at the beginning " ] = {
96
+ [" insert lines above " ] = {
69
97
content = " 123456\n abcdefg\n hijklmn" ,
70
98
edit = {
71
99
range = {
@@ -80,6 +108,14 @@ local cases = {
80
108
},
81
109
newText = " XXXX\n YYY\n " ,
82
110
},
111
+ preview = {
112
+ lines_insertion = {
113
+ text = " XXXX\n YYY" ,
114
+ line = 1 ,
115
+ above = true ,
116
+ },
117
+ },
118
+ final = " 123456\n XXXX\n YYY\n abcdefg\n hijklmn" ,
83
119
},
84
120
[" inline replacement" ] = {
85
121
content = " 123456\n abcdefg\n hijklmn" ,
@@ -96,6 +132,25 @@ local cases = {
96
132
},
97
133
newText = " XXXX\n YYY" ,
98
134
},
135
+ preview = {
136
+ deletion = {
137
+ range = {
138
+ [" end" ] = {
139
+ character = 6 ,
140
+ line = 1 ,
141
+ },
142
+ start = {
143
+ character = 0 ,
144
+ line = 0 ,
145
+ },
146
+ },
147
+ },
148
+ lines_insertion = {
149
+ line = 1 ,
150
+ text = " 123XXXX\n YYYefg" ,
151
+ },
152
+ },
153
+ final = " 123XXXX\n YYYefg\n hijklmn" ,
99
154
},
100
155
[" single line replacement" ] = {
101
156
content = " 123456\n abcdefg\n hijklmn" ,
@@ -112,28 +167,62 @@ local cases = {
112
167
},
113
168
newText = " XXXX" ,
114
169
},
170
+ preview = {
171
+ deletion = {
172
+ range = {
173
+ [" end" ] = {
174
+ character = 6 ,
175
+ line = 1 ,
176
+ },
177
+ start = {
178
+ character = 0 ,
179
+ line = 1 ,
180
+ },
181
+ },
182
+ },
183
+ lines_insertion = {
184
+ line = 1 ,
185
+ text = " XXXX" ,
186
+ },
187
+ },
188
+ final = " 123456\n XXXX\n hijklmn" ,
115
189
},
116
190
}
117
191
118
192
local function set_content (content )
119
193
child .api .nvim_buf_set_lines (0 , 0 , - 1 , false , vim .split (content , " \n " , { plain = true }))
120
194
end
121
195
196
+ local function get_content ()
197
+ return table.concat (child .api .nvim_buf_get_lines (0 , 0 , - 1 , false ), " \n " )
198
+ end
199
+
122
200
do
123
201
for name , case in pairs (cases ) do
124
202
T [" ui_preview" ][name ] = function ()
125
203
set_content (case .content )
126
204
ref (child .get_screenshot ())
127
205
128
206
child .g .inline_edit = case .edit
129
- local _preview = child .lua_func (function ()
207
+ local preview = child .lua_func (function ()
208
+ return require (" copilot-lsp.nes.ui" ).caculate_preview (0 , vim .g .inline_edit )
209
+ end )
210
+ eq (preview , case .preview )
211
+
212
+ child .g .inline_preview = preview
213
+ child .lua_func (function ()
130
214
local ns_id = vim .api .nvim_create_namespace (" nes" )
131
- local bufnr = vim .api .nvim_get_current_buf ()
132
- local preview = require (" copilot-lsp.nes.ui" ).caculate_preview (bufnr , vim .g .inline_edit )
133
- require (" copilot-lsp.nes.ui" ).display_inline_edit_preview (bufnr , ns_id , preview )
134
- return preview
215
+ require (" copilot-lsp.nes.ui" ).display_inline_edit_preview (0 , ns_id , vim .g .inline_preview )
135
216
end )
136
217
ref (child .get_screenshot ())
218
+
219
+ child .lua_func (function ()
220
+ local bufnr = vim .api .nvim_get_current_buf ()
221
+ vim .lsp .util .apply_text_edits ({ vim .g .inline_edit }, bufnr , " utf-16" )
222
+ end )
223
+
224
+ local final = get_content ()
225
+ eq (final , case .final )
137
226
end
138
227
end
139
228
end
0 commit comments