1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use std::collections::HashMap;

use mlua::prelude::*;
use nvim_macros::api;

use crate::common::Index;

api! {
    /// `vim.lsp.*`
    Lsp("https://neovim.io/doc/user/lsp.html"#"LSP") {
        /// Sends an async request for all active clients attached to the buffer.
        buf_request(buffer: Index, method: String, params: Option<LuaTable<'lua>>, handler: Handler<'lua>) -> (Option<HashMap<String, String>>, LuaFunction<'lua>) {

            #[derive(ToLua)]
            pub enum Handler<'lua> {
                #[mlua(value = lua.create_function(|_,()| Ok(LuaValue::Nil)).unwrap())]
                None,
                #[mlua(value = LuaValue::Nil)]
                Default,
                LuaFunction(LuaFunction<'lua>)
            }
        }
    }
}