nvim_api/types/
extmark_infos.rs1use nvim_types::{
2 conversion::{self, FromObject},
3 serde::Deserializer,
4 Object,
5};
6use serde::Deserialize;
7
8use super::{ExtmarkHlMode, ExtmarkVirtTextPosition};
9
10#[non_exhaustive]
12#[derive(Clone, Debug, Eq, PartialEq, Hash, Deserialize)]
13pub struct ExtmarkInfos {
14 #[serde(default)]
15 pub end_col: Option<usize>,
16
17 #[serde(default)]
18 pub end_right_gravity: Option<bool>,
19
20 #[serde(default)]
21 pub end_row: Option<usize>,
22
23 #[serde(default)]
24 pub hl_eol: Option<bool>,
25
26 #[serde(default)]
27 pub hl_group: Option<String>,
28
29 #[serde(default)]
30 pub hl_mode: Option<ExtmarkHlMode>,
31
32 #[serde(default)]
33 pub priority: Option<u32>,
34
35 pub right_gravity: bool,
36
37 #[serde(default)]
38 pub ui_watched: Option<bool>,
39
40 #[serde(default)]
41 pub virt_lines: Option<Vec<Vec<(String, String)>>>,
42
43 #[serde(default)]
44 pub virt_lines_above: Option<bool>,
45
46 #[serde(default)]
47 pub virt_lines_leftcol: Option<bool>,
48
49 #[serde(default)]
50 pub virt_text: Option<Vec<(String, String)>>,
51
52 #[serde(default)]
53 pub virt_text_hide: Option<bool>,
54
55 #[serde(default)]
56 pub virt_text_pos: Option<ExtmarkVirtTextPosition>,
57
58 #[serde(default)]
59 pub virt_text_win_col: Option<i64>,
60}
61
62impl FromObject for ExtmarkInfos {
63 fn from_object(obj: Object) -> Result<Self, conversion::Error> {
64 Self::deserialize(Deserializer::new(obj)).map_err(Into::into)
65 }
66}