]> git.lizzy.rs Git - rust.git/commitdiff
move completion items to conv
authorAleksey Kladov <aleksey.kladov@gmail.com>
Fri, 21 Dec 2018 22:59:32 +0000 (01:59 +0300)
committerAleksey Kladov <aleksey.kladov@gmail.com>
Fri, 21 Dec 2018 22:59:32 +0000 (01:59 +0300)
crates/gen_lsp_server/Cargo.toml
crates/gen_lsp_server/src/msg.rs
crates/ra_hir/src/function/scope.rs
crates/ra_lsp_server/src/conv.rs
crates/ra_lsp_server/src/main_loop/handlers.rs

index 5f90d39d6c33c8597abb3cadd38038a2711a7312..9776a82e375e435eb72cad431d55dae48cb86e24 100644 (file)
@@ -12,5 +12,5 @@ languageserver-types = "0.53.0"
 log = "0.4.3"
 failure = "0.1.2"
 serde_json = "1.0.24"
-serde = "1.0.71"
+serde = { version = "1.0.71", features = ["derive"] }
 crossbeam-channel = "0.2.4"
index ef6358cb1719ebeb9e96b70326965cb8d24365e0..af901d0d29667a1692102682098f775566a05c97 100644 (file)
@@ -7,7 +7,7 @@
 
 use crate::Result;
 
-#[derive(Debug, Serialize, Deserialize, Clone)]
+#[derive(Serialize, Deserialize, Debug, Clone)]
 #[serde(untagged)]
 pub enum RawMessage {
     Request(RawRequest),
index 9f1aa1ef2d876fc3e0c589a1c3cdda18e9a6b9a1..d12f1781e1dba952ba53f77a0fa7a0d18c4b4d2e 100644 (file)
@@ -95,7 +95,7 @@ fn adjust(&self, ptr: LocalSyntaxPtr, original_scope: ScopeId, offset: TextUnit)
                     r1.start().cmp(&r2.start())
                 }
             })
-            .map(|(ptr, scope)| *scope)
+            .map(|(_ptr, scope)| *scope)
             .unwrap_or(original_scope)
     }
 
index 218ded4eecf9138a77ed2be435ea0292e3b65b76..973e0915eddf8e5e5d365cc964936dbf6cfe1360 100644 (file)
@@ -1,8 +1,8 @@
 use languageserver_types::{
     self, Location, Position, Range, SymbolKind, TextDocumentEdit, TextDocumentIdentifier,
-    TextDocumentItem, TextDocumentPositionParams, Url, VersionedTextDocumentIdentifier,
+    TextDocumentItem, TextDocumentPositionParams, Url, VersionedTextDocumentIdentifier, InsertTextFormat,
 };
-use ra_analysis::{FileId, FileSystemEdit, SourceChange, SourceFileEdit, FilePosition};
+use ra_analysis::{FileId, FileSystemEdit, SourceChange, SourceFileEdit, FilePosition, CompletionItem, InsertText};
 use ra_editor::{LineCol, LineIndex};
 use ra_text_edit::{AtomTextEdit, TextEdit};
 use ra_syntax::{SyntaxKind, TextRange, TextUnit};
@@ -45,6 +45,30 @@ fn conv(self) -> <Self as Conv>::Output {
     }
 }
 
+impl Conv for CompletionItem {
+    type Output = ::languageserver_types::CompletionItem;
+
+    fn conv(self) -> <Self as Conv>::Output {
+        let mut res = ::languageserver_types::CompletionItem {
+            label: self.label().to_string(),
+            filter_text: Some(self.lookup().to_string()),
+            ..Default::default()
+        };
+        match self.insert_text() {
+            InsertText::PlainText { text } => {
+                res.insert_text = Some(text);
+                res.insert_text_format = Some(InsertTextFormat::PlainText);
+            }
+            InsertText::Snippet { text } => {
+                res.insert_text = Some(text);
+                res.insert_text_format = Some(InsertTextFormat::Snippet);
+                res.kind = Some(languageserver_types::CompletionItemKind::Keyword);
+            }
+        }
+        res
+    }
+}
+
 impl ConvWith for Position {
     type Ctx = LineIndex;
     type Output = TextUnit;
index 2dfeb061a1486099cf7bb003d3d32a0436d7ef38..252d1ba3ead1301dda7c755be21404deda4b44a6 100644 (file)
@@ -2,13 +2,13 @@
 
 use gen_lsp_server::ErrorCode;
 use languageserver_types::{
-    CodeActionResponse, Command, CompletionItem, CompletionItemKind, Diagnostic,
+    CodeActionResponse, Command, Diagnostic,
     DiagnosticSeverity, DocumentSymbol, Documentation, FoldingRange, FoldingRangeKind,
-    FoldingRangeParams, InsertTextFormat, Location, MarkupContent, MarkupKind, MarkedString, Position,
+    FoldingRangeParams, Location, MarkupContent, MarkupKind, MarkedString, Position,
     PrepareRenameResponse, RenameParams, SymbolInformation, TextDocumentIdentifier, TextEdit,
     WorkspaceEdit, ParameterInformation, ParameterLabel, SignatureInformation, Hover, HoverContents,
 };
-use ra_analysis::{FileId, FoldKind, Query, RunnableKind, FilePosition, InsertText};
+use ra_analysis::{FileId, FoldKind, Query, RunnableKind, FilePosition};
 use ra_syntax::{TextUnit, text_utils::intersect};
 use ra_text_edit::text_utils::contains_offset_nonstrict;
 use rustc_hash::FxHashMap;
@@ -419,28 +419,7 @@ pub fn handle_completion(
         None => return Ok(None),
         Some(items) => items,
     };
-    let items = items
-        .into_iter()
-        .map(|item| {
-            let mut res = CompletionItem {
-                label: item.label().to_string(),
-                filter_text: Some(item.lookup().to_string()),
-                ..Default::default()
-            };
-            match item.insert_text() {
-                InsertText::PlainText { text } => {
-                    res.insert_text = Some(text);
-                    res.insert_text_format = Some(InsertTextFormat::PlainText);
-                }
-                InsertText::Snippet { text } => {
-                    res.insert_text = Some(text);
-                    res.insert_text_format = Some(InsertTextFormat::Snippet);
-                    res.kind = Some(CompletionItemKind::Keyword);
-                }
-            }
-            res
-        })
-        .collect();
+    let items = items.into_iter().map(|item| item.conv()).collect();
 
     Ok(Some(req::CompletionResponse::Array(items)))
 }