use reedline::{DefaultPrompt, Osc133Markers, Reedline, Signal};
use std::io;
fn main() -> io::Result<()> {
println!("Semantic Prompt Interactive Demo");
println!("=================================");
println!("This demo uses OSC 133 markers for semantic prompts.");
println!("If you're using Ghostty, enable 'Overlay Semantic Prompts' in the debug menu.");
println!("You should see colored overlays indicating prompt regions.");
println!();
println!("Type commands and press Enter. Type 'exit' or press Ctrl+D to quit.");
println!();
let mut line_editor = Reedline::create().with_semantic_markers(Some(Osc133Markers::boxed()));
let prompt = DefaultPrompt::default();
loop {
let sig = line_editor.read_line(&prompt)?;
match sig {
Signal::Success(buffer) => {
let buffer = buffer.trim();
if buffer == "exit" {
println!("Goodbye!");
break Ok(());
}
println!("You entered: {buffer}");
}
Signal::CtrlD | Signal::CtrlC => {
println!("\nAborted!");
break Ok(());
}
_ => {}
}
}
}