@@ -675,36 +675,47 @@ void linting_lsp_server_handler::apply_document_changes(
675
675
::simdjson::ondemand::array& changes) {
676
676
for (::simdjson::simdjson_result<::simdjson::ondemand::value> change :
677
677
changes) {
678
- string8_view change_text ;
679
- if (! get_string8 ( change, " text " , &change_text) ) {
678
+ ::simdjson::ondemand::object change_object ;
679
+ if (change. get (change_object) != ::simdjson::SUCCESS ) {
680
680
// Ignore invalid change.
681
681
continue ;
682
682
}
683
- ::simdjson::ondemand::object raw_range;
684
- bool is_incremental = get_object (change, " range" , &raw_range);
685
- if (is_incremental) {
686
- lsp_range range;
687
-
688
- ::simdjson::ondemand::object start;
689
- if (!(get_object (raw_range, " start" , &start) &&
690
- get_int (start, " line" , &range.start .line ) &&
691
- get_int (start, " character" , &range.start .character ))) {
692
- // Ignore invalid change.
693
- continue ;
694
- }
683
+ apply_document_change (doc, change_object);
684
+ }
685
+ }
695
686
696
- ::simdjson::ondemand::object end;
697
- if (!(get_object (raw_range, " end" , &end) &&
698
- get_int (end, " line" , &range.end .line ) &&
699
- get_int (end, " character" , &range.end .character ))) {
700
- // Ignore invalid change.
701
- continue ;
702
- }
687
+ void linting_lsp_server_handler::apply_document_change (
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)) {
692
+ // Ignore invalid change.
693
+ return ;
694
+ }
695
+ ::simdjson::ondemand::object raw_range;
696
+ bool is_incremental = get_object (change, " range" , &raw_range);
697
+ if (is_incremental) {
698
+ lsp_range range;
703
699
704
- doc.replace_text (range, change_text);
705
- } else {
706
- doc.set_text (change_text);
700
+ ::simdjson::ondemand::object start;
701
+ if (!(get_object (raw_range, " start" , &start) &&
702
+ get_int (start, " line" , &range.start .line ) &&
703
+ get_int (start, " character" , &range.start .character ))) {
704
+ // Ignore invalid change.
705
+ return ;
707
706
}
707
+
708
+ ::simdjson::ondemand::object end;
709
+ if (!(get_object (raw_range, " end" , &end) &&
710
+ get_int (end, " line" , &range.end .line ) &&
711
+ get_int (end, " character" , &range.end .character ))) {
712
+ // Ignore invalid change.
713
+ return ;
714
+ }
715
+
716
+ doc.replace_text (range, change_text);
717
+ } else {
718
+ doc.set_text (change_text);
708
719
}
709
720
}
710
721
0 commit comments