diff options
author | Oxbian <oxbian@mailbox.org> | 2025-03-09 19:42:55 -0400 |
---|---|---|
committer | Oxbian <oxbian@mailbox.org> | 2025-03-09 19:42:55 -0400 |
commit | dd9808b10c98c28a493eac78742fc403efc70e32 (patch) | |
tree | 9eb1eb4b0fd8136c08103911b7e4255629c85cd9 | |
parent | b4dd7d51ee2e30c4445e628056b5cbf93d9d8cbb (diff) | |
download | NAI-dd9808b10c98c28a493eac78742fc403efc70e32.tar.gz NAI-dd9808b10c98c28a493eac78742fc403efc70e32.zip |
feat: supporting \n in LLM response
-rw-r--r-- | src/ui/init.rs | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/ui/init.rs b/src/ui/init.rs index 5bea959..ea0882c 100644 --- a/src/ui/init.rs +++ b/src/ui/init.rs @@ -162,17 +162,27 @@ impl Ui { // Render message list let available_width_message = messages_area.width.saturating_sub(2); - let mut messages = Vec::new(); + let mut messages: Text = Text::default(); let mut max_char_per_line = self.message_box_data.max_char_per_line; let mut msg_nb_line: usize = 0; for m in &self.app.messages { let msg: String = m.to_string(); let size = msg.chars().take(available_width_message as usize).count(); - let msg_lines = (msg.chars().count() as f64 / size as f64).ceil(); - msg_nb_line = msg_nb_line.saturating_add(msg_lines as usize); - messages.push(Line::from(msg)); + let text = Text::from(msg); + for line in text { + messages.push_line(line.clone()); + let line_count = + (line.to_string().chars().count() as f64 / size as f64).ceil() as usize; + + if line_count > 0 { + msg_nb_line += line_count; + } else { + msg_nb_line += 1; + } + } + if size > max_char_per_line { max_char_per_line = size; } |