anveesa 0.3.3 → 0.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Cargo.lock +1 -1
- package/Cargo.toml +1 -1
- package/package.json +1 -1
- package/src/lib.rs +29 -0
package/Cargo.lock
CHANGED
package/Cargo.toml
CHANGED
package/package.json
CHANGED
package/src/lib.rs
CHANGED
|
@@ -1389,6 +1389,24 @@ impl PromptBuffer {
|
|
|
1389
1389
|
self.segments.pop();
|
|
1390
1390
|
}
|
|
1391
1391
|
}
|
|
1392
|
+
|
|
1393
|
+
/// Ctrl+U / Cmd+Delete — erase the entire line.
|
|
1394
|
+
fn clear_all(&mut self) {
|
|
1395
|
+
self.full.clear();
|
|
1396
|
+
self.display.clear();
|
|
1397
|
+
self.segments.clear();
|
|
1398
|
+
}
|
|
1399
|
+
|
|
1400
|
+
/// Ctrl+W / Option+Delete — erase the last word (whitespace-delimited).
|
|
1401
|
+
fn pop_word(&mut self) {
|
|
1402
|
+
// Trim trailing whitespace first, then remove up to the previous whitespace boundary.
|
|
1403
|
+
while self.full.ends_with(' ') {
|
|
1404
|
+
self.pop_last();
|
|
1405
|
+
}
|
|
1406
|
+
while !self.full.is_empty() && !self.full.ends_with(' ') {
|
|
1407
|
+
self.pop_last();
|
|
1408
|
+
}
|
|
1409
|
+
}
|
|
1392
1410
|
}
|
|
1393
1411
|
|
|
1394
1412
|
#[cfg(unix)]
|
|
@@ -1474,9 +1492,20 @@ fn read_prompt_line(label: &str, width: usize, paste_count: &mut usize) -> Resul
|
|
|
1474
1492
|
}
|
|
1475
1493
|
4 if buffer.is_empty() => return Ok(PromptRead::Eof),
|
|
1476
1494
|
8 | 127 => {
|
|
1495
|
+
// Backspace
|
|
1477
1496
|
buffer.pop_last();
|
|
1478
1497
|
display_rows = redraw_prompt_line(label, &buffer.display, display_rows, width)?;
|
|
1479
1498
|
}
|
|
1499
|
+
21 => {
|
|
1500
|
+
// Ctrl+U / Cmd+Delete — erase entire line
|
|
1501
|
+
buffer.clear_all();
|
|
1502
|
+
display_rows = redraw_prompt_line(label, &buffer.display, display_rows, width)?;
|
|
1503
|
+
}
|
|
1504
|
+
23 => {
|
|
1505
|
+
// Ctrl+W / Option+Delete — erase last word
|
|
1506
|
+
buffer.pop_word();
|
|
1507
|
+
display_rows = redraw_prompt_line(label, &buffer.display, display_rows, width)?;
|
|
1508
|
+
}
|
|
1480
1509
|
0x1b => {
|
|
1481
1510
|
let sequence = read_escape_sequence(&mut input)?;
|
|
1482
1511
|
if sequence == b"[200~" {
|