From 316795e074dff8f627f8c70c85d236420ecfb3a6 Mon Sep 17 00:00:00 2001 From: Kirill Bulatov Date: Tue, 24 Dec 2019 02:19:09 +0200 Subject: Initial auto import action implementation --- crates/ra_ide/src/assists.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'crates/ra_ide/src/assists.rs') diff --git a/crates/ra_ide/src/assists.rs b/crates/ra_ide/src/assists.rs index a936900da..c43c45c65 100644 --- a/crates/ra_ide/src/assists.rs +++ b/crates/ra_ide/src/assists.rs @@ -2,8 +2,9 @@ use ra_db::{FilePosition, FileRange}; -use crate::{db::RootDatabase, FileId, SourceChange, SourceFileEdit}; - +use crate::{ + db::RootDatabase, imports_locator::ImportsLocatorIde, FileId, SourceChange, SourceFileEdit, +}; use either::Either; pub use ra_assists::AssistId; use ra_assists::{AssistAction, AssistLabel}; @@ -16,7 +17,7 @@ pub struct Assist { } pub(crate) fn assists(db: &RootDatabase, frange: FileRange) -> Vec { - ra_assists::assists(db, frange) + ra_assists::assists_with_imports_locator(db, frange, ImportsLocatorIde::new(db)) .into_iter() .map(|assist| { let file_id = frange.file_id; -- cgit v1.2.3 From 88267c86c0c49de395973574d2516ab904091cfb Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 6 Feb 2020 12:52:32 +0100 Subject: cleanup imports --- crates/ra_ide/src/assists.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'crates/ra_ide/src/assists.rs') diff --git a/crates/ra_ide/src/assists.rs b/crates/ra_ide/src/assists.rs index c43c45c65..f26047570 100644 --- a/crates/ra_ide/src/assists.rs +++ b/crates/ra_ide/src/assists.rs @@ -1,13 +1,13 @@ //! FIXME: write short doc here +use either::Either; +use ra_assists::{AssistAction, AssistLabel}; use ra_db::{FilePosition, FileRange}; +use ra_ide_db::RootDatabase; + +use crate::{imports_locator::ImportsLocatorIde, FileId, SourceChange, SourceFileEdit}; -use crate::{ - db::RootDatabase, imports_locator::ImportsLocatorIde, FileId, SourceChange, SourceFileEdit, -}; -use either::Either; pub use ra_assists::AssistId; -use ra_assists::{AssistAction, AssistLabel}; #[derive(Debug)] pub struct Assist { -- cgit v1.2.3 From dfbe96750b69fc69e64f3a6094e2c1d574ab42fa Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 6 Feb 2020 16:26:43 +0100 Subject: Move imports locator to ide_db --- crates/ra_ide/src/assists.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'crates/ra_ide/src/assists.rs') diff --git a/crates/ra_ide/src/assists.rs b/crates/ra_ide/src/assists.rs index f26047570..4a7d8cfa9 100644 --- a/crates/ra_ide/src/assists.rs +++ b/crates/ra_ide/src/assists.rs @@ -3,9 +3,9 @@ use either::Either; use ra_assists::{AssistAction, AssistLabel}; use ra_db::{FilePosition, FileRange}; -use ra_ide_db::RootDatabase; +use ra_ide_db::{imports_locator::ImportsLocatorIde, RootDatabase}; -use crate::{imports_locator::ImportsLocatorIde, FileId, SourceChange, SourceFileEdit}; +use crate::{FileId, SourceChange, SourceFileEdit}; pub use ra_assists::AssistId; -- cgit v1.2.3 From a173e31890c1eb03d9d4c123986baae4154cd4fa Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 6 Feb 2020 16:40:28 +0100 Subject: Make assists use ImportsLocator directly --- crates/ra_ide/src/assists.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'crates/ra_ide/src/assists.rs') diff --git a/crates/ra_ide/src/assists.rs b/crates/ra_ide/src/assists.rs index 4a7d8cfa9..6ee617e79 100644 --- a/crates/ra_ide/src/assists.rs +++ b/crates/ra_ide/src/assists.rs @@ -3,7 +3,7 @@ use either::Either; use ra_assists::{AssistAction, AssistLabel}; use ra_db::{FilePosition, FileRange}; -use ra_ide_db::{imports_locator::ImportsLocatorIde, RootDatabase}; +use ra_ide_db::RootDatabase; use crate::{FileId, SourceChange, SourceFileEdit}; @@ -17,7 +17,7 @@ pub struct Assist { } pub(crate) fn assists(db: &RootDatabase, frange: FileRange) -> Vec { - ra_assists::assists_with_imports_locator(db, frange, ImportsLocatorIde::new(db)) + ra_assists::assists_with_imports_locator(db, frange) .into_iter() .map(|assist| { let file_id = frange.file_id; -- cgit v1.2.3 From ad204f7562747150c4f570d7ce648f2539530b76 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 6 Feb 2020 17:17:51 +0100 Subject: Mostly remove ImoportLocator infra --- crates/ra_ide/src/assists.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'crates/ra_ide/src/assists.rs') diff --git a/crates/ra_ide/src/assists.rs b/crates/ra_ide/src/assists.rs index 6ee617e79..c3b2c638b 100644 --- a/crates/ra_ide/src/assists.rs +++ b/crates/ra_ide/src/assists.rs @@ -17,7 +17,7 @@ pub struct Assist { } pub(crate) fn assists(db: &RootDatabase, frange: FileRange) -> Vec { - ra_assists::assists_with_imports_locator(db, frange) + ra_assists::assists(db, frange) .into_iter() .map(|assist| { let file_id = frange.file_id; -- cgit v1.2.3 From 7e73b7a5f8d594a85627786a13e76d9d70163770 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 6 Feb 2020 18:46:11 +0100 Subject: Minor rename --- crates/ra_ide/src/assists.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'crates/ra_ide/src/assists.rs') diff --git a/crates/ra_ide/src/assists.rs b/crates/ra_ide/src/assists.rs index c3b2c638b..b60b1a60d 100644 --- a/crates/ra_ide/src/assists.rs +++ b/crates/ra_ide/src/assists.rs @@ -1,7 +1,7 @@ //! FIXME: write short doc here use either::Either; -use ra_assists::{AssistAction, AssistLabel}; +use ra_assists::{resolved_assists, AssistAction, AssistLabel}; use ra_db::{FilePosition, FileRange}; use ra_ide_db::RootDatabase; @@ -17,7 +17,7 @@ pub struct Assist { } pub(crate) fn assists(db: &RootDatabase, frange: FileRange) -> Vec { - ra_assists::assists(db, frange) + resolved_assists(db, frange) .into_iter() .map(|assist| { let file_id = frange.file_id; -- cgit v1.2.3 From 9769c5140c9c406a4cc880e698593a6c4bcc6826 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sun, 9 Feb 2020 15:32:53 +0100 Subject: Simplify Assists interface Instead of building a physical tree structure, just "tag" related assists with the same group --- crates/ra_ide/src/assists.rs | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) (limited to 'crates/ra_ide/src/assists.rs') diff --git a/crates/ra_ide/src/assists.rs b/crates/ra_ide/src/assists.rs index b60b1a60d..40d56a4f7 100644 --- a/crates/ra_ide/src/assists.rs +++ b/crates/ra_ide/src/assists.rs @@ -1,6 +1,5 @@ //! FIXME: write short doc here -use either::Either; use ra_assists::{resolved_assists, AssistAction, AssistLabel}; use ra_db::{FilePosition, FileRange}; use ra_ide_db::RootDatabase; @@ -13,7 +12,8 @@ pub use ra_assists::AssistId; pub struct Assist { pub id: AssistId, pub label: String, - pub change_data: Either>, + pub group_label: Option, + pub source_change: SourceChange, } pub(crate) fn assists(db: &RootDatabase, frange: FileRange) -> Vec { @@ -25,17 +25,8 @@ pub(crate) fn assists(db: &RootDatabase, frange: FileRange) -> Vec { Assist { id: assist_label.id, label: assist_label.label.clone(), - change_data: match assist.action_data { - Either::Left(action) => { - Either::Left(action_to_edit(action, file_id, assist_label)) - } - Either::Right(actions) => Either::Right( - actions - .into_iter() - .map(|action| action_to_edit(action, file_id, assist_label)) - .collect(), - ), - }, + group_label: assist.group_label.map(|it| it.0), + source_change: action_to_edit(assist.action, file_id, assist_label), } }) .collect() @@ -47,9 +38,6 @@ fn action_to_edit( assist_label: &AssistLabel, ) -> SourceChange { let file_edit = SourceFileEdit { file_id, edit: action.edit }; - SourceChange::source_file_edit( - action.label.unwrap_or_else(|| assist_label.label.clone()), - file_edit, - ) - .with_cursor_opt(action.cursor_position.map(|offset| FilePosition { offset, file_id })) + SourceChange::source_file_edit(assist_label.label.clone(), file_edit) + .with_cursor_opt(action.cursor_position.map(|offset| FilePosition { offset, file_id })) } -- cgit v1.2.3