rgs: added multiline window limit and in-file result indexing (work in progress)

This commit is contained in:
2025-12-23 04:01:55 -05:00
parent cd1f981bea
commit ad6ec1b4c5
9 changed files with 599 additions and 8 deletions

View File

@@ -61,6 +61,7 @@ pub(crate) struct HiArgs {
ignore_file_case_insensitive: bool,
ignore_file: Vec<PathBuf>,
include_zero: bool,
in_file_index: bool,
invert_match: bool,
is_terminal_stdout: bool,
line_number: bool,
@@ -73,6 +74,7 @@ pub(crate) struct HiArgs {
mode: Mode,
multiline: bool,
multiline_dotall: bool,
multiline_window: Option<usize>,
no_ignore_dot: bool,
no_ignore_exclude: bool,
no_ignore_files: bool,
@@ -140,6 +142,9 @@ impl HiArgs {
}
let mut state = State::new()?;
if low.multiline_window.is_some() && !low.multiline {
anyhow::bail!("--multiline-window requires --multiline");
}
let patterns = Patterns::from_low_args(&mut state, &mut low)?;
let paths = Paths::from_low_args(&mut state, &patterns, &mut low)?;
@@ -278,6 +283,7 @@ impl HiArgs {
ignore_file: low.ignore_file,
ignore_file_case_insensitive: low.ignore_file_case_insensitive,
include_zero: low.include_zero,
in_file_index: low.in_file_index,
invert_match: low.invert_match,
is_terminal_stdout: state.is_terminal_stdout,
line_number,
@@ -289,6 +295,7 @@ impl HiArgs {
mmap_choice,
multiline: low.multiline,
multiline_dotall: low.multiline_dotall,
multiline_window: low.multiline_window,
no_ignore_dot: low.no_ignore_dot,
no_ignore_exclude: low.no_ignore_exclude,
no_ignore_files: low.no_ignore_files,
@@ -616,6 +623,7 @@ impl HiArgs {
.column(self.column)
.heading(self.heading)
.hyperlink(self.hyperlink_config.clone())
.in_file_index(self.in_file_index)
.max_columns_preview(self.max_columns_preview)
.max_columns(self.max_columns)
.only_matching(self.only_matching)
@@ -723,6 +731,7 @@ impl HiArgs {
.invert_match(self.invert_match)
.line_number(self.line_number)
.multi_line(self.multiline)
.multiline_window(self.multiline_window)
.memory_map(self.mmap_choice.clone())
.stop_on_nonmatch(self.stop_on_nonmatch);
match self.context {