From: sendpatch@qq.com
To: barebox@lists.infradead.org
Cc: DU HUANPENG <u74147@gmail.com>
Subject: [PATCH] readline: make ctrl-u to work like linux console
Date: Wed, 16 Oct 2019 05:29:35 +0800 [thread overview]
Message-ID: <1571174975-7922-1-git-send-email-sendpatch@qq.com> (raw)
From: DU HUANPENG <u74147@gmail.com>
currtly, the ctrl-u discards the whole line, in most linux
boxes, ctrl-u just remove character before cursor.
this patch make ctrl-u to do this.
Signed-off-by: DU HUANPENG <u74147@gmail.com>
---
lib/readline.c | 34 +++++++++++++++++++++++++++++++---
1 file changed, 31 insertions(+), 3 deletions(-)
diff --git a/lib/readline.c b/lib/readline.c
index d026af1..c0b194c 100644
--- a/lib/readline.c
+++ b/lib/readline.c
@@ -188,9 +188,10 @@ int readline(const char *prompt, char *buf, int len)
unsigned wlen;
int ichar;
int insert = 1;
+ int i;
#ifdef CONFIG_AUTO_COMPLETE
char tmp;
- int reprint, i;
+ int reprint;
char *completestr;
complete_reset();
@@ -291,8 +292,35 @@ int readline(const char *prompt, char *buf, int len)
break;
case BB_KEY_ERASE_LINE:
case CTL_CH('u'):
- BEGINNING_OF_LINE();
- ERASE_TO_EOL();
+ if(num >= eol_num) {
+ BEGINNING_OF_LINE();
+ ERASE_TO_EOL();
+ } else {
+ for(i=num; i<eol_num; i++) {
+ buf[i-num] = buf[i];
+ }
+ buf[i] = '\0';
+
+ for(i=0; i<num; i++) {
+ getcmd_putch(CTL_BACKSPACE);
+ }
+ for(i=0; i<eol_num; i++) {
+ getcmd_putch(' ');
+ }
+ for(i=0; i<eol_num; i++) {
+ getcmd_putch(CTL_BACKSPACE);
+ }
+
+ eol_num -= num;
+ num = 0;
+
+ for(i=0; i<eol_num; i++) {
+ getcmd_putch(buf[i]);
+ }
+ for(i=0; i<eol_num; i++) {
+ getcmd_putch(CTL_BACKSPACE);
+ }
+ }
break;
case DEL:
case BB_KEY_DEL7:
--
2.7.4
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
next reply other threads:[~2019-10-15 21:30 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-15 21:29 sendpatch [this message]
-- strict thread matches above, loose matches on Subject: below --
2019-10-16 5:34 [PATCH] readline: make ctrl-u to work like linux console sendpatch
2019-10-16 5:59 ` Oleksij Rempel
2019-10-15 21:54 sendpatch
2019-10-16 5:29 ` duhuanpeng
2019-10-15 21:02 sendpatch
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1571174975-7922-1-git-send-email-sendpatch@qq.com \
--to=sendpatch@qq.com \
--cc=barebox@lists.infradead.org \
--cc=u74147@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.