use crate::ported::bindings::vim::{buffer_name, MatcherInfo};
pub fn gundo(matcher_info: &MatcherInfo) -> bool {
let name = match buffer_name(matcher_info) {
Some(n) => n,
None => return false,
};
let basename = name.rsplitn(2, |&b| b == b'/').next().unwrap_or(&name);
basename == b"__Gundo__"
}
pub fn gundo_preview(matcher_info: &MatcherInfo) -> bool {
let name = match buffer_name(matcher_info) {
Some(n) => n,
None => return false,
};
let basename = name.rsplitn(2, |&b| b == b'/').next().unwrap_or(&name);
basename == b"__Gundo_Preview__"
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn gundo_matches_gundo_buffer() {
let info = MatcherInfo {
buffer_name: Some(b"__Gundo__".to_vec()),
..Default::default()
};
assert!(gundo(&info));
assert!(!gundo_preview(&info));
}
#[test]
fn gundo_preview_matches_preview_buffer() {
let info = MatcherInfo {
buffer_name: Some(b"__Gundo_Preview__".to_vec()),
..Default::default()
};
assert!(gundo_preview(&info));
assert!(!gundo(&info));
}
#[test]
fn gundo_rejects_other_buffer() {
let info = MatcherInfo {
buffer_name: Some(b"main.rs".to_vec()),
..Default::default()
};
assert!(!gundo(&info));
assert!(!gundo_preview(&info));
}
}