diff options
| author | Jonas Maier <jonas@x77.dev> | 2026-03-18 13:34:21 +0100 |
|---|---|---|
| committer | Jonas Maier <jonas@x77.dev> | 2026-03-18 13:34:21 +0100 |
| commit | e4914c1d1eb703b7c3c5a27a777f42e211663298 (patch) | |
| tree | d129c350ee7088ae66688d31866fd02135cfed3e /src/main.rs | |
| parent | d8cceb822b8e2f2de189a1d4461c89311b82e752 (diff) | |
| download | pish-e4914c1d1eb703b7c3c5a27a777f42e211663298.tar.gz | |
multiline input
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/main.rs b/src/main.rs index bcad011..92ce812 100644 --- a/src/main.rs +++ b/src/main.rs @@ -341,15 +341,29 @@ fn event_loop() { // Enter b'\r' => { - let line = se.line.dump(); + let line = se.line.into_bytes(); + if !line.is_empty() { + let parsed = match parse::do_parse(&line) { + Ok(p) => p, + Err((crate::parse::ParseError::Eof, _)) => { + se.line.add(b'\n'); + print!("\r\n> "); + continue + }, + Err(e) => { + println!("{e:?}\n{}", se.prompt()); + continue; + } + }; print!("\r\n"); let entry = HistoryEntry::new(line.clone()); history::persist(&entry); se.history.push(entry); se.history_visit = 0; + se.line.dump(); drop(se); - run::run(session.clone(), line); + run::run(session.clone(), parsed); } } |
