Browse Source

lib/mp-readline: Add n_chars argument to mp_hal_erase_line_from_cursor.

If VT100 support is not available then a given implementation of
mp_hal_erase_line_from_cursor might need to know the number of characters
to erase.

This patch does not change generated code when VT100 is supported, since
compiler can optimise away the argument.
pull/1522/head
Damien George 9 years ago
parent
commit
f961456b29
  1. 6
      lib/mp-readline/readline.c
  2. 2
      windows/windows_mphal.c
  3. 2
      windows/windows_mphal.h

6
lib/mp-readline/readline.c

@ -82,7 +82,8 @@ STATIC void mp_hal_move_cursor_back(uint pos) {
}
}
STATIC void mp_hal_erase_line_from_cursor(void) {
STATIC void mp_hal_erase_line_from_cursor(uint n_chars_to_erase) {
(void)n_chars_to_erase;
mp_hal_stdout_tx_strn("\x1b[K", 3);
}
#endif
@ -338,8 +339,7 @@ delete_key:
if (redraw_from_cursor) {
if (rl.line->len < last_line_len) {
// erase old chars
// (number of chars to erase: last_line_len - rl.cursor_pos)
mp_hal_erase_line_from_cursor();
mp_hal_erase_line_from_cursor(last_line_len - rl.cursor_pos);
}
// draw new chars
mp_hal_stdout_tx_strn(rl.line->buf + rl.cursor_pos, rl.line->len - rl.cursor_pos);

2
windows/windows_mphal.c

@ -92,7 +92,7 @@ void mp_hal_move_cursor_back(uint pos) {
SetConsoleCursorPosition(con_out, info.dwCursorPosition);
}
void mp_hal_erase_line_from_cursor() {
void mp_hal_erase_line_from_cursor(uint n_chars_to_erase) {
assure_conout_handle();
CONSOLE_SCREEN_BUFFER_INFO info;
GetConsoleScreenBufferInfo(con_out, &info);

2
windows/windows_mphal.h

@ -29,4 +29,4 @@
#define MICROPY_HAL_HAS_VT100 (0)
void mp_hal_move_cursor_back(unsigned int pos);
void mp_hal_erase_line_from_cursor();
void mp_hal_erase_line_from_cursor(unsigned int n_chars_to_erase);

Loading…
Cancel
Save