diff options
-rw-r--r-- | crates/ra_lsp_server/src/main_loop.rs | 1 | ||||
-rw-r--r-- | crates/ra_lsp_server/src/main_loop/handlers.rs | 23 | ||||
-rw-r--r-- | crates/ra_lsp_server/src/req.rs | 21 | ||||
-rw-r--r-- | editors/emacs/ra-emacs-lsp.el | 32 |
4 files changed, 4 insertions, 73 deletions
diff --git a/crates/ra_lsp_server/src/main_loop.rs b/crates/ra_lsp_server/src/main_loop.rs index 9d540a87e..b9c99a223 100644 --- a/crates/ra_lsp_server/src/main_loop.rs +++ b/crates/ra_lsp_server/src/main_loop.rs | |||
@@ -346,7 +346,6 @@ fn on_request( | |||
346 | })? | 346 | })? |
347 | .on::<req::AnalyzerStatus>(handlers::handle_analyzer_status)? | 347 | .on::<req::AnalyzerStatus>(handlers::handle_analyzer_status)? |
348 | .on::<req::SyntaxTree>(handlers::handle_syntax_tree)? | 348 | .on::<req::SyntaxTree>(handlers::handle_syntax_tree)? |
349 | .on::<req::ExtendSelection>(handlers::handle_extend_selection)? | ||
350 | .on::<req::OnTypeFormatting>(handlers::handle_on_type_formatting)? | 349 | .on::<req::OnTypeFormatting>(handlers::handle_on_type_formatting)? |
351 | .on::<req::DocumentSymbolRequest>(handlers::handle_document_symbol)? | 350 | .on::<req::DocumentSymbolRequest>(handlers::handle_document_symbol)? |
352 | .on::<req::WorkspaceSymbol>(handlers::handle_workspace_symbol)? | 351 | .on::<req::WorkspaceSymbol>(handlers::handle_workspace_symbol)? |
diff --git a/crates/ra_lsp_server/src/main_loop/handlers.rs b/crates/ra_lsp_server/src/main_loop/handlers.rs index 4ac051c96..a3d3f167c 100644 --- a/crates/ra_lsp_server/src/main_loop/handlers.rs +++ b/crates/ra_lsp_server/src/main_loop/handlers.rs | |||
@@ -9,7 +9,7 @@ use lsp_types::{ | |||
9 | TextEdit, WorkspaceEdit, | 9 | TextEdit, WorkspaceEdit, |
10 | }; | 10 | }; |
11 | use ra_ide_api::{ | 11 | use ra_ide_api::{ |
12 | AssistId, Cancelable, FileId, FilePosition, FileRange, FoldKind, Query, Runnable, RunnableKind, | 12 | AssistId, FileId, FilePosition, FileRange, FoldKind, Query, Runnable, RunnableKind, |
13 | }; | 13 | }; |
14 | use ra_prof::profile; | 14 | use ra_prof::profile; |
15 | use ra_syntax::{AstNode, SyntaxKind, TextRange, TextUnit}; | 15 | use ra_syntax::{AstNode, SyntaxKind, TextRange, TextUnit}; |
@@ -45,27 +45,6 @@ pub fn handle_syntax_tree(world: WorldSnapshot, params: req::SyntaxTreeParams) - | |||
45 | Ok(res) | 45 | Ok(res) |
46 | } | 46 | } |
47 | 47 | ||
48 | // FIXME: drop this API | ||
49 | pub fn handle_extend_selection( | ||
50 | world: WorldSnapshot, | ||
51 | params: req::ExtendSelectionParams, | ||
52 | ) -> Result<req::ExtendSelectionResult> { | ||
53 | log::error!( | ||
54 | "extend selection is deprecated and will be removed soon, | ||
55 | use the new selection range API in LSP", | ||
56 | ); | ||
57 | let file_id = params.text_document.try_conv_with(&world)?; | ||
58 | let line_index = world.analysis().file_line_index(file_id)?; | ||
59 | let selections = params | ||
60 | .selections | ||
61 | .into_iter() | ||
62 | .map_conv_with(&line_index) | ||
63 | .map(|range| FileRange { file_id, range }) | ||
64 | .map(|frange| world.analysis().extend_selection(frange).map(|it| it.conv_with(&line_index))) | ||
65 | .collect::<Cancelable<Vec<_>>>()?; | ||
66 | Ok(req::ExtendSelectionResult { selections }) | ||
67 | } | ||
68 | |||
69 | pub fn handle_selection_range( | 48 | pub fn handle_selection_range( |
70 | world: WorldSnapshot, | 49 | world: WorldSnapshot, |
71 | params: req::SelectionRangeParams, | 50 | params: req::SelectionRangeParams, |
diff --git a/crates/ra_lsp_server/src/req.rs b/crates/ra_lsp_server/src/req.rs index 6b986bcc9..b2f3c509d 100644 --- a/crates/ra_lsp_server/src/req.rs +++ b/crates/ra_lsp_server/src/req.rs | |||
@@ -43,27 +43,6 @@ pub struct SyntaxTreeParams { | |||
43 | pub range: Option<Range>, | 43 | pub range: Option<Range>, |
44 | } | 44 | } |
45 | 45 | ||
46 | pub enum ExtendSelection {} | ||
47 | |||
48 | impl Request for ExtendSelection { | ||
49 | type Params = ExtendSelectionParams; | ||
50 | type Result = ExtendSelectionResult; | ||
51 | const METHOD: &'static str = "rust-analyzer/extendSelection"; | ||
52 | } | ||
53 | |||
54 | #[derive(Deserialize, Debug)] | ||
55 | #[serde(rename_all = "camelCase")] | ||
56 | pub struct ExtendSelectionParams { | ||
57 | pub text_document: TextDocumentIdentifier, | ||
58 | pub selections: Vec<Range>, | ||
59 | } | ||
60 | |||
61 | #[derive(Serialize, Debug)] | ||
62 | #[serde(rename_all = "camelCase")] | ||
63 | pub struct ExtendSelectionResult { | ||
64 | pub selections: Vec<Range>, | ||
65 | } | ||
66 | |||
67 | pub enum SelectionRangeRequest {} | 46 | pub enum SelectionRangeRequest {} |
68 | 47 | ||
69 | impl Request for SelectionRangeRequest { | 48 | impl Request for SelectionRangeRequest { |
diff --git a/editors/emacs/ra-emacs-lsp.el b/editors/emacs/ra-emacs-lsp.el index 075cbd82d..79822c8ce 100644 --- a/editors/emacs/ra-emacs-lsp.el +++ b/editors/emacs/ra-emacs-lsp.el | |||
@@ -14,7 +14,7 @@ | |||
14 | ;; - 'hover' type information & documentation (with lsp-ui) | 14 | ;; - 'hover' type information & documentation (with lsp-ui) |
15 | ;; - implements source changes (for code actions etc.), except for file system changes | 15 | ;; - implements source changes (for code actions etc.), except for file system changes |
16 | ;; - implements joinLines (you need to bind rust-analyzer-join-lines to a key) | 16 | ;; - implements joinLines (you need to bind rust-analyzer-join-lines to a key) |
17 | ;; - implements extendSelection (either bind rust-analyzer-extend-selection to a key, or use expand-region) | 17 | ;; - implements selectionRanges (either bind lsp-extend-selection to a key, or use expand-region) |
18 | ;; - provides rust-analyzer-inlay-hints-mode for inline type hints | 18 | ;; - provides rust-analyzer-inlay-hints-mode for inline type hints |
19 | 19 | ||
20 | ;; What's missing: | 20 | ;; What's missing: |
@@ -103,39 +103,13 @@ | |||
103 | (rust-analyzer--join-lines-params))) | 103 | (rust-analyzer--join-lines-params))) |
104 | (rust-analyzer--apply-source-change))) | 104 | (rust-analyzer--apply-source-change))) |
105 | 105 | ||
106 | ;; extend selection | 106 | ;; selection ranges |
107 | |||
108 | (defun rust-analyzer-extend-selection () | ||
109 | (interactive) | ||
110 | (-let (((&hash "start" "end") (rust-analyzer--extend-selection))) | ||
111 | (rust-analyzer--goto-lsp-loc start) | ||
112 | (set-mark (point)) | ||
113 | (rust-analyzer--goto-lsp-loc end) | ||
114 | (exchange-point-and-mark))) | ||
115 | |||
116 | (defun rust-analyzer--extend-selection-params () | ||
117 | "Extend selection params." | ||
118 | (list :textDocument (lsp--text-document-identifier) | ||
119 | :selections | ||
120 | (vector | ||
121 | (if (use-region-p) | ||
122 | (lsp--region-to-range (region-beginning) (region-end)) | ||
123 | (lsp--region-to-range (point) (point)))))) | ||
124 | |||
125 | (defun rust-analyzer--extend-selection () | ||
126 | (-> | ||
127 | (lsp-send-request | ||
128 | (lsp-make-request | ||
129 | "rust-analyzer/extendSelection" | ||
130 | (rust-analyzer--extend-selection-params))) | ||
131 | (ht-get "selections") | ||
132 | (seq-first))) | ||
133 | 107 | ||
134 | (defun rust-analyzer--add-er-expansion () | 108 | (defun rust-analyzer--add-er-expansion () |
135 | (make-variable-buffer-local 'er/try-expand-list) | 109 | (make-variable-buffer-local 'er/try-expand-list) |
136 | (setq er/try-expand-list (append | 110 | (setq er/try-expand-list (append |
137 | er/try-expand-list | 111 | er/try-expand-list |
138 | '(rust-analyzer-extend-selection)))) | 112 | '(lsp-extend-selection)))) |
139 | 113 | ||
140 | (with-eval-after-load 'expand-region | 114 | (with-eval-after-load 'expand-region |
141 | ;; add the expansion for all existing rust-mode buffers. If expand-region is | 115 | ;; add the expansion for all existing rust-mode buffers. If expand-region is |