aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide_api/src/assists.rs
blob: e00589733b7a6c96173b03cabe26452523ac9442 (plain)
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
//! FIXME: write short doc here

use ra_db::{FilePosition, FileRange};

use crate::{db::RootDatabase, SourceChange, SourceFileEdit};

pub use ra_assists::AssistId;

#[derive(Debug)]
pub struct Assist {
    pub id: AssistId,
    pub change: SourceChange,
}

pub(crate) fn assists(db: &RootDatabase, frange: FileRange) -> Vec<Assist> {
    ra_assists::assists(db, frange)
        .into_iter()
        .map(|(label, action)| {
            let file_id = frange.file_id;
            let file_edit = SourceFileEdit { file_id, edit: action.edit };
            let id = label.id;
            let change = SourceChange::source_file_edit(label.label, file_edit).with_cursor_opt(
                action.cursor_position.map(|offset| FilePosition { offset, file_id }),
            );
            Assist { id, change }
        })
        .collect()
}