A simple CPU rendered GUI IDE experience.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
use std::path::PathBuf;
use std::sync::Arc;
use std::thread::JoinHandle;

use lsp_types::request::*;
use lsp_types::*;
use tokio::sync::oneshot::Sender;

use crate::bar::Bar;
use crate::hov::Hovr;
use crate::lsp::{Client, RequestError, Rq, RqS};
use crate::text::TextArea;
use crate::{ClickHistory, CompletionState, Hist, State};
#[derive(Default)]
pub struct Editor {
    text: TextArea,
    origin: Option<PathBuf>,
    state: State,
    bar: Bar,
    workspace: Option<PathBuf>,
    lsp: Option<(
        &'static Client,
        JoinHandle<()>,
        Sender<Arc<winit::window::Window>>,
    )>,
    tree: Option<Vec<PathBuf>>,
    hovering: Rq<Hovr, Option<Hovr>, (usize, usize), anyhow::Error>,
    document_highlights: Rq<
        Vec<DocumentHighlight>,
        Vec<DocumentHighlight>,
        (),
        RequestError<DocumentHighlightRequest>,
    >,
    complete: CompletionState,
    sig_help: Rq<
        (SignatureHelp, usize, Option<usize>),
        Option<SignatureHelp>,
        (),
        RequestError<SignatureHelpRequest>,
    >, // vo, lines
    semantic_tokens: Rq<
        Box<[SemanticToken]>,
        Box<[SemanticToken]>,
        (),
        RequestError<SemanticTokensFullRequest>,
    >,
    diag: Rq<String, Option<String>, (), anyhow::Error>,
    inlay: Rq<
        Vec<InlayHint>,
        Vec<InlayHint>,
        (),
        RequestError<lsp_request!("textDocument/inlayHint")>,
    >,
    def: Rq<
        LocationLink,
        Option<GotoDefinitionResponse>,
        (usize, usize),
        RequestError<lsp_request!("textDocument/definition")>,
    >,
    chist: ClickHistory,
    hist: Hist,
    mtime: Option<std::time::SystemTime>,
}

impl Editor {}