Fleche haut marche un peu, à finir
This commit is contained in:
		| @ -12,3 +12,4 @@ dirs = "4.0.0" | ||||
| users = "0.11.0" | ||||
| gethostname = "0.4.1" | ||||
| termion = "2.0.1" | ||||
| unicode-segmentation = "1.6.0" | ||||
|  | ||||
							
								
								
									
										21
									
								
								src/lib.rs
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								src/lib.rs
									
									
									
									
									
								
							| @ -13,6 +13,7 @@ pub mod shell { | ||||
|     use termion::input::TermRead; | ||||
|     use termion::raw::IntoRawMode; | ||||
|     use termion::color; | ||||
|     use unicode_segmentation::UnicodeSegmentation; | ||||
|  | ||||
|     mod history; | ||||
|     use crate::shell::history::*; | ||||
| @ -178,6 +179,20 @@ pub mod shell { | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     fn rewrite(current_cmd: String) -> String { | ||||
|         //Deletes currently written command | ||||
|          | ||||
|         let mut stdout = stdout().into_raw_mode().unwrap(); | ||||
|         let nbr_of_chars = current_cmd.graphemes(true).count(); | ||||
|         while nbr_of_chars > 0 { | ||||
|             write!(stdout, "\x1b[D").unwrap(); | ||||
|             write!(stdout, "\x1b[K").unwrap(); | ||||
|         } | ||||
|         return String::new(); | ||||
|     } | ||||
|  | ||||
|  | ||||
|  | ||||
|     pub fn run_raw() { | ||||
|         let stdin = stdin(); | ||||
|         let mut stdout = stdout().into_raw_mode().unwrap(); | ||||
| @ -243,6 +258,7 @@ pub mod shell { | ||||
|                 }, | ||||
|  | ||||
|                 Key::Up => { | ||||
|                     mycommand = rewrite(mycommand); | ||||
|                     let lastnumber = match get_history_number() { | ||||
|                         Ok(e) => e, | ||||
|                         Err(_) => continue, | ||||
| @ -251,8 +267,9 @@ pub mod shell { | ||||
|                         Some(c) => c, | ||||
|                         None => continue | ||||
|                     }; | ||||
|                     let prompt = build_prompt(); | ||||
|                     write!(stdout, "\r\n{}{}", prompt, lastcmd.trim()); | ||||
|                     mycommand = lastcmd.trim().to_string(); | ||||
|                     //let prompt = build_prompt(); | ||||
|                     write!(stdout, "{}", mycommand); | ||||
|                     mycommand = lastcmd; | ||||
|                 }, | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user