diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e71f5f..16b5490 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Fixed + +- Wrong starting distance when including all candidates +- Spacings for `opt` placeholder + ## [0.6.9] - 2025-01-06 ### Added diff --git a/module-runtime-rules/src/replaces.rs b/module-runtime-rules/src/replaces.rs index 927514d..82e4ed5 100644 --- a/module-runtime-rules/src/replaces.rs +++ b/module-runtime-rules/src/replaces.rs @@ -30,7 +30,14 @@ pub fn opts(suggest: &mut String, last_command: &mut String, opt_list: &mut Vec< let regex = opt.trim(); let current_tag = tag(tag_name, replace_tag); - let opts = format!(" {}", opt_regex(regex, last_command)); + let opts = { + let caps = opt_regex(regex, last_command); + if caps.is_empty() { + "".to_string() + } else { + format!(" {}", caps) + } + }; opt_list.push((current_tag.clone(), opts)); suggest.replace_range(placeholder, ¤t_tag); diff --git a/parser/src/replaces.rs b/parser/src/replaces.rs index 237ee23..5c26111 100644 --- a/parser/src/replaces.rs +++ b/parser/src/replaces.rs @@ -42,10 +42,17 @@ pub fn opts( let regex = opt.trim(); let current_tag = tag(tag_name, replace_tag); let token_tag: TokenStream2 = format!("{}{}", tag_name, replace_tag).parse().unwrap(); - let command = quote! { - let #token_tag = format!(" {}", opt_regex(#regex, &mut last_command)); + let opts = quote! { + let caps = opt_regex(#regex, &mut last_command); + let #token_tag = { + if caps.is_empty() { + "".to_string() + } else { + format!(" {}", caps) + } + }; }; - opt_list.push(command); + opt_list.push(opts); replace_list.push(rtag(tag_name, replace_tag, ¤t_tag)); suggest.replace_range(placeholder, ¤t_tag); diff --git a/rules/cp.toml b/rules/cp.toml index 1d8c02b..3c9ae9b 100644 --- a/rules/cp.toml +++ b/rules/cp.toml @@ -17,6 +17,6 @@ suggest = [ ''' #[err_contains(no such file or directory)] mkdir -p {{cmd::(?m)\s(\S+[\\\/])\S*\s*$}} && \ -{{command[0]}} {{opt::\s(-[\w]+)}} {{command[1:]}} ''' +{{command[0]}} {{opt::(?:\s)(-[\w]+)}} {{command[1:]}} ''' ] diff --git a/utils/src/evals.rs b/utils/src/evals.rs index f906232..c032d7f 100644 --- a/utils/src/evals.rs +++ b/utils/src/evals.rs @@ -3,8 +3,8 @@ // file, You can obtain one at http://mozilla.org/MPL/2.0/. use crate::files::*; -use regex_lite::Regex; use itertools::Itertools; +use regex_lite::Regex; fn regex_captures(regex: &str, string: &str) -> Vec { let regex = Regex::new(regex).unwrap(); @@ -158,7 +158,7 @@ pub fn find_similars( if !min_distance_index.is_empty() { min_distance_index.push(i) } - }, + } Less => { min_distance = distance; min_distance_index.clear();