MCPcopy Create free account
hub / github.com/LibertyOS-Development/kernel / handle_tab

Method handle_tab

src/sys/prompt.rs:378–422  ·  view source on GitHub ↗

Handle tab key

(&mut self)

Source from the content-addressed store, hash-verified

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

Callers 1

executeMethod · 0.80

Calls 3

histupdateMethod · 0.80
compupdateMethod · 0.80
lenMethod · 0.45

Tested by

no test coverage detected