File tree Expand file tree Collapse file tree 1 file changed +14
-0
lines changed Expand file tree Collapse file tree 1 file changed +14
-0
lines changed Original file line number Diff line number Diff line change @@ -204,6 +204,20 @@ pub mod util {
204
204
// in reverse order.
205
205
edits. sort_unstable_by_key ( |edit| edit. range . start ) ;
206
206
207
+ // Generate a diff if the edit is a full document replacement.
208
+ #[ allow( clippy:: collapsible_if) ]
209
+ if edits. len ( ) == 1 {
210
+ let is_document_replacement = edits. first ( ) . and_then ( |edit| {
211
+ let start = lsp_pos_to_pos ( doc, edit. range . start , offset_encoding) ?;
212
+ let end = lsp_pos_to_pos ( doc, edit. range . end , offset_encoding) ?;
213
+ Some ( start..end)
214
+ } ) == Some ( 0 ..doc. len_chars ( ) ) ;
215
+ if is_document_replacement {
216
+ let new_text = Rope :: from ( edits. pop ( ) . unwrap ( ) . new_text ) ;
217
+ return helix_core:: diff:: compare_ropes ( doc, & new_text) ;
218
+ }
219
+ }
220
+
207
221
Transaction :: change (
208
222
doc,
209
223
edits. into_iter ( ) . map ( |edit| {
You can’t perform that action at this time.
0 commit comments