From d7b57f204cf1fc708430ceefc7428f9a156378bb Mon Sep 17 00:00:00 2001 From: iff Date: Tue, 7 Jan 2025 01:56:58 +0100 Subject: [PATCH] refactor: make select index optional --- module-runtime-rules/src/replaces.rs | 2 +- parser/src/replaces.rs | 2 +- rules.md | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/module-runtime-rules/src/replaces.rs b/module-runtime-rules/src/replaces.rs index ecce68c..e280290 100644 --- a/module-runtime-rules/src/replaces.rs +++ b/module-runtime-rules/src/replaces.rs @@ -210,7 +210,7 @@ pub fn select( unreachable!("Select suggestion does not support range"); } } else { - unreachable!("Select suggestion must have a command index"); + 0 }; let selection_list = if suggest.contains('(') { diff --git a/parser/src/replaces.rs b/parser/src/replaces.rs index daef69e..ce68762 100644 --- a/parser/src/replaces.rs +++ b/parser/src/replaces.rs @@ -258,7 +258,7 @@ pub fn select(suggest: &mut String, select_list: &mut Vec) { unreachable!("Select suggestion does not support range"); } } else { - unreachable!("Select suggestion must have a command index"); + quote! {0} }; let selection_list = if suggest.contains('(') { let split = suggest[args.to_owned()] diff --git a/rules.md b/rules.md index cf4e18d..1edbe9b 100644 --- a/rules.md +++ b/rules.md @@ -58,6 +58,7 @@ The placeholder is evaluated as following: - `{{command[2:5]}}`: The second to fifth arguments. If any of the side is not specified, then it defaults to the start (if it is left) or the end (if it is right). - `{{typo[2](fix1, fix2)}}`: This will try to change the second argument to candidates in the parenthesis. The argument in parentheses must have at least 2 values. Single arguments are reserved for specific matches, for instance, `path` to search all commands found in the `$PATH` environment, or the `{{shell}}` placeholder, among others. - `{{select[3][selection1, selection2]}}`: A derivative of `typo` placeholder. Will create a suggestion for each selection in the parenthesis. The argument in parentheses also must have at least 2 values. Single arguments are reserved for specific selections, for instance, `path` to search all commands found in the `$PATH` environment with the minimum linguistic distance, or the `{{shell}}` placeholder. + - Index is optional as it only has effect when using with `path`, and defaults to 0. - `{{opt::}}`: Optional patterns captured in the command with RegEx ([see regex crate for syntax](https://docs.rs/regex-lite/latest/regex_lite/#syntax)). Note that all patterns matching this placeholder will be removed from indexing. - `{{cmd::}}`: Get the matching captures from the last command. Unlike `{{opt}}`, this won't remove the string after matching - `{{err::