mirror of
https://github.com/helix-editor/helix.git
synced 2024-11-22 01:16:18 +04:00
fixing nested expansions
This commit is contained in:
parent
c3eff3e370
commit
0e6144567c
@ -46,7 +46,7 @@ fn from(input: &'a str) -> Self {
|
||||
let mut parts = Vec::new();
|
||||
let mut escaped = String::with_capacity(input.len());
|
||||
let mut inside_variable_expansion = false;
|
||||
|
||||
let mut nested_variable_expansion_count = 0;
|
||||
let mut part_start = 0;
|
||||
let mut unescaped_start = 0;
|
||||
let mut end = 0;
|
||||
@ -57,18 +57,25 @@ fn from(input: &'a str) -> Self {
|
||||
//%sh{this "should" be escaped}
|
||||
if let Some(t) = input.get(i + 1..i + 3) {
|
||||
if t == "sh" {
|
||||
nested_variable_expansion_count += 1;
|
||||
inside_variable_expansion = true;
|
||||
}
|
||||
}
|
||||
//%{this "should" be escaped}
|
||||
if let Some(t) = input.get(i + 1..i + 2) {
|
||||
if t == "{" {
|
||||
nested_variable_expansion_count += 1;
|
||||
inside_variable_expansion = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if c == '}' {
|
||||
inside_variable_expansion = false;
|
||||
nested_variable_expansion_count -= 1;
|
||||
if nested_variable_expansion_count == 0 {
|
||||
inside_variable_expansion = false;
|
||||
}
|
||||
} else if c == '{' {
|
||||
nested_variable_expansion_count += 1;
|
||||
}
|
||||
|
||||
state = if !inside_variable_expansion {
|
||||
|
@ -17,6 +17,7 @@ async fn test_variable_expansion() -> anyhow::Result<()> {
|
||||
false,
|
||||
)
|
||||
.await?;
|
||||
let mut app = AppBuilder::new().build()?;
|
||||
|
||||
let mut app = AppBuilder::new().build()?;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user