From 3fcc6482cbddf6403fb8d9170fe75b77756a0861 Mon Sep 17 00:00:00 2001 From: Johannes Altmanninger Date: Tue, 24 Dec 2024 15:29:51 +0100 Subject: [PATCH] Fix parse_util_process_extent including too much on the left --- src/parse_util.rs | 7 ++++++- src/tests/parse_util.rs | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/parse_util.rs b/src/parse_util.rs index c9a4f5239..4fec58f31 100644 --- a/src/parse_util.rs +++ b/src/parse_util.rs @@ -401,6 +401,7 @@ fn job_or_process_extent( let pos = cursor_pos - cmdsub_range.start; let mut result = cmdsub_range.clone(); + let mut found_start = false; for token in Tokenizer::new( &buff[cmdsub_range.clone()], TOK_ACCEPT_UNFINISHED | TOK_SHOW_COMMENTS, @@ -422,13 +423,17 @@ fn job_or_process_extent( result.end = cmdsub_range.start + tok_begin; } else { // Statement at cursor might start after this token. - result.start = cmdsub_range.start + tok_begin + token.length(); + found_start = false; out_tokens.as_mut().map(|tokens| tokens.clear()); } continue; // Do not add this to tokens } _ => (), } + if !found_start { + result.start = cmdsub_range.start + tok_begin; + found_start = true; + } out_tokens.as_mut().map(|tokens| tokens.push(token)); } result diff --git a/src/tests/parse_util.rs b/src/tests/parse_util.rs index a1d67ad1a..879459707 100644 --- a/src/tests/parse_util.rs +++ b/src/tests/parse_util.rs @@ -102,6 +102,7 @@ fn test_parse_util_process_extent() { }; } validate!("for file in (path base\necho", 22, 13..22); + validate!("begin\n\n\nec", 10, 8..10); } #[test]