nvim_api/ffi/
buffer.rs

1use nvim_types::{
2    Array,
3    BufHandle,
4    Dictionary,
5    Error,
6    Integer,
7    LuaRef,
8    NonOwning,
9    Object,
10    String,
11};
12
13use crate::opts::{
14    KeyDict_get_commands,
15    KeyDict_keymap,
16    KeyDict_user_command,
17};
18
19extern "C" {
20    // https://github.com/neovim/neovim/blob/master/src/nvim/api/buffer.c#L145
21    pub(crate) fn nvim_buf_attach(
22        channel_id: u64,
23        buf: BufHandle,
24        send_buffer: bool,
25        opts: NonOwning<Dictionary>,
26        err: *mut Error,
27    ) -> bool;
28
29    // https://github.com/neovim/neovim/blob/master/src/nvim/api/buffer.c#L1358
30    pub(crate) fn nvim_buf_call(
31        buf: BufHandle,
32        fun: LuaRef,
33        err: *mut Error,
34    ) -> Object;
35
36    // https://github.com/neovim/neovim/blob/master/src/nvim/api/buffer.c#L1383
37    pub(crate) fn nvim_buf_create_user_command(
38        buf: BufHandle,
39        name: NonOwning<String>,
40        command: NonOwning<Object>,
41        opts: *const KeyDict_user_command,
42        err: *mut Error,
43    );
44
45    // https://github.com/neovim/neovim/blob/master/src/nvim/api/buffer.c#L969
46    pub(crate) fn nvim_buf_del_keymap(
47        channel_id: u64,
48        buf: BufHandle,
49        mode: NonOwning<String>,
50        lhs: NonOwning<String>,
51        err: *mut Error,
52    );
53
54    // https://github.com/neovim/neovim/blob/master/src/nvim/api/buffer.c#L1216
55    pub(crate) fn nvim_buf_del_mark(
56        buf: BufHandle,
57        name: NonOwning<String>,
58        err: *mut Error,
59    ) -> bool;
60
61    // https://github.com/neovim/neovim/blob/master/src/nvim/api/buffer.c#L1406
62    pub(crate) fn nvim_buf_del_user_command(
63        buf: BufHandle,
64        name: NonOwning<String>,
65        err: *mut Error,
66    );
67
68    // https://github.com/neovim/neovim/blob/master/src/nvim/api/buffer.c#L1030
69    pub(crate) fn nvim_buf_del_var(
70        buf: BufHandle,
71        name: NonOwning<String>,
72        err: *mut Error,
73    );
74
75    // https://github.com/neovim/neovim/blob/master/src/nvim/api/buffer.c#L1150
76    pub(crate) fn nvim_buf_delete(
77        buf: BufHandle,
78        opts: NonOwning<Dictionary>,
79        err: *mut Error,
80    );
81
82    // https://github.com/neovim/neovim/blob/master/src/nvim/api/buffer.c#L921
83    pub(crate) fn nvim_buf_get_changedtick(
84        buf: BufHandle,
85        err: *mut Error,
86    ) -> Integer;
87
88    // https://github.com/neovim/neovim/blob/master/src/nvim/api/buffer.c#L983
89    pub(crate) fn nvim_buf_get_commands(
90        buf: BufHandle,
91        opts: *const KeyDict_get_commands,
92        err: *mut Error,
93    ) -> Dictionary;
94
95    // https://github.com/neovim/neovim/blob/master/src/nvim/api/buffer.c#L940
96    pub(crate) fn nvim_buf_get_keymap(
97        channel_id: u64,
98        buf: BufHandle,
99        mode: NonOwning<String>,
100        err: *mut Error,
101    ) -> Array;
102
103    // https://github.com/neovim/neovim/blob/master/src/nvim/api/buffer.c#L269
104    pub(crate) fn nvim_buf_get_lines(
105        channel_id: u64,
106        buf: BufHandle,
107        start: Integer,
108        end: Integer,
109        strict_indexing: bool,
110        err: *mut Error,
111    ) -> Array;
112
113    // https://github.com/neovim/neovim/blob/master/src/nvim/api/buffer.c#L1299
114    pub(crate) fn nvim_buf_get_mark(
115        buf: BufHandle,
116        name: NonOwning<String>,
117        err: *mut Error,
118    ) -> Array;
119
120    // https://github.com/neovim/neovim/blob/master/src/nvim/api/buffer.c#L1086
121    pub(crate) fn nvim_buf_get_name(buf: BufHandle, err: *mut Error)
122        -> String;
123
124    // https://github.com/neovim/neovim/blob/master/src/nvim/api/buffer.c#L876
125    pub(crate) fn nvim_buf_get_offset(
126        buf: BufHandle,
127        index: Integer,
128        err: *mut Error,
129    ) -> Integer;
130
131    // https://github.com/neovim/neovim/blob/master/src/nvim/api/buffer.c#L1049
132    pub(crate) fn nvim_buf_get_option(
133        buf: BufHandle,
134        name: NonOwning<String>,
135        err: *mut Error,
136    ) -> Object;
137
138    // https://github.com/neovim/neovim/blob/master/src/nvim/api/buffer.c#L778
139    pub(crate) fn nvim_buf_get_text(
140        channel_id: u64,
141        buf: BufHandle,
142        start_row: Integer,
143        start_col: Integer,
144        end_row: Integer,
145        end_col: Integer,
146        opts: NonOwning<Dictionary>,
147        err: *mut Error,
148    ) -> Array;
149
150    // https://github.com/neovim/neovim/blob/master/src/nvim/api/buffer.c#L1049
151    pub(crate) fn nvim_buf_get_var(
152        buf: BufHandle,
153        name: NonOwning<String>,
154        err: *mut Error,
155    ) -> Object;
156
157    // https://github.com/neovim/neovim/blob/master/src/nvim/api/buffer.c#L1135
158    pub(crate) fn nvim_buf_is_loaded(buf: BufHandle) -> bool;
159
160    // https://github.com/neovim/neovim/blob/master/src/nvim/api/buffer.c#L1198
161    pub(crate) fn nvim_buf_is_valid(buf: BufHandle) -> bool;
162
163    // https://github.com/neovim/neovim/blob/master/src/nvim/api/buffer.c#L1049
164    pub(crate) fn nvim_buf_line_count(
165        buf: BufHandle,
166        err: *mut Error,
167    ) -> Integer;
168
169    // https://github.com/neovim/neovim/blob/master/src/nvim/api/buffer.c#L957
170    pub(crate) fn nvim_buf_set_keymap(
171        channel_id: u64,
172        buf: BufHandle,
173        mode: NonOwning<String>,
174        lhs: NonOwning<String>,
175        rhs: NonOwning<String>,
176        opts: *const KeyDict_keymap,
177        err: *mut Error,
178    );
179
180    // https://github.com/neovim/neovim/blob/master/src/nvim/api/buffer.c#L365
181    pub(crate) fn nvim_buf_set_lines(
182        channel_id: u64,
183        buf: BufHandle,
184        start: Integer,
185        end: Integer,
186        strict_indexing: bool,
187        replacement: NonOwning<Array>,
188        err: *mut Error,
189    );
190
191    // https://github.com/neovim/neovim/blob/master/src/nvim/api/buffer.c#L1265
192    pub(crate) fn nvim_buf_set_mark(
193        buf: BufHandle,
194        name: NonOwning<String>,
195        line: Integer,
196        col: Integer,
197        opts: NonOwning<Dictionary>,
198        err: *mut Error,
199    ) -> bool;
200
201    // https://github.com/neovim/neovim/blob/master/src/nvim/api/buffer.c#L1104
202    pub(crate) fn nvim_buf_set_name(
203        buf: BufHandle,
204        name: NonOwning<String>,
205        err: *mut Error,
206    );
207
208    // https://github.com/neovim/neovim/blob/master/src/nvim/api/buffer.c#L1069
209    pub(crate) fn nvim_buf_set_option(
210        channel_id: u64,
211        buf: BufHandle,
212        name: NonOwning<String>,
213        value: NonOwning<Object>,
214        err: *mut Error,
215    );
216
217    // https://github.com/neovim/neovim/blob/master/src/nvim/api/buffer.c#L538
218    pub(crate) fn nvim_buf_set_text(
219        channel_id: u64,
220        buf: BufHandle,
221        start_row: Integer,
222        start_col: Integer,
223        end_row: Integer,
224        end_col: Integer,
225        replacement: NonOwning<Array>,
226        err: *mut Error,
227    );
228
229    // https://github.com/neovim/neovim/blob/master/src/nvim/api/buffer.c#L1013
230    pub(crate) fn nvim_buf_set_var(
231        buf: BufHandle,
232        name: NonOwning<String>,
233        value: NonOwning<Object>,
234        err: *mut Error,
235    );
236}