summaryrefslogtreecommitdiff
path: root/support/texlab/crates/texlab/src/features/folding.rs
blob: 36690212010d5ae881276e95c034dafa930ce1d9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
use base_db::Workspace;

use crate::util::{from_proto, to_proto, ClientFlags};

pub fn find_all(
    workspace: &Workspace,
    params: lsp_types::FoldingRangeParams,
    client_flags: &ClientFlags,
) -> Option<Vec<serde_json::Value>> {
    let params = from_proto::feature_params(workspace, params.text_document)?;

    let foldings = folding::find_all(params.document)
        .into_iter()
        .filter_map(|folding| {
            to_proto::folding_range(folding, &params.document.line_index, client_flags)
        })
        .collect();

    Some(foldings)
}