浏览代码

Kernel: Make ^W and ^U actually erase characters

This is quite hackish but it makes using the js REPL a lot nicer. :^)
Andreas Kling 5 年之前
父节点
当前提交
f3c245fb96
共有 2 个文件被更改,包括 10 次插入2 次删除
  1. 9 2
      Kernel/TTY/TTY.cpp
  2. 1 0
      Kernel/TTY/TTY.h

+ 9 - 2
Kernel/TTY/TTY.cpp

@@ -221,7 +221,7 @@ void TTY::erase_word()
         if (ch != ' ')
             first_char = true;
         m_input_buffer.dequeue_end();
-        echo(m_termios.c_cc[VERASE]);
+        erase_character();
     }
 }
 
@@ -229,10 +229,17 @@ void TTY::kill_line()
 {
     while (can_do_backspace()) {
         m_input_buffer.dequeue_end();
-        echo(m_termios.c_cc[VERASE]);
+        erase_character();
     }
 }
 
+void TTY::erase_character()
+{
+    echo(m_termios.c_cc[VERASE]);
+    echo(' ');
+    echo(m_termios.c_cc[VERASE]);
+}
+
 void TTY::generate_signal(int signal)
 {
     if (!pgid())

+ 1 - 0
Kernel/TTY/TTY.h

@@ -74,6 +74,7 @@ protected:
     bool can_do_backspace() const;
     void do_backspace();
     void erase_word();
+    void erase_character();
     void kill_line();
     void flush_input();