use std::sync::Arc;
use crate::ported::hashtable::hashtable_nodes;
use crate::ported::zle::zle_keymap::{Keymap, KeymapName};
pub fn set_keymap_primary(
tab: &mut hashtable_nodes<KeymapName>,
km: &Arc<Keymap>,
primary: Option<String>,
) -> Arc<Keymap> {
if km.primary == primary {
return km.clone();
}
let mut updated = (**km).clone();
updated.primary = primary;
let updated = Arc::new(updated);
for (_, kmn) in tab.iter_mut() {
if Arc::ptr_eq(&kmn.keymap, km) {
kmn.keymap = updated.clone();
}
}
updated
}