Method: Readline.delete_text
- Defined in:
- readline.c
.delete_text([start[, length]]) ⇒ self .delete_text(start..end) ⇒ self .delete_text ⇒ self
Delete text between start and end in the current line.
See GNU Readline’s rl_delete_text function.
Raises NotImplementedError if the using readline library does not support.
715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 |
# File 'readline.c', line 715 static VALUE readline_s_delete_text(int argc, VALUE *argv, VALUE self) { rb_check_arity(argc, 0, 2); if (rl_line_buffer) { const char *p, *ptr = rl_line_buffer; long beg = 0, len = strlen(ptr); const char *end = ptr + len; rb_encoding *enc = rb_locale_encoding(); if (argc == 2) { beg = NUM2LONG(argv[0]); len = NUM2LONG(argv[1]); num_pos: p = str_subpos(ptr, end, beg, &len, enc); if (!p) rb_raise(rb_eArgError, "invalid index"); beg = p - ptr; } else if (argc == 1) { len = rb_enc_strlen(ptr, ptr + len, enc); if (!rb_range_beg_len(argv[0], &beg, &len, len, 1)) { beg = NUM2LONG(argv[0]); goto num_pos; } } rl_delete_text(rb_long2int(beg), rb_long2int(beg + len)); } return self; } |