1use core::fmt::Debug;
4
5use nvim_oxi::Array;
6use nvim_oxi::api::opts::CmdOpts;
7use nvim_oxi::api::types::CmdInfosBuilder;
8use rootcause::prelude::ResultExt;
9
10use crate::dict;
11
12pub fn open<'a>(entries: impl IntoIterator<Item = (&'a str, i64)> + Debug) -> rootcause::Result<()> {
17 let mut qflist = vec![];
18 for (filename, lnum) in entries {
19 qflist.push(dict! {
20 "filename": filename.to_string(),
21 "lnum": lnum
22 });
23 }
24
25 if qflist.is_empty() {
26 return Ok(());
27 }
28
29 nvim_oxi::api::call_function::<_, i64>("setqflist", (Array::from_iter(qflist),))
30 .context("error executing setqflist function")?;
31 nvim_oxi::api::cmd(&CmdInfosBuilder::default().cmd("copen").build(), &CmdOpts::default())
32 .context("error executing copen cmd")?;
33
34 Ok(())
35}