aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJonas Maier <>2026-05-24 20:40:27 +0200
committerJonas Maier <>2026-05-24 20:40:27 +0200
commit7679654c5710d08f626f164731b9b929b93957d8 (patch)
tree5dff925ecf44517ce4b9622ab3e547dda7900758 /src
parent76ce59936d6d1c03ea291e6631db26339d310c19 (diff)
downloadpish-7679654c5710d08f626f164731b9b929b93957d8.tar.gz
allow highlighting to be disabled, once again
Diffstat (limited to 'src')
-rw-r--r--src/lib.rs5
-rw-r--r--src/line/mod.rs19
2 files changed, 11 insertions, 13 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 314f12c..5b44621 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -404,6 +404,7 @@ pub fn event_loop() {
'repl: loop {
let mut se = session.lock().unwrap();
+ let _ = se.cohere();
let Some(key) = se.terminal_input.as_mut().unwrap().read() else {
break;
@@ -418,7 +419,6 @@ pub fn event_loop() {
drop(se);
// not sure if/how to report this error - would be strange to print something to console every time a keybind command returns nonzero exit code.
let _ = run::run_quiet(session.clone(), cmd);
- session.lock().unwrap().cohere().unwrap();
continue 'repl;
}
@@ -431,15 +431,12 @@ pub fn event_loop() {
drop(se);
// not sure if/how to report this error - would be strange to print something to console every time a keybind command returns nonzero exit code.
let _ = run::run_quiet(session.clone(), cmd);
- session.lock().unwrap().cohere().unwrap();
continue 'repl;
}
}
}
ansi::KbInput::InvalidEscape(_) => continue,
}
-
- se.cohere().unwrap();
}
session.lock().unwrap().raw_disable();
diff --git a/src/line/mod.rs b/src/line/mod.rs
index 510c480..6e24f14 100644
--- a/src/line/mod.rs
+++ b/src/line/mod.rs
@@ -41,19 +41,20 @@ impl Line {
}
self.dirty = false;
- // TODO this is currently needed to reprint the prompt upon modification so we can't skip it.
- // if !h.enabled {
- // return Ok(());
- // }
+ let buf = self.into_bytes();
- use crate::parse::{self, Parse};
+ let highlights = if h.enabled {
+ use crate::parse::{self, Parse};
+ let mut parser = parse::Cursor::new(&buf, parse::ParseMode::Completion);
+ let _ = parse::Ast::parse(&mut parser);
+ parser.highlights
+ } else {
+ Vec::new()
+ };
- let buf = self.into_bytes();
- let mut parser = parse::Cursor::new(&buf, parse::ParseMode::Completion);
- let _ = parse::Ast::parse(&mut parser);
let mut stdout = io::stdout().lock();
self.line_start.f_go_to(&mut stdout)?;
- h.pretty_print(&buf, self.left_len(), parser.highlights, &mut stdout)?;
+ h.pretty_print(&buf, self.left_len(), highlights, &mut stdout)?;
stdout.flush()?;
Ok(())