Skip to content

Commit 85b6e70

Browse files
committed
Emphasize hotkeys in footer with color
1 parent b730882 commit 85b6e70

1 file changed

Lines changed: 47 additions & 16 deletions

File tree

src/list/state.rs

Lines changed: 47 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -233,43 +233,74 @@ impl<'a> ListState<'a> {
233233
)?;
234234
next_ln(stdout)?;
235235

236+
let hotkey = |writer: &mut MaxLenWriter, hotkey| -> io::Result<()> {
237+
writer
238+
.stdout
239+
.queue(SetForegroundColor(Color::Yellow))?
240+
.queue(SetAttribute(Attribute::Bold))?;
241+
writer.write_ascii(hotkey)?;
242+
writer.stdout.queue(ResetColor)?;
243+
Ok(())
244+
};
245+
236246
let mut writer = MaxLenWriter::new(stdout, self.term_width as usize);
237247
if self.message.is_empty() {
238248
// Help footer message
239249
if self.scroll_state.selected().is_some() {
240-
writer.write_str("↓/j ↑/k home/g end/G | <c>ontinue at | <r>eset exercise")?;
250+
writer.write_str("↓/")?;
251+
hotkey(&mut writer, b"j")?;
252+
writer.write_str(" ↑/")?;
253+
hotkey(&mut writer, b"k")?;
254+
writer.write_ascii(b" home/")?;
255+
hotkey(&mut writer, b"g")?;
256+
writer.write_ascii(b" end/")?;
257+
hotkey(&mut writer, b"G")?;
258+
writer.write_ascii(b" | ")?;
259+
hotkey(&mut writer, b"c")?;
260+
writer.write_ascii(b"ontinue at | ")?;
261+
hotkey(&mut writer, b"r")?;
262+
writer.write_ascii(b"eset exercise")?;
241263
next_ln(stdout)?;
242264
writer = MaxLenWriter::new(stdout, self.term_width as usize);
243265

244-
writer.write_ascii(b"<s>earch | filter ")?;
266+
hotkey(&mut writer, b"s")?;
267+
writer.write_ascii(b"earch | filter ")?;
245268
} else {
246269
// Nothing selected (and nothing shown), so only display filter and quit.
247270
writer.write_ascii(b"filter ")?;
248271
}
249272

250273
match self.filter {
251274
Filter::Done => {
252-
writer
253-
.stdout
254-
.queue(SetForegroundColor(Color::Magenta))?
255-
.queue(SetAttribute(Attribute::Underlined))?;
256-
writer.write_ascii(b"<d>one")?;
275+
writer.stdout.queue(SetAttribute(Attribute::Underlined))?;
276+
hotkey(&mut writer, b"d")?;
277+
writer.stdout.queue(SetForegroundColor(Color::Magenta))?;
278+
writer.write_str("one")?;
257279
writer.stdout.queue(ResetColor)?;
258-
writer.write_ascii(b"/<p>ending")?;
280+
writer.write_ascii(b"/")?;
281+
hotkey(&mut writer, b"p")?;
282+
writer.write_ascii(b"ending")?;
259283
}
260284
Filter::Pending => {
261-
writer.write_ascii(b"<d>one/")?;
262-
writer
263-
.stdout
264-
.queue(SetForegroundColor(Color::Magenta))?
265-
.queue(SetAttribute(Attribute::Underlined))?;
266-
writer.write_ascii(b"<p>ending")?;
285+
hotkey(&mut writer, b"d")?;
286+
writer.write_ascii(b"one/")?;
287+
writer.stdout.queue(SetAttribute(Attribute::Underlined))?;
288+
hotkey(&mut writer, b"p")?;
289+
writer.stdout.queue(SetForegroundColor(Color::Magenta))?;
290+
writer.write_ascii(b"ending")?;
267291
writer.stdout.queue(ResetColor)?;
268292
}
269-
Filter::None => writer.write_ascii(b"<d>one/<p>ending")?,
293+
Filter::None => {
294+
hotkey(&mut writer, b"d")?;
295+
writer.write_ascii(b"one/")?;
296+
hotkey(&mut writer, b"p")?;
297+
writer.write_ascii(b"ending")?;
298+
}
270299
}
271300

272-
writer.write_ascii(b" | <q>uit list")?;
301+
writer.write_ascii(b" | ")?;
302+
hotkey(&mut writer, b"q")?;
303+
writer.write_ascii(b"uit list")?;
273304
} else {
274305
writer.stdout.queue(SetForegroundColor(Color::Magenta))?;
275306
writer.write_str(&self.message)?;

0 commit comments

Comments
 (0)