mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 23:50:19 +00:00
LibVT: Tweak input parsing related names
This commit is contained in:
parent
c4edc4c550
commit
06f3eb0ecd
Notes:
sideshowbarker
2024-07-19 06:36:30 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/06f3eb0ecd0
3 changed files with 23 additions and 24 deletions
|
@ -41,7 +41,6 @@ Terminal::~Terminal()
|
|||
{
|
||||
}
|
||||
|
||||
|
||||
void Terminal::clear()
|
||||
{
|
||||
for (size_t i = 0; i < rows(); ++i)
|
||||
|
@ -805,54 +804,54 @@ void Terminal::DSR(const ParamVector& params)
|
|||
}
|
||||
}
|
||||
|
||||
void Terminal::on_char(u8 ch)
|
||||
void Terminal::on_input(u8 ch)
|
||||
{
|
||||
#ifdef TERMINAL_DEBUG
|
||||
dbgprintf("Terminal::on_char: %b (%c), fg=%u, bg=%u\n", ch, ch, m_current_attribute.foreground_color, m_current_attribute.background_color);
|
||||
#endif
|
||||
switch (m_escape_state) {
|
||||
switch (m_parser_state) {
|
||||
case GotEscape:
|
||||
if (ch == '[') {
|
||||
m_escape_state = ExpectParameter;
|
||||
m_parser_state = ExpectParameter;
|
||||
} else if (ch == '(') {
|
||||
m_swallow_current = true;
|
||||
m_escape_state = ExpectParameter;
|
||||
m_parser_state = ExpectParameter;
|
||||
} else if (ch == ']') {
|
||||
m_escape_state = ExpectXtermParameter;
|
||||
m_parser_state = ExpectXtermParameter;
|
||||
m_xterm_parameters.clear_with_capacity();
|
||||
} else if (ch == '#') {
|
||||
m_escape_state = ExpectHashtagDigit;
|
||||
m_parser_state = ExpectHashtagDigit;
|
||||
} else if (ch == 'D') {
|
||||
IND();
|
||||
m_escape_state = Normal;
|
||||
m_parser_state = Normal;
|
||||
return;
|
||||
} else if (ch == 'M') {
|
||||
RI();
|
||||
m_escape_state = Normal;
|
||||
m_parser_state = Normal;
|
||||
return;
|
||||
} else if (ch == 'E') {
|
||||
NEL();
|
||||
m_escape_state = Normal;
|
||||
m_parser_state = Normal;
|
||||
return;
|
||||
} else {
|
||||
dbg() << "Unexpected character in GotEscape '" << (char)ch << "'";
|
||||
m_escape_state = Normal;
|
||||
m_parser_state = Normal;
|
||||
}
|
||||
return;
|
||||
case ExpectHashtagDigit:
|
||||
if (ch >= '0' && ch <= '9') {
|
||||
execute_hashtag(ch);
|
||||
m_escape_state = Normal;
|
||||
m_parser_state = Normal;
|
||||
}
|
||||
return;
|
||||
case ExpectXtermParameter:
|
||||
if (ch == 27) {
|
||||
m_escape_state = ExpectStringTerminator;
|
||||
m_parser_state = ExpectStringTerminator;
|
||||
return;
|
||||
}
|
||||
if (ch == 7) {
|
||||
execute_xterm_command();
|
||||
m_escape_state = Normal;
|
||||
m_parser_state = Normal;
|
||||
return;
|
||||
}
|
||||
m_xterm_parameters.append(ch);
|
||||
|
@ -862,31 +861,31 @@ void Terminal::on_char(u8 ch)
|
|||
execute_xterm_command();
|
||||
else
|
||||
dbg() << "Unexpected string terminator: " << String::format("%02x", ch);
|
||||
m_escape_state = Normal;
|
||||
m_parser_state = Normal;
|
||||
return;
|
||||
case ExpectParameter:
|
||||
if (is_valid_parameter_character(ch)) {
|
||||
m_parameters.append(ch);
|
||||
return;
|
||||
}
|
||||
m_escape_state = ExpectIntermediate;
|
||||
m_parser_state = ExpectIntermediate;
|
||||
[[fallthrough]];
|
||||
case ExpectIntermediate:
|
||||
if (is_valid_intermediate_character(ch)) {
|
||||
m_intermediates.append(ch);
|
||||
return;
|
||||
}
|
||||
m_escape_state = ExpectFinal;
|
||||
m_parser_state = ExpectFinal;
|
||||
[[fallthrough]];
|
||||
case ExpectFinal:
|
||||
if (is_valid_final_character(ch)) {
|
||||
m_escape_state = Normal;
|
||||
m_parser_state = Normal;
|
||||
if (!m_swallow_current)
|
||||
execute_escape_sequence(ch);
|
||||
m_swallow_current = false;
|
||||
return;
|
||||
}
|
||||
m_escape_state = Normal;
|
||||
m_parser_state = Normal;
|
||||
m_swallow_current = false;
|
||||
return;
|
||||
case Normal:
|
||||
|
@ -897,7 +896,7 @@ void Terminal::on_char(u8 ch)
|
|||
case '\0':
|
||||
return;
|
||||
case '\033':
|
||||
m_escape_state = GotEscape;
|
||||
m_parser_state = GotEscape;
|
||||
m_swallow_current = false;
|
||||
return;
|
||||
case 8: // Backspace
|
||||
|
@ -947,7 +946,7 @@ void Terminal::on_char(u8 ch)
|
|||
void Terminal::inject_string(const StringView& str)
|
||||
{
|
||||
for (size_t i = 0; i < str.length(); ++i)
|
||||
on_char(str[i]);
|
||||
on_input(str[i]);
|
||||
}
|
||||
|
||||
void Terminal::emit_string(const StringView& string)
|
||||
|
|
|
@ -54,7 +54,7 @@ public:
|
|||
bool m_need_full_flush { false };
|
||||
|
||||
void invalidate_cursor();
|
||||
void on_char(u8);
|
||||
void on_input(u8);
|
||||
|
||||
void clear();
|
||||
void set_size(u16 columns, u16 rows);
|
||||
|
@ -182,7 +182,7 @@ private:
|
|||
ExpectStringTerminator,
|
||||
};
|
||||
|
||||
EscapeState m_escape_state { Normal };
|
||||
EscapeState m_parser_state { Normal };
|
||||
Vector<u8> m_parameters;
|
||||
Vector<u8> m_intermediates;
|
||||
Vector<u8> m_xterm_parameters;
|
||||
|
|
|
@ -82,7 +82,7 @@ void TerminalWidget::set_pty_master_fd(int fd)
|
|||
return;
|
||||
}
|
||||
for (ssize_t i = 0; i < nread; ++i)
|
||||
m_terminal.on_char(buffer[i]);
|
||||
m_terminal.on_input(buffer[i]);
|
||||
flush_dirty_lines();
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue