@@ -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