diff options
Diffstat (limited to 'crates')
-rw-r--r-- | crates/libeditor/src/code_actions.rs | 11 | ||||
-rw-r--r-- | crates/libeditor/src/lib.rs | 2 | ||||
-rw-r--r-- | crates/libeditor/tests/test.rs | 6 | ||||
-rw-r--r-- | crates/server/src/main_loop/handlers.rs | 9 |
4 files changed, 10 insertions, 18 deletions
diff --git a/crates/libeditor/src/code_actions.rs b/crates/libeditor/src/code_actions.rs index 80c396337..500d52c2a 100644 --- a/crates/libeditor/src/code_actions.rs +++ b/crates/libeditor/src/code_actions.rs | |||
@@ -11,12 +11,7 @@ use libsyntax2::{ | |||
11 | 11 | ||
12 | pub struct ActionResult { | 12 | pub struct ActionResult { |
13 | pub edit: Edit, | 13 | pub edit: Edit, |
14 | pub cursor_position: CursorPosition, | 14 | pub cursor_position: Option<TextUnit>, |
15 | } | ||
16 | |||
17 | pub enum CursorPosition { | ||
18 | Same, | ||
19 | Offset(TextUnit), | ||
20 | } | 15 | } |
21 | 16 | ||
22 | pub fn flip_comma<'a>(file: &'a ParsedFile, offset: TextUnit) -> Option<impl FnOnce() -> ActionResult + 'a> { | 17 | pub fn flip_comma<'a>(file: &'a ParsedFile, offset: TextUnit) -> Option<impl FnOnce() -> ActionResult + 'a> { |
@@ -31,7 +26,7 @@ pub fn flip_comma<'a>(file: &'a ParsedFile, offset: TextUnit) -> Option<impl FnO | |||
31 | edit.replace(right.range(), left.text()); | 26 | edit.replace(right.range(), left.text()); |
32 | ActionResult { | 27 | ActionResult { |
33 | edit: edit.finish(), | 28 | edit: edit.finish(), |
34 | cursor_position: CursorPosition::Same, | 29 | cursor_position: None, |
35 | } | 30 | } |
36 | }) | 31 | }) |
37 | } | 32 | } |
@@ -58,7 +53,7 @@ pub fn add_derive<'a>(file: &'a ParsedFile, offset: TextUnit) -> Option<impl FnO | |||
58 | }; | 53 | }; |
59 | ActionResult { | 54 | ActionResult { |
60 | edit: edit.finish(), | 55 | edit: edit.finish(), |
61 | cursor_position: CursorPosition::Offset(offset), | 56 | cursor_position: Some(offset), |
62 | } | 57 | } |
63 | }) | 58 | }) |
64 | } | 59 | } |
diff --git a/crates/libeditor/src/lib.rs b/crates/libeditor/src/lib.rs index abd104af2..12d0a30dd 100644 --- a/crates/libeditor/src/lib.rs +++ b/crates/libeditor/src/lib.rs | |||
@@ -21,7 +21,7 @@ pub use self::{ | |||
21 | symbols::{StructureNode, file_structure, FileSymbol, file_symbols}, | 21 | symbols::{StructureNode, file_structure, FileSymbol, file_symbols}, |
22 | edit::{EditBuilder, Edit, AtomEdit}, | 22 | edit::{EditBuilder, Edit, AtomEdit}, |
23 | code_actions::{ | 23 | code_actions::{ |
24 | ActionResult, CursorPosition, find_node, | 24 | ActionResult, find_node, |
25 | flip_comma, add_derive, | 25 | flip_comma, add_derive, |
26 | }, | 26 | }, |
27 | }; | 27 | }; |
diff --git a/crates/libeditor/tests/test.rs b/crates/libeditor/tests/test.rs index f8365949e..4f4b4b773 100644 --- a/crates/libeditor/tests/test.rs +++ b/crates/libeditor/tests/test.rs | |||
@@ -5,7 +5,7 @@ extern crate assert_eq_text; | |||
5 | 5 | ||
6 | use assert_eq_text::{assert_eq_dbg}; | 6 | use assert_eq_text::{assert_eq_dbg}; |
7 | use libeditor::{ | 7 | use libeditor::{ |
8 | ParsedFile, TextUnit, TextRange, ActionResult, CursorPosition, | 8 | ParsedFile, TextUnit, TextRange, ActionResult, |
9 | highlight, runnables, extend_selection, file_structure, | 9 | highlight, runnables, extend_selection, file_structure, |
10 | flip_comma, add_derive, matching_brace, | 10 | flip_comma, add_derive, matching_brace, |
11 | }; | 11 | }; |
@@ -177,8 +177,8 @@ fn check_action<F: Fn(&ParsedFile, TextUnit) -> Option<ActionResult>>( | |||
177 | let result = f(&file, before_cursor_pos).expect("code action is not applicable"); | 177 | let result = f(&file, before_cursor_pos).expect("code action is not applicable"); |
178 | let actual = result.edit.apply(&before); | 178 | let actual = result.edit.apply(&before); |
179 | let actual_cursor_pos = match result.cursor_position { | 179 | let actual_cursor_pos = match result.cursor_position { |
180 | CursorPosition::Same => result.edit.apply_to_offset(before_cursor_pos).unwrap(), | 180 | None => result.edit.apply_to_offset(before_cursor_pos).unwrap(), |
181 | CursorPosition::Offset(off) => off, | 181 | Some(off) => off, |
182 | }; | 182 | }; |
183 | let actual = add_cursor(&actual, actual_cursor_pos); | 183 | let actual = add_cursor(&actual, actual_cursor_pos); |
184 | assert_eq_text!(after, &actual); | 184 | assert_eq_text!(after, &actual); |
diff --git a/crates/server/src/main_loop/handlers.rs b/crates/server/src/main_loop/handlers.rs index 16cc92464..9ff821a8b 100644 --- a/crates/server/src/main_loop/handlers.rs +++ b/crates/server/src/main_loop/handlers.rs | |||
@@ -6,7 +6,7 @@ use languageserver_types::{ | |||
6 | SymbolInformation, Position, Location, | 6 | SymbolInformation, Position, Location, |
7 | }; | 7 | }; |
8 | use libanalysis::{Query}; | 8 | use libanalysis::{Query}; |
9 | use libeditor::{self, CursorPosition}; | 9 | use libeditor; |
10 | use libsyntax2::TextUnit; | 10 | use libsyntax2::TextUnit; |
11 | use serde_json::{to_value, from_value}; | 11 | use serde_json::{to_value, from_value}; |
12 | 12 | ||
@@ -230,11 +230,8 @@ pub fn handle_execute_command( | |||
230 | document_changes: None, | 230 | document_changes: None, |
231 | }; | 231 | }; |
232 | let edit = req::ApplyWorkspaceEditParams { edit }; | 232 | let edit = req::ApplyWorkspaceEditParams { edit }; |
233 | let cursor_pos = match action_result.cursor_position { | 233 | let cursor_pos = action_result.cursor_position |
234 | CursorPosition::Same => None, | 234 | .map(|off| off.conv_with(&line_index)); |
235 | CursorPosition::Offset(offset) => Some(offset.conv_with(&line_index)), | ||
236 | }; | ||
237 | |||
238 | Ok((edit, cursor_pos)) | 235 | Ok((edit, cursor_pos)) |
239 | } | 236 | } |
240 | 237 | ||