nvrim/plugins/
clotherbufs.rs1use 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}