@@ -686,16 +686,15 @@ void linting_lsp_server_handler::apply_document_changes(
686686
687687void linting_lsp_server_handler::apply_document_change (
688688 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 )) {
692692 // Ignore invalid change.
693693 return ;
694694 }
695695 ::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 ();
699698
700699 ::simdjson::ondemand::object start;
701700 if (!(get_object (raw_range, " start" , &start) &&
@@ -712,10 +711,18 @@ void linting_lsp_server_handler::apply_document_change(
712711 // Ignore invalid change.
713712 return ;
714713 }
714+ }
715+
716+ apply_document_change (doc, change);
717+ }
715718
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 );
717724 } else {
718- doc.set_text (change_text );
725+ doc.set_text (change. text );
719726 }
720727}
721728
0 commit comments