3#include "di/container/ring/prelude.h"
4#include "di/container/tree/tree_map.h"
5#include "di/reflect/prelude.h"
22constexpr auto tag_invoke(di::Tag<di::reflect>, di::InPlaceType<PromptClickMode>) {
24 return di::make_enumerators<
"PromptClickMode">(
25 di::enumerator<
"None",
None>, di::enumerator<
"Line",
Line>,
38constexpr auto tag_invoke(di::Tag<di::reflect>, di::InPlaceType<PromptKind>) {
40 return di::make_enumerators<
"PromptKind">(di::enumerator<
"Initial",
Initial>,
42 di::enumerator<
"Secondary",
Secondary>, di::enumerator<
"Right",
Right>);
65 constexpr friend auto tag_invoke(di::Tag<di::reflect>, di::InPlaceType<Command>) {
66 return di::make_fields<
"Command">(
82 constexpr static auto max_depth = u32(20);
86 constexpr static auto max_commands = u32(10000);
92 u64 absolute_row, u32 col);
94 void end_input(u64 absolute_row, u32 col);
95 void end_command(di::String application_id,
bool failed, u64 absolute_row, u32 col);
97 auto last_command()
const -> di::Optional<Command const&>;
106 constexpr friend auto tag_invoke(di::Tag<di::reflect>, di::InPlaceType<Commands>) {
107 return di::make_fields<
"Commands">(di::field<
"commands", &Commands::m_commands>);
111 di::Ring<Command> m_commands;
112 u32 m_current_depth { 0 };
Represents all commands received for the screen.
Definition semantic_prompt.h:78
auto will_redraw_prompt_at_row(u64 absolute_row, u32 col) const -> di::Optional< u64 >
Definition semantic_prompt.cpp:147
void end_command(di::String application_id, bool failed, u64 absolute_row, u32 col)
Definition semantic_prompt.cpp:105
void apply_reflow_result(ReflowResult const &reflow_result)
Definition semantic_prompt.cpp:185
auto last_command() const -> di::Optional< Command const & >
Definition semantic_prompt.cpp:137
auto first_command_after(u64 absolute_row) const -> di::Optional< Command const & >
Definition semantic_prompt.cpp:175
auto first_command_before(u64 absolute_row) const -> di::Optional< Command const & >
Definition semantic_prompt.cpp:165
void begin_prompt(di::String application_id, PromptClickMode click_mode, PromptKind kind, bool redraw, u64 absolute_row, u32 col)
Definition semantic_prompt.cpp:35
void end_input(u64 absolute_row, u32 col)
Definition semantic_prompt.cpp:86
void end_prompt(u64 absolute_row, u32 col)
Definition semantic_prompt.cpp:68
constexpr friend auto tag_invoke(di::Tag< di::reflect >, di::InPlaceType< Commands >)
Definition semantic_prompt.h:106
void clamp_commands(u64 absolute_row_start, u64 absolute_row_end)
Definition semantic_prompt.cpp:14
auto commands() const -> di::Ring< Command > const &
Definition semantic_prompt.h:104
Represents the result of reflowing a RowGroup.
Definition reflow_result.h:22
Definition absolute_position.h:6
PromptKind
Kind of prompt.
Definition semantic_prompt.h:31
@ Secondary
Secondary prompt (user cannot edit previous lines)
Definition semantic_prompt.h:34
@ Initial
Initial prompt (default)
Definition semantic_prompt.h:32
@ Right
Right-aligned prompt (can reflow to the right on resize)
Definition semantic_prompt.h:35
@ Continuation
Continuation prompt (user can edit previous lines)
Definition semantic_prompt.h:33
@ None
Definition mode.h:11
PromptClickMode
Controls how mouse events on the shell prompt are translated to the application.
Definition semantic_prompt.h:14
@ MultipleLeftRight
Can simulate up-down movement via lots of left-right presses.
Definition semantic_prompt.h:17
@ Line
Can only navigative a single line via mouse movement, using left-right presses.
Definition semantic_prompt.h:16
@ MultipleUpDown
Can use up-down and left-right.
Definition semantic_prompt.h:18
@ None
Doesn't support prompt click mode.
Definition semantic_prompt.h:15
@ MultipleUpDownConservative
Only allowed to use up down at col 0.
Definition semantic_prompt.h:19
constexpr auto tag_invoke(di::Tag< di::reflect >, di::InPlaceType< AnsiMode >)
Definition mode.h:14
Represents a coordinate anywhere in a screen, including scroll back.
Definition absolute_position.h:11
Represents a completed annotated command via OSC 133.
Definition semantic_prompt.h:50
constexpr friend auto tag_invoke(di::Tag< di::reflect >, di::InPlaceType< Command >)
Definition semantic_prompt.h:65
bool ended
Has the command been completed?
Definition semantic_prompt.h:61
PromptClickMode prompt_click_mode
Prompt click mode.
Definition semantic_prompt.h:52
auto operator==(Command const &) const -> bool=default
u32 depth
Level of nesting within other commands.
Definition semantic_prompt.h:59
AbsolutePosition output_start
Absolute position marking the command output start.
Definition semantic_prompt.h:57
AbsolutePosition prompt_start
Absolute position marking the prompt start.
Definition semantic_prompt.h:55
bool failed
Did the command exit successfully?
Definition semantic_prompt.h:60
AbsolutePosition output_end
Absolute position marking the command output end (exclusive)
Definition semantic_prompt.h:58
AbsolutePosition prompt_end
Absolute position marking the prompt end (inclusive)
Definition semantic_prompt.h:56
di::String application_id
Application id of the command.
Definition semantic_prompt.h:51
bool prompt_redraw
Does the application redraw the prompt?
Definition semantic_prompt.h:54
PromptKind prompt_kind
Prompt kind - for now we only support a single prompt region.
Definition semantic_prompt.h:53