mirror of
https://github.com/RGBCube/serenity
synced 2025-05-30 18:08:12 +00:00
Shell: Ensure that the cursor starts on a new line
And print an indicator when it doesn't, a la zsh.
This commit is contained in:
parent
c96b9fdb0a
commit
14a54a72fa
2 changed files with 25 additions and 0 deletions
|
@ -1087,9 +1087,33 @@ Vector<Line::CompletionSuggestion> Shell::complete_option(const String& program_
|
||||||
return suggestions;
|
return suggestions;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Shell::bring_cursor_to_beginning_of_a_line() const
|
||||||
|
{
|
||||||
|
struct winsize ws;
|
||||||
|
if (editor) {
|
||||||
|
ws = editor->terminal_size();
|
||||||
|
} else {
|
||||||
|
if (ioctl(STDERR_FILENO, TIOCGWINSZ, &ws) < 0) {
|
||||||
|
// Very annoying assumptions.
|
||||||
|
ws.ws_col = 80;
|
||||||
|
ws.ws_row = 25;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Line::VT::apply_style(Line::Style { Line::Style::Background(Line::Style::XtermColor::Cyan), Line::Style::Foreground(Line::Style::XtermColor::Black) });
|
||||||
|
putc('%', stderr);
|
||||||
|
Line::VT::apply_style(Line::Style::reset_style());
|
||||||
|
|
||||||
|
for (auto i = 2; i < ws.ws_col; ++i)
|
||||||
|
putc(' ', stderr);
|
||||||
|
|
||||||
|
putc('\r', stderr);
|
||||||
|
}
|
||||||
|
|
||||||
bool Shell::read_single_line()
|
bool Shell::read_single_line()
|
||||||
{
|
{
|
||||||
restore_ios();
|
restore_ios();
|
||||||
|
bring_cursor_to_beginning_of_a_line();
|
||||||
auto line_result = editor->get_line(prompt());
|
auto line_result = editor->get_line(prompt());
|
||||||
|
|
||||||
if (line_result.is_error()) {
|
if (line_result.is_error()) {
|
||||||
|
|
|
@ -187,6 +187,7 @@ private:
|
||||||
|
|
||||||
// ^Core::Object
|
// ^Core::Object
|
||||||
virtual void save_to(JsonObject&) override;
|
virtual void save_to(JsonObject&) override;
|
||||||
|
void bring_cursor_to_beginning_of_a_line() const;
|
||||||
|
|
||||||
void cache_path();
|
void cache_path();
|
||||||
void add_entry_to_cache(const String&);
|
void add_entry_to_cache(const String&);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue