Shells in OCaml
3
fork

Configure Feed

Select the types of activity you want to include in your feed.

Handle ctrl+backspace

+25 -1
+25 -1
vendor/bruit/src/bruit.ml
··· 408 408 let s = State.override ~pos:!pos state in 409 409 refresh_line s 410 410 411 + let delete_word (state : State.t) = 412 + let pos = ref state.pos in 413 + while !pos > 0 && Bytes.get state.buf !pos = ' ' do 414 + decr pos 415 + done; 416 + while !pos > 0 && Bytes.get state.buf !pos <> ' ' do 417 + decr pos 418 + done; 419 + let clen = state.pos - !pos in 420 + let state = 421 + if state.pos >= clen then begin 422 + let dst = state.pos - clen in 423 + let src = state.pos in 424 + let len = state.len - state.pos in 425 + Bytes.blit state.buf src state.buf dst len; 426 + State.override ~pos:(state.pos - clen) ~len:(state.len - clen) state 427 + end 428 + else state 429 + in 430 + refresh_line state 431 + 411 432 let reverse_incr_search ~history (state : State.t) = 412 433 let has_match = ref true in 413 434 let search_buf = Buffer.create 16 in ··· 603 624 | _ -> Editing state 604 625 end 605 626 | _ -> Editing state) 606 - | _ -> 627 + | Ctrl_a | Ctrl_g | Ctrl_e | Ctrl_p -> Editing state 628 + | Unknown c when Uchar.(equal (of_int 8) c) (* ctrl+backspace *) -> 629 + Editing (delete_word state) 630 + | Unknown _ -> 607 631 let state = edit_insert state uc in 608 632 Editing state)) 609 633