MCPcopy Create free account
hub / github.com/ChrisFeldmeier/OpenCodeRust / to_lines

Method to_lines

crates/opencode-tui/src/components/diff.rs:157–191  ·  view source on GitHub ↗

Convert diff lines to ratatui Lines for embedding in other widgets.

(&self, theme: &Theme)

Source from the content-addressed store, hash-verified

155
156 /// Convert diff lines to ratatui Lines for embedding in other widgets.
157 pub fn to_lines(&self, theme: &Theme) -> Vec<Line<'static>> {
158 let mut lines = Vec::new();
159
160 for diff_line in &self.lines {
161 let prefix = match diff_line.line_type {
162 DiffLineType::Added => Span::styled("+ ", Style::default().fg(theme.diff_added)),
163 DiffLineType::Removed => {
164 Span::styled("- ", Style::default().fg(theme.diff_removed))
165 }
166 DiffLineType::HunkHeader => Span::styled("@@ ", Style::default().fg(theme.primary)),
167 DiffLineType::Context => Span::styled(" ", Style::default().fg(theme.text_muted)),
168 };
169
170 let line_num = if let Some(n) = diff_line.new_line_num.or(diff_line.old_line_num) {
171 format!("{:4} ", n)
172 } else {
173 " ".to_string()
174 };
175
176 let line_style = match diff_line.line_type {
177 DiffLineType::Added => Style::default().fg(theme.diff_added),
178 DiffLineType::Removed => Style::default().fg(theme.diff_removed),
179 DiffLineType::HunkHeader => Style::default().fg(theme.primary),
180 DiffLineType::Context => Style::default().fg(theme.text),
181 };
182
183 lines.push(Line::from(vec![
184 Span::raw(line_num),
185 prefix,
186 Span::styled(diff_line.content.clone(), line_style),
187 ]));
188 }
189
190 lines
191 }
192
193 pub fn scroll_up(&mut self) {
194 if self.scroll_offset > 0 {

Callers 7

render_text_partFunction · 0.45
render_reasoning_partFunction · 0.45
render_revert_cardFunction · 0.45
render_textMethod · 0.45
render_tool_callMethod · 0.45
renderMethod · 0.45
render_user_messageFunction · 0.45

Calls 1

newFunction · 0.85

Tested by

no test coverage detected