nvim_api/ffi/
vimscript.rs

1use nvim_types::{
2    Array,
3    Boolean,
4    Dictionary,
5    Error,
6    NonOwning,
7    Object,
8    String,
9};
10
11extern "C" {
12    // https://github.com/neovim/neovim/blob/mastert/src/nvim/api/vimscript.c#L248
13    pub(crate) fn nvim_call_dict_function(
14        dict: NonOwning<Object>,
15        r#fn: NonOwning<String>,
16        args: NonOwning<Array>,
17        err: *mut Error,
18    ) -> Object;
19
20    // https://github.com/neovim/neovim/blob/master/src/nvim/api/vimscript.c#L233
21    pub(crate) fn nvim_call_function(
22        r#fn: NonOwning<String>,
23        args: NonOwning<Array>,
24        err: *mut Error,
25    ) -> Object;
26
27    // https://github.com/neovim/neovim/blob/master/src/nvim/api/command.c#L296
28    #[cfg(any(feature = "neovim-0-8", feature = "neovim-nightly"))]
29    pub(crate) fn nvim_cmd(
30        channel_id: u64,
31        cmd: *const crate::types::KeyDict_cmd,
32        opts: *const crate::opts::KeyDict_cmd_opts,
33        err: *mut Error,
34    ) -> String;
35
36    // https://github.com/neovim/neovim/blob/master/src/nvim/api/vimscript.c#L108
37    pub(crate) fn nvim_command(command: NonOwning<String>, err: *mut Error);
38
39    // https://github.com/neovim/neovim/blob/mastet/src/nvim/api/vimscript.c#L124
40    pub(crate) fn nvim_eval(
41        expr: NonOwning<String>,
42        err: *mut Error,
43    ) -> Object;
44
45    // https://github.com/neovim/neovim/blob/master/src/nvim/api/vimscript.c#L46
46    pub(crate) fn nvim_exec(
47        channel_id: u64,
48        src: NonOwning<String>,
49        output: Boolean,
50        error: *mut Error,
51    ) -> String;
52
53    // https://github.com/neovim/neovim/blob/master/src/nvim/api/command.c#L77
54    #[cfg(any(feature = "neovim-0-8", feature = "neovim-nightly"))]
55    pub(crate) fn nvim_parse_cmd(
56        src: NonOwning<String>,
57        opts: NonOwning<Dictionary>,
58        error: *mut Error,
59    ) -> Dictionary;
60
61    // https://github.com/neovim/neovim/blob/502f03fc064d1eb427d214521d5cb9f5425a15b4/src/nvim/api/vimscript.c#L405
62    pub fn nvim_parse_expression(
63        expr: NonOwning<String>,
64        flags: NonOwning<String>,
65        highlight: bool,
66        err: *mut Error,
67    ) -> Dictionary;
68}