nvim_utils/vim/api/
buffer.rs

1use crate::prelude::*;
2
3/// Corresponds to `vim.api.nvim_buf_attach`
4// TODO: Change opts into a struct that implements `ToLua`
5pub fn nvim_buf_attach(lua: &Lua, buffer: u64, send_buffer: bool, opts: LuaTable) -> LuaResult<()> {
6    vim::api::get(lua)?
7        .get::<_, LuaFunction>("nvim_buf_attach")?
8        .call((buffer, send_buffer, opts))
9}
10
11/// Corresponds to `vim.api.nvim_buf_detach`
12pub fn nvim_buf_detach(lua: &Lua, buffer: u64) -> LuaResult<()> {
13    vim::api::get(lua)?
14        .get::<_, LuaFunction>("nvim_buf_detach")?
15        .call(buffer)
16}
17
18/// Corresponds to `vim.api.nvim_buf_set_lines`
19pub fn nvim_buf_set_lines<S: Into<String>>(
20    lua: &Lua,
21    buffer: u64,
22    start: u64,
23    end: u64,
24    strict_indexing: bool,
25    lines: Vec<S>,
26) -> LuaResult<()> {
27    vim::api::get(lua)?.call_function(
28        "nvim_buf_set_lines",
29        (
30            buffer,
31            start,
32            end,
33            strict_indexing,
34            lines.into_iter().map(|s| s.into()).collect::<Vec<_>>(),
35        ),
36    )
37}
38
39/// Corresponds to `vim.api.nvim_buf_get_lines`
40pub fn nvim_buf_get_lines(
41    lua: &Lua,
42    buffer: u64,
43    start: u64,
44    end: u64,
45    strict_indexing: bool,
46) -> LuaResult<Vec<String>> {
47    vim::api::get(lua)?.call_function("nvim_buf_get_lines", (buffer, start, end, strict_indexing))
48}