broot/command/sel.rs
1/// compute a new selection index for the given list len,
2/// taking into account whether we should cycle or not
3pub fn move_sel(
4 selection: usize,
5 len: usize,
6 d: i32, // displacement
7 cycle: bool,
8) -> usize {
9 if len == 0 {
10 return 0;
11 }
12 let ns = (selection as i32) + d;
13 if ns < 0 {
14 if cycle { len - 1 } else { 0 }
15 } else if ns >= len as i32 {
16 if cycle { 0 } else { len - 1 }
17 } else {
18 ns as usize
19 }
20}