nvim_api/types/
extmark_infos.rs

1use nvim_types::{
2    conversion::{self, FromObject},
3    serde::Deserializer,
4    Object,
5};
6use serde::Deserialize;
7
8use super::{ExtmarkHlMode, ExtmarkVirtTextPosition};
9
10/// Extmark infos returned by `Buffer::get_extmark_by_id`.
11#[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}