Skip to content

Commit

Permalink
added col_height calculation
Browse files Browse the repository at this point in the history
  • Loading branch information
janhrastnik committed Nov 12, 2020
1 parent 2b44031 commit 1a3c647
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 26 deletions.
18 changes: 9 additions & 9 deletions helix-term/src/application.rs
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,12 @@ impl Renderer {
// completion
if !prompt.completion.is_empty() {
// TODO: find out better way of clearing individual lines of the screen
for i in (3..7) {
let mut row = 0;
let mut col = 0;
let max_col = self.size.0 / BASE_WIDTH;
let col_height = ((prompt.completion.len() as u16 + max_col - 1) / max_col);

for i in (3..col_height + 3) {
self.surface.set_string(
0,
self.size.1 - i as u16,
Expand All @@ -250,14 +255,9 @@ impl Renderer {
);
}
self.surface.set_style(
Rect::new(0, self.size.1 - 6, self.size.0, 4),
Rect::new(0, self.size.1 - col_height - 2, self.size.0, col_height),
view.theme.get("ui.statusline"),
);
let mut row = 0;
let mut col = 0;
let max_col: u16 = self.size.0 / BASE_WIDTH;
// TODO: this will crash if there are too many cols added
// TODO: set char limit
for (i, command) in prompt.completion.iter().enumerate() {
let color = if prompt.completion_selection_index.is_some()
&& i == prompt.completion_selection_index.unwrap()
Expand All @@ -268,13 +268,13 @@ impl Renderer {
};
self.surface.set_stringn(
1 + col * BASE_WIDTH,
self.size.1 - 6 + row as u16,
self.size.1 - col_height - 2 + row,
&command,
BASE_WIDTH as usize - 1,
color,
);
row += 1;
if row > 3 {
if row > col_height - 1 {
row = 0;
col += 1;
}
Expand Down
23 changes: 6 additions & 17 deletions helix-view/src/prompt.rs
Original file line number Diff line number Diff line change
Expand Up @@ -68,25 +68,14 @@ impl Prompt {
}

pub fn change_completion_selection(&mut self) {
if !self.completion.is_empty() {
self.completion_selection_index = self
.completion_selection_index
.map(|i| {
if i == self.completion.len() - 1 {
0
} else {
i + 1
}
})
.or(Some(0));
self.line = String::from(
self.completion
.get(self.completion_selection_index.unwrap())
.unwrap(),
);
if self.completion.is_empty() {
return;
}
let index =
self.completion_selection_index.map(|i| i + 1).unwrap_or(0) % self.completion.len();
self.completion_selection_index = Some(index);
self.line = self.completion[index].clone();
}

pub fn exit_selection(&mut self) {
self.completion_selection_index = None;
}
Expand Down

0 comments on commit 1a3c647

Please sign in to comment.