nvim_api/types/
channel_infos.rs1use nvim_types::{
2 conversion::{self, FromObject},
3 serde::Deserializer,
4 Object,
5};
6use serde::Deserialize;
7
8use super::ClientInfos;
9use crate::Buffer;
10
11#[non_exhaustive]
12#[derive(Clone, Debug, Eq, PartialEq, Deserialize)]
13pub struct ChannelInfos {
14 pub argv: Option<Vec<String>>,
16
17 pub buffer: Option<Buffer>,
20
21 pub client: Option<ClientInfos>,
24
25 pub id: u32,
27
28 pub mode: ChannelMode,
30
31 pub pty: Option<String>,
35
36 pub stream: ChannelStream,
38}
39
40#[non_exhaustive]
41#[derive(Clone, Debug, Eq, PartialEq, Hash, Deserialize)]
42#[serde(rename_all = "lowercase")]
43pub enum ChannelStream {
44 Job,
45 Socket,
46 StdErr,
47 StdIo,
48}
49
50#[non_exhaustive]
51#[derive(Clone, Debug, Eq, PartialEq, Hash, Deserialize)]
52#[serde(rename_all = "lowercase")]
53pub enum ChannelMode {
54 Bytes,
55 Rpc,
56 Terminal,
57}
58
59impl FromObject for ChannelInfos {
60 fn from_object(obj: Object) -> Result<Self, conversion::Error> {
61 Self::deserialize(Deserializer::new(obj)).map_err(Into::into)
62 }
63}