Handle tab key
(&mut self)
| 376 | |
| 377 | // Handle tab key |
| 378 | fn handle_tab(&mut self) |
| 379 | { |
| 380 | self.histupdate(); |
| 381 | let (bs, pos) = match self.compl.pos |
| 382 | { |
| 383 | Some(pos) => |
| 384 | { |
| 385 | let n = self.compl.items.len(); |
| 386 | if n == 1 |
| 387 | { |
| 388 | self.compupdate(); |
| 389 | return; |
| 390 | } |
| 391 | |
| 392 | let bs = self.compl.items[pos].chars().count(); |
| 393 | if pos + 1 < n |
| 394 | { |
| 395 | (bs, pos + 1) |
| 396 | } |
| 397 | else |
| 398 | { |
| 399 | (bs, 0) |
| 400 | } |
| 401 | }, |
| 402 | |
| 403 | None => |
| 404 | { |
| 405 | let ln: String = self.ln.iter().collect(); |
| 406 | self.compl.items = (self.compl.completer)(&ln); |
| 407 | if !self.compl.items.is_empty() |
| 408 | { |
| 409 | (0, 0) |
| 410 | } |
| 411 | else |
| 412 | { |
| 413 | return |
| 414 | } |
| 415 | }, |
| 416 | }; |
| 417 | |
| 418 | let erase = "\x08".repeat(bs); |
| 419 | let complete = &self.compl.items[pos]; |
| 420 | print!("{}{}", erase, complete); |
| 421 | self.compl.pos = Some(pos); |
| 422 | } |
| 423 | |
| 424 | |
| 425 | // Handle up key |
no test coverage detected