Skip to content

Commit b574286

Browse files
fix bashism parsing (#958)
1 parent 40c562c commit b574286

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

src/menu/menu_functions.rs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ pub fn parse_selection_char(buffer: &str, marker: char) -> ParseResult<'_> {
7575
let mut input = buffer.chars().peekable();
7676

7777
let mut index = 0;
78-
let mut action = ParseAction::ForwardSearch;
7978
while let Some(char) = input.next() {
8079
if char == marker {
8180
match input.peek() {
@@ -102,12 +101,15 @@ pub fn parse_selection_char(buffer: &str, marker: char) -> ParseResult<'_> {
102101
Some(&x) if x.is_ascii_digit() || x == '-' => {
103102
let mut count: usize = 0;
104103
let mut size: usize = marker.len_utf8();
104+
let action = if x == '-' {
105+
size += 1;
106+
let _ = input.next();
107+
ParseAction::BackwardSearch
108+
} else {
109+
ParseAction::ForwardSearch
110+
};
105111
while let Some(&c) = input.peek() {
106-
if c == '-' {
107-
let _ = input.next();
108-
size += 1;
109-
action = ParseAction::BackwardSearch;
110-
} else if c.is_ascii_digit() {
112+
if c.is_ascii_digit() {
111113
let c = c.to_digit(10).expect("already checked if is a digit");
112114
let _ = input.next();
113115
count *= 10;
@@ -146,7 +148,7 @@ pub fn parse_selection_char(buffer: &str, marker: char) -> ParseResult<'_> {
146148
remainder: &buffer[0..index],
147149
index: Some(0),
148150
marker: Some(&buffer[index..buffer.len()]),
149-
action,
151+
action: ParseAction::ForwardSearch,
150152
prefix: Some(&buffer[index..buffer.len()]),
151153
}
152154
}
@@ -160,7 +162,7 @@ pub fn parse_selection_char(buffer: &str, marker: char) -> ParseResult<'_> {
160162
remainder: buffer,
161163
index: None,
162164
marker: None,
163-
action,
165+
action: ParseAction::ForwardSearch,
164166
prefix: None,
165167
}
166168
}

0 commit comments

Comments
 (0)