Add ! negation support, fix POSIX exit statuses, and improve vi emulation with comprehensive tests
This commit is contained in:
@@ -2,6 +2,24 @@ use std::{fmt::Display, sync::Mutex};
|
||||
|
||||
pub static REGISTERS: Mutex<Registers> = Mutex::new(Registers::new());
|
||||
|
||||
#[cfg(test)]
|
||||
pub static SAVED_REGISTERS: Mutex<Option<Registers>> = Mutex::new(None);
|
||||
|
||||
#[cfg(test)]
|
||||
pub fn save_registers() {
|
||||
let mut saved = SAVED_REGISTERS.lock().unwrap();
|
||||
*saved = Some(REGISTERS.lock().unwrap().clone());
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
pub fn restore_registers() {
|
||||
let mut saved = SAVED_REGISTERS.lock().unwrap();
|
||||
if let Some(ref registers) = *saved {
|
||||
*REGISTERS.lock().unwrap() = registers.clone();
|
||||
}
|
||||
*saved = None;
|
||||
}
|
||||
|
||||
pub fn read_register(ch: Option<char>) -> Option<RegisterContent> {
|
||||
let lock = REGISTERS.lock().unwrap();
|
||||
lock.get_reg(ch).map(|r| r.content().clone())
|
||||
@@ -79,7 +97,7 @@ impl RegisterContent {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Default, Debug)]
|
||||
#[derive(Default, Clone, Debug)]
|
||||
pub struct Registers {
|
||||
default: Register,
|
||||
a: Register,
|
||||
|
||||
Reference in New Issue
Block a user