1use neovim::*;
4use rpc::*;
5
6#[derive(PartialEq, Clone, Debug)]
7pub struct Buffer {
8 code_data: Value,
9}
10
11impl Buffer {
12 pub fn new(code_data: Value) -> Buffer {
13 Buffer { code_data }
14 }
15
16 pub fn get_value(&self) -> &Value {
18 &self.code_data
19 }
20
21 pub fn line_count(&self, neovim: &mut Neovim) -> Result<i64, CallError> {
23 neovim
24 .session
25 .call("nvim_buf_line_count", call_args![self.code_data.clone()])
26 .map(map_result)
27 .map_err(map_generic_error)
28 }
29 pub fn attach(
31 &self,
32 neovim: &mut Neovim,
33 send_buffer: bool,
34 opts: Vec<(Value, Value)>,
35 ) -> Result<bool, CallError> {
36 neovim
37 .session
38 .call(
39 "nvim_buf_attach",
40 call_args![self.code_data.clone(), send_buffer, opts],
41 )
42 .map(map_result)
43 .map_err(map_generic_error)
44 }
45 pub fn detach(&self, neovim: &mut Neovim) -> Result<bool, CallError> {
47 neovim
48 .session
49 .call("nvim_buf_detach", call_args![self.code_data.clone()])
50 .map(map_result)
51 .map_err(map_generic_error)
52 }
53 pub fn get_lines(
55 &self,
56 neovim: &mut Neovim,
57 start: i64,
58 end: i64,
59 strict_indexing: bool,
60 ) -> Result<Vec<String>, CallError> {
61 neovim
62 .session
63 .call(
64 "nvim_buf_get_lines",
65 call_args![self.code_data.clone(), start, end, strict_indexing],
66 )
67 .map(map_result)
68 .map_err(map_generic_error)
69 }
70 pub fn set_lines(
72 &self,
73 neovim: &mut Neovim,
74 start: i64,
75 end: i64,
76 strict_indexing: bool,
77 replacement: Vec<String>,
78 ) -> Result<(), CallError> {
79 neovim
80 .session
81 .call(
82 "nvim_buf_set_lines",
83 call_args![
84 self.code_data.clone(),
85 start,
86 end,
87 strict_indexing,
88 replacement
89 ],
90 )
91 .map(map_result)
92 .map_err(map_generic_error)
93 }
94 pub fn get_offset(&self, neovim: &mut Neovim, index: i64) -> Result<i64, CallError> {
96 neovim
97 .session
98 .call(
99 "nvim_buf_get_offset",
100 call_args![self.code_data.clone(), index],
101 )
102 .map(map_result)
103 .map_err(map_generic_error)
104 }
105 pub fn get_var(&self, neovim: &mut Neovim, name: &str) -> Result<Value, CallError> {
107 neovim
108 .session
109 .call("nvim_buf_get_var", call_args![self.code_data.clone(), name])
110 .map(map_result)
111 .map_err(map_generic_error)
112 }
113 pub fn get_changedtick(&self, neovim: &mut Neovim) -> Result<i64, CallError> {
115 neovim
116 .session
117 .call(
118 "nvim_buf_get_changedtick",
119 call_args![self.code_data.clone()],
120 )
121 .map(map_result)
122 .map_err(map_generic_error)
123 }
124 pub fn get_keymap(
126 &self,
127 neovim: &mut Neovim,
128 mode: &str,
129 ) -> Result<Vec<Vec<(Value, Value)>>, CallError> {
130 neovim
131 .session
132 .call(
133 "nvim_buf_get_keymap",
134 call_args![self.code_data.clone(), mode],
135 )
136 .map(map_result)
137 .map_err(map_generic_error)
138 }
139 pub fn get_commands(
141 &self,
142 neovim: &mut Neovim,
143 opts: Vec<(Value, Value)>,
144 ) -> Result<Vec<(Value, Value)>, CallError> {
145 neovim
146 .session
147 .call(
148 "nvim_buf_get_commands",
149 call_args![self.code_data.clone(), opts],
150 )
151 .map(map_result)
152 .map_err(map_generic_error)
153 }
154 pub fn set_var(&self, neovim: &mut Neovim, name: &str, value: Value) -> Result<(), CallError> {
156 neovim
157 .session
158 .call(
159 "nvim_buf_set_var",
160 call_args![self.code_data.clone(), name, value],
161 )
162 .map(map_result)
163 .map_err(map_generic_error)
164 }
165 pub fn del_var(&self, neovim: &mut Neovim, name: &str) -> Result<(), CallError> {
167 neovim
168 .session
169 .call("nvim_buf_del_var", call_args![self.code_data.clone(), name])
170 .map(map_result)
171 .map_err(map_generic_error)
172 }
173 pub fn get_option(&self, neovim: &mut Neovim, name: &str) -> Result<Value, CallError> {
175 neovim
176 .session
177 .call(
178 "nvim_buf_get_option",
179 call_args![self.code_data.clone(), name],
180 )
181 .map(map_result)
182 .map_err(map_generic_error)
183 }
184 pub fn set_option(
186 &self,
187 neovim: &mut Neovim,
188 name: &str,
189 value: Value,
190 ) -> Result<(), CallError> {
191 neovim
192 .session
193 .call(
194 "nvim_buf_set_option",
195 call_args![self.code_data.clone(), name, value],
196 )
197 .map(map_result)
198 .map_err(map_generic_error)
199 }
200 pub fn get_number(&self, neovim: &mut Neovim) -> Result<i64, CallError> {
202 neovim
203 .session
204 .call("nvim_buf_get_number", call_args![self.code_data.clone()])
205 .map(map_result)
206 .map_err(map_generic_error)
207 }
208 pub fn get_name(&self, neovim: &mut Neovim) -> Result<String, CallError> {
210 neovim
211 .session
212 .call("nvim_buf_get_name", call_args![self.code_data.clone()])
213 .map(map_result)
214 .map_err(map_generic_error)
215 }
216 pub fn set_name(&self, neovim: &mut Neovim, name: &str) -> Result<(), CallError> {
218 neovim
219 .session
220 .call(
221 "nvim_buf_set_name",
222 call_args![self.code_data.clone(), name],
223 )
224 .map(map_result)
225 .map_err(map_generic_error)
226 }
227 pub fn is_loaded(&self, neovim: &mut Neovim) -> Result<bool, CallError> {
229 neovim
230 .session
231 .call("nvim_buf_is_loaded", call_args![self.code_data.clone()])
232 .map(map_result)
233 .map_err(map_generic_error)
234 }
235 pub fn is_valid(&self, neovim: &mut Neovim) -> Result<bool, CallError> {
237 neovim
238 .session
239 .call("nvim_buf_is_valid", call_args![self.code_data.clone()])
240 .map(map_result)
241 .map_err(map_generic_error)
242 }
243 pub fn get_mark(&self, neovim: &mut Neovim, name: &str) -> Result<(i64, i64), CallError> {
245 neovim
246 .session
247 .call(
248 "nvim_buf_get_mark",
249 call_args![self.code_data.clone(), name],
250 )
251 .map(map_result)
252 .map_err(map_generic_error)
253 }
254 pub fn add_highlight(
256 &self,
257 neovim: &mut Neovim,
258 ns_id: i64,
259 hl_group: &str,
260 line: i64,
261 col_start: i64,
262 col_end: i64,
263 ) -> Result<i64, CallError> {
264 neovim
265 .session
266 .call(
267 "nvim_buf_add_highlight",
268 call_args![
269 self.code_data.clone(),
270 ns_id,
271 hl_group,
272 line,
273 col_start,
274 col_end
275 ],
276 )
277 .map(map_result)
278 .map_err(map_generic_error)
279 }
280 pub fn clear_namespace(
282 &self,
283 neovim: &mut Neovim,
284 ns_id: i64,
285 line_start: i64,
286 line_end: i64,
287 ) -> Result<(), CallError> {
288 neovim
289 .session
290 .call(
291 "nvim_buf_clear_namespace",
292 call_args![self.code_data.clone(), ns_id, line_start, line_end],
293 )
294 .map(map_result)
295 .map_err(map_generic_error)
296 }
297 pub fn clear_highlight(
299 &self,
300 neovim: &mut Neovim,
301 ns_id: i64,
302 line_start: i64,
303 line_end: i64,
304 ) -> Result<(), CallError> {
305 neovim
306 .session
307 .call(
308 "nvim_buf_clear_highlight",
309 call_args![self.code_data.clone(), ns_id, line_start, line_end],
310 )
311 .map(map_result)
312 .map_err(map_generic_error)
313 }
314 pub fn set_virtual_text(
316 &self,
317 neovim: &mut Neovim,
318 ns_id: i64,
319 line: i64,
320 chunks: Vec<Value>,
321 opts: Vec<(Value, Value)>,
322 ) -> Result<i64, CallError> {
323 neovim
324 .session
325 .call(
326 "nvim_buf_set_virtual_text",
327 call_args![self.code_data.clone(), ns_id, line, chunks, opts],
328 )
329 .map(map_result)
330 .map_err(map_generic_error)
331 }
332}
333
334#[derive(PartialEq, Clone, Debug)]
335pub struct Window {
336 code_data: Value,
337}
338
339impl Window {
340 pub fn new(code_data: Value) -> Window {
341 Window { code_data }
342 }
343
344 pub fn get_value(&self) -> &Value {
346 &self.code_data
347 }
348
349 pub fn get_buf(&self, neovim: &mut Neovim) -> Result<Buffer, CallError> {
351 neovim
352 .session
353 .call("nvim_win_get_buf", call_args![self.code_data.clone()])
354 .map(map_result)
355 .map_err(map_generic_error)
356 }
357 pub fn set_buf(&self, neovim: &mut Neovim, buffer: &Buffer) -> Result<(), CallError> {
359 neovim
360 .session
361 .call(
362 "nvim_win_set_buf",
363 call_args![self.code_data.clone(), buffer],
364 )
365 .map(map_result)
366 .map_err(map_generic_error)
367 }
368 pub fn get_cursor(&self, neovim: &mut Neovim) -> Result<(i64, i64), CallError> {
370 neovim
371 .session
372 .call("nvim_win_get_cursor", call_args![self.code_data.clone()])
373 .map(map_result)
374 .map_err(map_generic_error)
375 }
376 pub fn set_cursor(&self, neovim: &mut Neovim, pos: (i64, i64)) -> Result<(), CallError> {
378 neovim
379 .session
380 .call(
381 "nvim_win_set_cursor",
382 call_args![self.code_data.clone(), pos],
383 )
384 .map(map_result)
385 .map_err(map_generic_error)
386 }
387 pub fn get_height(&self, neovim: &mut Neovim) -> Result<i64, CallError> {
389 neovim
390 .session
391 .call("nvim_win_get_height", call_args![self.code_data.clone()])
392 .map(map_result)
393 .map_err(map_generic_error)
394 }
395 pub fn set_height(&self, neovim: &mut Neovim, height: i64) -> Result<(), CallError> {
397 neovim
398 .session
399 .call(
400 "nvim_win_set_height",
401 call_args![self.code_data.clone(), height],
402 )
403 .map(map_result)
404 .map_err(map_generic_error)
405 }
406 pub fn get_width(&self, neovim: &mut Neovim) -> Result<i64, CallError> {
408 neovim
409 .session
410 .call("nvim_win_get_width", call_args![self.code_data.clone()])
411 .map(map_result)
412 .map_err(map_generic_error)
413 }
414 pub fn set_width(&self, neovim: &mut Neovim, width: i64) -> Result<(), CallError> {
416 neovim
417 .session
418 .call(
419 "nvim_win_set_width",
420 call_args![self.code_data.clone(), width],
421 )
422 .map(map_result)
423 .map_err(map_generic_error)
424 }
425 pub fn get_var(&self, neovim: &mut Neovim, name: &str) -> Result<Value, CallError> {
427 neovim
428 .session
429 .call("nvim_win_get_var", call_args![self.code_data.clone(), name])
430 .map(map_result)
431 .map_err(map_generic_error)
432 }
433 pub fn set_var(&self, neovim: &mut Neovim, name: &str, value: Value) -> Result<(), CallError> {
435 neovim
436 .session
437 .call(
438 "nvim_win_set_var",
439 call_args![self.code_data.clone(), name, value],
440 )
441 .map(map_result)
442 .map_err(map_generic_error)
443 }
444 pub fn del_var(&self, neovim: &mut Neovim, name: &str) -> Result<(), CallError> {
446 neovim
447 .session
448 .call("nvim_win_del_var", call_args![self.code_data.clone(), name])
449 .map(map_result)
450 .map_err(map_generic_error)
451 }
452 pub fn get_option(&self, neovim: &mut Neovim, name: &str) -> Result<Value, CallError> {
454 neovim
455 .session
456 .call(
457 "nvim_win_get_option",
458 call_args![self.code_data.clone(), name],
459 )
460 .map(map_result)
461 .map_err(map_generic_error)
462 }
463 pub fn set_option(
465 &self,
466 neovim: &mut Neovim,
467 name: &str,
468 value: Value,
469 ) -> Result<(), CallError> {
470 neovim
471 .session
472 .call(
473 "nvim_win_set_option",
474 call_args![self.code_data.clone(), name, value],
475 )
476 .map(map_result)
477 .map_err(map_generic_error)
478 }
479 pub fn get_position(&self, neovim: &mut Neovim) -> Result<(i64, i64), CallError> {
481 neovim
482 .session
483 .call("nvim_win_get_position", call_args![self.code_data.clone()])
484 .map(map_result)
485 .map_err(map_generic_error)
486 }
487 pub fn get_tabpage(&self, neovim: &mut Neovim) -> Result<Tabpage, CallError> {
489 neovim
490 .session
491 .call("nvim_win_get_tabpage", call_args![self.code_data.clone()])
492 .map(map_result)
493 .map_err(map_generic_error)
494 }
495 pub fn get_number(&self, neovim: &mut Neovim) -> Result<i64, CallError> {
497 neovim
498 .session
499 .call("nvim_win_get_number", call_args![self.code_data.clone()])
500 .map(map_result)
501 .map_err(map_generic_error)
502 }
503 pub fn is_valid(&self, neovim: &mut Neovim) -> Result<bool, CallError> {
505 neovim
506 .session
507 .call("nvim_win_is_valid", call_args![self.code_data.clone()])
508 .map(map_result)
509 .map_err(map_generic_error)
510 }
511}
512
513#[derive(PartialEq, Clone, Debug)]
514pub struct Tabpage {
515 code_data: Value,
516}
517
518impl Tabpage {
519 pub fn new(code_data: Value) -> Tabpage {
520 Tabpage { code_data }
521 }
522
523 pub fn get_value(&self) -> &Value {
525 &self.code_data
526 }
527
528 pub fn list_wins(&self, neovim: &mut Neovim) -> Result<Vec<Window>, CallError> {
530 neovim
531 .session
532 .call("nvim_tabpage_list_wins", call_args![self.code_data.clone()])
533 .map(map_result)
534 .map_err(map_generic_error)
535 }
536 pub fn get_var(&self, neovim: &mut Neovim, name: &str) -> Result<Value, CallError> {
538 neovim
539 .session
540 .call(
541 "nvim_tabpage_get_var",
542 call_args![self.code_data.clone(), name],
543 )
544 .map(map_result)
545 .map_err(map_generic_error)
546 }
547 pub fn set_var(&self, neovim: &mut Neovim, name: &str, value: Value) -> Result<(), CallError> {
549 neovim
550 .session
551 .call(
552 "nvim_tabpage_set_var",
553 call_args![self.code_data.clone(), name, value],
554 )
555 .map(map_result)
556 .map_err(map_generic_error)
557 }
558 pub fn del_var(&self, neovim: &mut Neovim, name: &str) -> Result<(), CallError> {
560 neovim
561 .session
562 .call(
563 "nvim_tabpage_del_var",
564 call_args![self.code_data.clone(), name],
565 )
566 .map(map_result)
567 .map_err(map_generic_error)
568 }
569 pub fn get_win(&self, neovim: &mut Neovim) -> Result<Window, CallError> {
571 neovim
572 .session
573 .call("nvim_tabpage_get_win", call_args![self.code_data.clone()])
574 .map(map_result)
575 .map_err(map_generic_error)
576 }
577 pub fn get_number(&self, neovim: &mut Neovim) -> Result<i64, CallError> {
579 neovim
580 .session
581 .call(
582 "nvim_tabpage_get_number",
583 call_args![self.code_data.clone()],
584 )
585 .map(map_result)
586 .map_err(map_generic_error)
587 }
588 pub fn is_valid(&self, neovim: &mut Neovim) -> Result<bool, CallError> {
590 neovim
591 .session
592 .call("nvim_tabpage_is_valid", call_args![self.code_data.clone()])
593 .map(map_result)
594 .map_err(map_generic_error)
595 }
596}
597
598impl FromVal<Value> for Buffer {
599 fn from_val(val: Value) -> Self {
600 Buffer::new(val)
601 }
602}
603
604impl<'a> IntoVal<Value> for &'a Buffer {
605 fn into_val(self) -> Value {
606 self.code_data.clone()
607 }
608}
609impl FromVal<Value> for Window {
610 fn from_val(val: Value) -> Self {
611 Window::new(val)
612 }
613}
614
615impl<'a> IntoVal<Value> for &'a Window {
616 fn into_val(self) -> Value {
617 self.code_data.clone()
618 }
619}
620impl FromVal<Value> for Tabpage {
621 fn from_val(val: Value) -> Self {
622 Tabpage::new(val)
623 }
624}
625
626impl<'a> IntoVal<Value> for &'a Tabpage {
627 fn into_val(self) -> Value {
628 self.code_data.clone()
629 }
630}
631
632pub trait NeovimApi {
633 fn ui_detach(&mut self) -> Result<(), CallError>;
635 fn ui_try_resize(&mut self, width: i64, height: i64) -> Result<(), CallError>;
637 fn ui_set_option(&mut self, name: &str, value: Value) -> Result<(), CallError>;
639 fn command(&mut self, command: &str) -> Result<(), CallError>;
641 fn get_hl_by_name(&mut self, name: &str, rgb: bool) -> Result<Vec<(Value, Value)>, CallError>;
643 fn get_hl_by_id(&mut self, hl_id: i64, rgb: bool) -> Result<Vec<(Value, Value)>, CallError>;
645 fn feedkeys(&mut self, keys: &str, mode: &str, escape_csi: bool) -> Result<(), CallError>;
647 fn input(&mut self, keys: &str) -> Result<i64, CallError>;
649 fn replace_termcodes(
651 &mut self,
652 str: &str,
653 from_part: bool,
654 do_lt: bool,
655 special: bool,
656 ) -> Result<String, CallError>;
657 fn command_output(&mut self, command: &str) -> Result<String, CallError>;
659 fn eval(&mut self, expr: &str) -> Result<Value, CallError>;
661 fn execute_lua(&mut self, code: &str, args: Vec<Value>) -> Result<Value, CallError>;
663 fn call_function(&mut self, fname: &str, args: Vec<Value>) -> Result<Value, CallError>;
665 fn call_dict_function(
667 &mut self,
668 dict: Value,
669 fname: &str,
670 args: Vec<Value>,
671 ) -> Result<Value, CallError>;
672 fn strwidth(&mut self, text: &str) -> Result<i64, CallError>;
674 fn list_runtime_paths(&mut self) -> Result<Vec<String>, CallError>;
676 fn set_current_dir(&mut self, dir: &str) -> Result<(), CallError>;
678 fn get_current_line(&mut self) -> Result<String, CallError>;
680 fn set_current_line(&mut self, line: &str) -> Result<(), CallError>;
682 fn del_current_line(&mut self) -> Result<(), CallError>;
684 fn get_var(&mut self, name: &str) -> Result<Value, CallError>;
686 fn set_var(&mut self, name: &str, value: Value) -> Result<(), CallError>;
688 fn del_var(&mut self, name: &str) -> Result<(), CallError>;
690 fn get_vvar(&mut self, name: &str) -> Result<Value, CallError>;
692 fn get_option(&mut self, name: &str) -> Result<Value, CallError>;
694 fn set_option(&mut self, name: &str, value: Value) -> Result<(), CallError>;
696 fn out_write(&mut self, str: &str) -> Result<(), CallError>;
698 fn err_write(&mut self, str: &str) -> Result<(), CallError>;
700 fn err_writeln(&mut self, str: &str) -> Result<(), CallError>;
702 fn list_bufs(&mut self) -> Result<Vec<Buffer>, CallError>;
704 fn get_current_buf(&mut self) -> Result<Buffer, CallError>;
706 fn set_current_buf(&mut self, buffer: &Buffer) -> Result<(), CallError>;
708 fn list_wins(&mut self) -> Result<Vec<Window>, CallError>;
710 fn get_current_win(&mut self) -> Result<Window, CallError>;
712 fn set_current_win(&mut self, window: &Window) -> Result<(), CallError>;
714 fn list_tabpages(&mut self) -> Result<Vec<Tabpage>, CallError>;
716 fn get_current_tabpage(&mut self) -> Result<Tabpage, CallError>;
718 fn set_current_tabpage(&mut self, tabpage: &Tabpage) -> Result<(), CallError>;
720 fn create_namespace(&mut self, name: &str) -> Result<i64, CallError>;
722 fn get_namespaces(&mut self) -> Result<Vec<(Value, Value)>, CallError>;
724 fn subscribe(&mut self, event: &str) -> Result<(), CallError>;
726 fn unsubscribe(&mut self, event: &str) -> Result<(), CallError>;
728 fn get_color_by_name(&mut self, name: &str) -> Result<i64, CallError>;
730 fn get_color_map(&mut self) -> Result<Vec<(Value, Value)>, CallError>;
732 fn get_mode(&mut self) -> Result<Vec<(Value, Value)>, CallError>;
734 fn get_keymap(&mut self, mode: &str) -> Result<Vec<Vec<(Value, Value)>>, CallError>;
736 fn get_commands(&mut self, opts: Vec<(Value, Value)>)
738 -> Result<Vec<(Value, Value)>, CallError>;
739 fn get_api_info(&mut self) -> Result<Vec<Value>, CallError>;
741 fn set_client_info(
743 &mut self,
744 name: &str,
745 version: Vec<(Value, Value)>,
746 typ: &str,
747 methods: Vec<(Value, Value)>,
748 attributes: Vec<(Value, Value)>,
749 ) -> Result<(), CallError>;
750 fn get_chan_info(&mut self, chan: i64) -> Result<Vec<(Value, Value)>, CallError>;
752 fn list_chans(&mut self) -> Result<Vec<Value>, CallError>;
754 fn call_atomic(&mut self, calls: Vec<Value>) -> Result<Vec<Value>, CallError>;
756 fn parse_expression(
758 &mut self,
759 expr: &str,
760 flags: &str,
761 highlight: bool,
762 ) -> Result<Vec<(Value, Value)>, CallError>;
763 fn list_uis(&mut self) -> Result<Vec<Value>, CallError>;
765 fn get_proc_children(&mut self, pid: i64) -> Result<Vec<Value>, CallError>;
767 fn get_proc(&mut self, pid: i64) -> Result<Value, CallError>;
769}
770
771impl NeovimApi for Neovim {
772 fn ui_detach(&mut self) -> Result<(), CallError> {
773 self.session
774 .call("nvim_ui_detach", call_args![])
775 .map(map_result)
776 .map_err(map_generic_error)
777 }
778
779 fn ui_try_resize(&mut self, width: i64, height: i64) -> Result<(), CallError> {
780 self.session
781 .call("nvim_ui_try_resize", call_args![width, height])
782 .map(map_result)
783 .map_err(map_generic_error)
784 }
785
786 fn ui_set_option(&mut self, name: &str, value: Value) -> Result<(), CallError> {
787 self.session
788 .call("nvim_ui_set_option", call_args![name, value])
789 .map(map_result)
790 .map_err(map_generic_error)
791 }
792
793 fn command(&mut self, command: &str) -> Result<(), CallError> {
794 self.session
795 .call("nvim_command", call_args![command])
796 .map(map_result)
797 .map_err(map_generic_error)
798 }
799
800 fn get_hl_by_name(&mut self, name: &str, rgb: bool) -> Result<Vec<(Value, Value)>, CallError> {
801 self.session
802 .call("nvim_get_hl_by_name", call_args![name, rgb])
803 .map(map_result)
804 .map_err(map_generic_error)
805 }
806
807 fn get_hl_by_id(&mut self, hl_id: i64, rgb: bool) -> Result<Vec<(Value, Value)>, CallError> {
808 self.session
809 .call("nvim_get_hl_by_id", call_args![hl_id, rgb])
810 .map(map_result)
811 .map_err(map_generic_error)
812 }
813
814 fn feedkeys(&mut self, keys: &str, mode: &str, escape_csi: bool) -> Result<(), CallError> {
815 self.session
816 .call("nvim_feedkeys", call_args![keys, mode, escape_csi])
817 .map(map_result)
818 .map_err(map_generic_error)
819 }
820
821 fn input(&mut self, keys: &str) -> Result<i64, CallError> {
822 self.session
823 .call("nvim_input", call_args![keys])
824 .map(map_result)
825 .map_err(map_generic_error)
826 }
827
828 fn replace_termcodes(
829 &mut self,
830 str: &str,
831 from_part: bool,
832 do_lt: bool,
833 special: bool,
834 ) -> Result<String, CallError> {
835 self.session
836 .call(
837 "nvim_replace_termcodes",
838 call_args![str, from_part, do_lt, special],
839 )
840 .map(map_result)
841 .map_err(map_generic_error)
842 }
843
844 fn command_output(&mut self, command: &str) -> Result<String, CallError> {
845 self.session
846 .call("nvim_command_output", call_args![command])
847 .map(map_result)
848 .map_err(map_generic_error)
849 }
850
851 fn eval(&mut self, expr: &str) -> Result<Value, CallError> {
852 self.session
853 .call("nvim_eval", call_args![expr])
854 .map(map_result)
855 .map_err(map_generic_error)
856 }
857
858 fn execute_lua(&mut self, code: &str, args: Vec<Value>) -> Result<Value, CallError> {
859 self.session
860 .call("nvim_execute_lua", call_args![code, args])
861 .map(map_result)
862 .map_err(map_generic_error)
863 }
864
865 fn call_function(&mut self, fname: &str, args: Vec<Value>) -> Result<Value, CallError> {
866 self.session
867 .call("nvim_call_function", call_args![fname, args])
868 .map(map_result)
869 .map_err(map_generic_error)
870 }
871
872 fn call_dict_function(
873 &mut self,
874 dict: Value,
875 fname: &str,
876 args: Vec<Value>,
877 ) -> Result<Value, CallError> {
878 self.session
879 .call("nvim_call_dict_function", call_args![dict, fname, args])
880 .map(map_result)
881 .map_err(map_generic_error)
882 }
883
884 fn strwidth(&mut self, text: &str) -> Result<i64, CallError> {
885 self.session
886 .call("nvim_strwidth", call_args![text])
887 .map(map_result)
888 .map_err(map_generic_error)
889 }
890
891 fn list_runtime_paths(&mut self) -> Result<Vec<String>, CallError> {
892 self.session
893 .call("nvim_list_runtime_paths", call_args![])
894 .map(map_result)
895 .map_err(map_generic_error)
896 }
897
898 fn set_current_dir(&mut self, dir: &str) -> Result<(), CallError> {
899 self.session
900 .call("nvim_set_current_dir", call_args![dir])
901 .map(map_result)
902 .map_err(map_generic_error)
903 }
904
905 fn get_current_line(&mut self) -> Result<String, CallError> {
906 self.session
907 .call("nvim_get_current_line", call_args![])
908 .map(map_result)
909 .map_err(map_generic_error)
910 }
911
912 fn set_current_line(&mut self, line: &str) -> Result<(), CallError> {
913 self.session
914 .call("nvim_set_current_line", call_args![line])
915 .map(map_result)
916 .map_err(map_generic_error)
917 }
918
919 fn del_current_line(&mut self) -> Result<(), CallError> {
920 self.session
921 .call("nvim_del_current_line", call_args![])
922 .map(map_result)
923 .map_err(map_generic_error)
924 }
925
926 fn get_var(&mut self, name: &str) -> Result<Value, CallError> {
927 self.session
928 .call("nvim_get_var", call_args![name])
929 .map(map_result)
930 .map_err(map_generic_error)
931 }
932
933 fn set_var(&mut self, name: &str, value: Value) -> Result<(), CallError> {
934 self.session
935 .call("nvim_set_var", call_args![name, value])
936 .map(map_result)
937 .map_err(map_generic_error)
938 }
939
940 fn del_var(&mut self, name: &str) -> Result<(), CallError> {
941 self.session
942 .call("nvim_del_var", call_args![name])
943 .map(map_result)
944 .map_err(map_generic_error)
945 }
946
947 fn get_vvar(&mut self, name: &str) -> Result<Value, CallError> {
948 self.session
949 .call("nvim_get_vvar", call_args![name])
950 .map(map_result)
951 .map_err(map_generic_error)
952 }
953
954 fn get_option(&mut self, name: &str) -> Result<Value, CallError> {
955 self.session
956 .call("nvim_get_option", call_args![name])
957 .map(map_result)
958 .map_err(map_generic_error)
959 }
960
961 fn set_option(&mut self, name: &str, value: Value) -> Result<(), CallError> {
962 self.session
963 .call("nvim_set_option", call_args![name, value])
964 .map(map_result)
965 .map_err(map_generic_error)
966 }
967
968 fn out_write(&mut self, str: &str) -> Result<(), CallError> {
969 self.session
970 .call("nvim_out_write", call_args![str])
971 .map(map_result)
972 .map_err(map_generic_error)
973 }
974
975 fn err_write(&mut self, str: &str) -> Result<(), CallError> {
976 self.session
977 .call("nvim_err_write", call_args![str])
978 .map(map_result)
979 .map_err(map_generic_error)
980 }
981
982 fn err_writeln(&mut self, str: &str) -> Result<(), CallError> {
983 self.session
984 .call("nvim_err_writeln", call_args![str])
985 .map(map_result)
986 .map_err(map_generic_error)
987 }
988
989 fn list_bufs(&mut self) -> Result<Vec<Buffer>, CallError> {
990 self.session
991 .call("nvim_list_bufs", call_args![])
992 .map(map_result)
993 .map_err(map_generic_error)
994 }
995
996 fn get_current_buf(&mut self) -> Result<Buffer, CallError> {
997 self.session
998 .call("nvim_get_current_buf", call_args![])
999 .map(map_result)
1000 .map_err(map_generic_error)
1001 }
1002
1003 fn set_current_buf(&mut self, buffer: &Buffer) -> Result<(), CallError> {
1004 self.session
1005 .call("nvim_set_current_buf", call_args![buffer])
1006 .map(map_result)
1007 .map_err(map_generic_error)
1008 }
1009
1010 fn list_wins(&mut self) -> Result<Vec<Window>, CallError> {
1011 self.session
1012 .call("nvim_list_wins", call_args![])
1013 .map(map_result)
1014 .map_err(map_generic_error)
1015 }
1016
1017 fn get_current_win(&mut self) -> Result<Window, CallError> {
1018 self.session
1019 .call("nvim_get_current_win", call_args![])
1020 .map(map_result)
1021 .map_err(map_generic_error)
1022 }
1023
1024 fn set_current_win(&mut self, window: &Window) -> Result<(), CallError> {
1025 self.session
1026 .call("nvim_set_current_win", call_args![window])
1027 .map(map_result)
1028 .map_err(map_generic_error)
1029 }
1030
1031 fn list_tabpages(&mut self) -> Result<Vec<Tabpage>, CallError> {
1032 self.session
1033 .call("nvim_list_tabpages", call_args![])
1034 .map(map_result)
1035 .map_err(map_generic_error)
1036 }
1037
1038 fn get_current_tabpage(&mut self) -> Result<Tabpage, CallError> {
1039 self.session
1040 .call("nvim_get_current_tabpage", call_args![])
1041 .map(map_result)
1042 .map_err(map_generic_error)
1043 }
1044
1045 fn set_current_tabpage(&mut self, tabpage: &Tabpage) -> Result<(), CallError> {
1046 self.session
1047 .call("nvim_set_current_tabpage", call_args![tabpage])
1048 .map(map_result)
1049 .map_err(map_generic_error)
1050 }
1051
1052 fn create_namespace(&mut self, name: &str) -> Result<i64, CallError> {
1053 self.session
1054 .call("nvim_create_namespace", call_args![name])
1055 .map(map_result)
1056 .map_err(map_generic_error)
1057 }
1058
1059 fn get_namespaces(&mut self) -> Result<Vec<(Value, Value)>, CallError> {
1060 self.session
1061 .call("nvim_get_namespaces", call_args![])
1062 .map(map_result)
1063 .map_err(map_generic_error)
1064 }
1065
1066 fn subscribe(&mut self, event: &str) -> Result<(), CallError> {
1067 self.session
1068 .call("nvim_subscribe", call_args![event])
1069 .map(map_result)
1070 .map_err(map_generic_error)
1071 }
1072
1073 fn unsubscribe(&mut self, event: &str) -> Result<(), CallError> {
1074 self.session
1075 .call("nvim_unsubscribe", call_args![event])
1076 .map(map_result)
1077 .map_err(map_generic_error)
1078 }
1079
1080 fn get_color_by_name(&mut self, name: &str) -> Result<i64, CallError> {
1081 self.session
1082 .call("nvim_get_color_by_name", call_args![name])
1083 .map(map_result)
1084 .map_err(map_generic_error)
1085 }
1086
1087 fn get_color_map(&mut self) -> Result<Vec<(Value, Value)>, CallError> {
1088 self.session
1089 .call("nvim_get_color_map", call_args![])
1090 .map(map_result)
1091 .map_err(map_generic_error)
1092 }
1093
1094 fn get_mode(&mut self) -> Result<Vec<(Value, Value)>, CallError> {
1095 self.session
1096 .call("nvim_get_mode", call_args![])
1097 .map(map_result)
1098 .map_err(map_generic_error)
1099 }
1100
1101 fn get_keymap(&mut self, mode: &str) -> Result<Vec<Vec<(Value, Value)>>, CallError> {
1102 self.session
1103 .call("nvim_get_keymap", call_args![mode])
1104 .map(map_result)
1105 .map_err(map_generic_error)
1106 }
1107
1108 fn get_commands(
1109 &mut self,
1110 opts: Vec<(Value, Value)>,
1111 ) -> Result<Vec<(Value, Value)>, CallError> {
1112 self.session
1113 .call("nvim_get_commands", call_args![opts])
1114 .map(map_result)
1115 .map_err(map_generic_error)
1116 }
1117
1118 fn get_api_info(&mut self) -> Result<Vec<Value>, CallError> {
1119 self.session
1120 .call("nvim_get_api_info", call_args![])
1121 .map(map_result)
1122 .map_err(map_generic_error)
1123 }
1124
1125 fn set_client_info(
1126 &mut self,
1127 name: &str,
1128 version: Vec<(Value, Value)>,
1129 typ: &str,
1130 methods: Vec<(Value, Value)>,
1131 attributes: Vec<(Value, Value)>,
1132 ) -> Result<(), CallError> {
1133 self.session
1134 .call(
1135 "nvim_set_client_info",
1136 call_args![name, version, typ, methods, attributes],
1137 )
1138 .map(map_result)
1139 .map_err(map_generic_error)
1140 }
1141
1142 fn get_chan_info(&mut self, chan: i64) -> Result<Vec<(Value, Value)>, CallError> {
1143 self.session
1144 .call("nvim_get_chan_info", call_args![chan])
1145 .map(map_result)
1146 .map_err(map_generic_error)
1147 }
1148
1149 fn list_chans(&mut self) -> Result<Vec<Value>, CallError> {
1150 self.session
1151 .call("nvim_list_chans", call_args![])
1152 .map(map_result)
1153 .map_err(map_generic_error)
1154 }
1155
1156 fn call_atomic(&mut self, calls: Vec<Value>) -> Result<Vec<Value>, CallError> {
1157 self.session
1158 .call("nvim_call_atomic", call_args![calls])
1159 .map(map_result)
1160 .map_err(map_generic_error)
1161 }
1162
1163 fn parse_expression(
1164 &mut self,
1165 expr: &str,
1166 flags: &str,
1167 highlight: bool,
1168 ) -> Result<Vec<(Value, Value)>, CallError> {
1169 self.session
1170 .call("nvim_parse_expression", call_args![expr, flags, highlight])
1171 .map(map_result)
1172 .map_err(map_generic_error)
1173 }
1174
1175 fn list_uis(&mut self) -> Result<Vec<Value>, CallError> {
1176 self.session
1177 .call("nvim_list_uis", call_args![])
1178 .map(map_result)
1179 .map_err(map_generic_error)
1180 }
1181
1182 fn get_proc_children(&mut self, pid: i64) -> Result<Vec<Value>, CallError> {
1183 self.session
1184 .call("nvim_get_proc_children", call_args![pid])
1185 .map(map_result)
1186 .map_err(map_generic_error)
1187 }
1188
1189 fn get_proc(&mut self, pid: i64) -> Result<Value, CallError> {
1190 self.session
1191 .call("nvim_get_proc", call_args![pid])
1192 .map(map_result)
1193 .map_err(map_generic_error)
1194 }
1195}