@@ -686,16 +686,15 @@ void linting_lsp_server_handler::apply_document_changes(
686
686
687
687
void linting_lsp_server_handler::apply_document_change (
688
688
quick_lint_js::document<lsp_locator>& doc,
689
- ::simdjson::ondemand::object& change ) {
690
- string8_view change_text ;
691
- if (!get_string8 (change , " text" , &change_text )) {
689
+ ::simdjson::ondemand::object& raw_change ) {
690
+ lsp_document_change change ;
691
+ if (!get_string8 (raw_change , " text" , &change. text )) {
692
692
// Ignore invalid change.
693
693
return ;
694
694
}
695
695
::simdjson::ondemand::object raw_range;
696
- bool is_incremental = get_object (change, " range" , &raw_range);
697
- if (is_incremental) {
698
- lsp_range range;
696
+ if (get_object (raw_change, " range" , &raw_range)) {
697
+ lsp_range& range = change.range .emplace ();
699
698
700
699
::simdjson::ondemand::object start;
701
700
if (!(get_object (raw_range, " start" , &start) &&
@@ -712,10 +711,18 @@ void linting_lsp_server_handler::apply_document_change(
712
711
// Ignore invalid change.
713
712
return ;
714
713
}
714
+ }
715
+
716
+ apply_document_change (doc, change);
717
+ }
715
718
716
- doc.replace_text (range, change_text);
719
+ void linting_lsp_server_handler::apply_document_change (
720
+ quick_lint_js::document<lsp_locator>& doc,
721
+ const lsp_document_change& change) {
722
+ if (change.range .has_value ()) {
723
+ doc.replace_text (*change.range , change.text );
717
724
} else {
718
- doc.set_text (change_text );
725
+ doc.set_text (change. text );
719
726
}
720
727
}
721
728
0 commit comments