nvrim/plugins/
clotherbufs.rs

1use nvim_oxi::Dictionary;
2use nvim_oxi::api::Buffer;
3use nvim_oxi::api::opts::BufDeleteOptsBuilder;
4
5pub fn dict() -> Dictionary {
6    dict! {
7        "close_other_buffers": fn_from!(close_other_buffers),
8    }
9}
10
11fn close_other_buffers(force_close: Option<bool>) -> Option<()> {
12    let cur_buf = nvim_oxi::api::get_current_buf().handle();
13
14    let opts = BufDeleteOptsBuilder::default()
15        .force(force_close.is_some_and(std::convert::identity))
16        .build();
17
18    for buf in ytil_noxi::mru_buffers::get()? {
19        if cur_buf == buf.id || buf.is_term() {
20            continue;
21        }
22        if let Err(err) = Buffer::from(buf.id).delete(&opts) {
23            ytil_noxi::notify::error(format!("error closing buffer | buffer={buf:?} error={err:?}"));
24        }
25    }
26
27    Some(())
28}