aboutsummaryrefslogtreecommitdiff
path: root/helix-tui/src
diff options
context:
space:
mode:
authorGokul Soumya2022-07-08 18:46:09 +0000
committerBlaž Hrastnik2023-01-18 05:19:32 +0000
commit9aafcb2b9a743f0f6afa722184e96b8a672064ea (patch)
tree83a02218ee16dbcd14ce05a4628713396a3aaf52 /helix-tui/src
parentdeae13f404fadddf16f7c2005af8b383a1d8e362 (diff)
Reuse table in picker
Diffstat (limited to 'helix-tui/src')
-rw-r--r--helix-tui/src/text.rs13
-rw-r--r--helix-tui/src/widgets/table.rs14
2 files changed, 24 insertions, 3 deletions
diff --git a/helix-tui/src/text.rs b/helix-tui/src/text.rs
index ccdafad5..6970634b 100644
--- a/helix-tui/src/text.rs
+++ b/helix-tui/src/text.rs
@@ -436,6 +436,19 @@ impl<'a> From<Vec<Spans<'a>>> for Text<'a> {
}
}
+impl<'a> From<Text<'a>> for String {
+ fn from(text: Text<'a>) -> String {
+ let lines: Vec<String> = text.lines.iter().map(String::from).collect();
+ lines.join("\n")
+ }
+}
+
+impl<'a> From<&Text<'a>> for String {
+ fn from(text: &Text<'a>) -> String {
+ let lines: Vec<String> = text.lines.iter().map(String::from).collect();
+ lines.join("\n")
+ }
+}
impl<'a> IntoIterator for Text<'a> {
type Item = Spans<'a>;
type IntoIter = std::vec::IntoIter<Self::Item>;
diff --git a/helix-tui/src/widgets/table.rs b/helix-tui/src/widgets/table.rs
index a8f428a7..26860e5c 100644
--- a/helix-tui/src/widgets/table.rs
+++ b/helix-tui/src/widgets/table.rs
@@ -126,6 +126,14 @@ impl<'a> Row<'a> {
fn total_height(&self) -> u16 {
self.height.saturating_add(self.bottom_margin)
}
+
+ /// Returns the contents of cells as plain text, without styles and colors.
+ pub fn cell_text(&self) -> Vec<String> {
+ self.cells
+ .iter()
+ .map(|cell| String::from(&cell.content))
+ .collect()
+ }
}
/// A widget to display data in formatted columns.
@@ -477,6 +485,9 @@ impl<'a> Table<'a> {
};
let mut col = table_row_start_col;
for (width, cell) in columns_widths.iter().zip(table_row.cells.iter()) {
+ if is_selected {
+ buf.set_style(table_row_area, self.highlight_style);
+ }
render_cell(
buf,
cell,
@@ -489,9 +500,6 @@ impl<'a> Table<'a> {
);
col += *width + self.column_spacing;
}
- if is_selected {
- buf.set_style(table_row_area, self.highlight_style);
- }
}
}
}