aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_lsp_server/src/conv.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2018-12-21 22:59:32 +0000
committerAleksey Kladov <[email protected]>2018-12-21 22:59:32 +0000
commitf1f2804c71ee997e36904dea72911104b2e2375b (patch)
treee908c071563d91cfdbad64c6dc59f955804d8b1c /crates/ra_lsp_server/src/conv.rs
parent328d123f5baeab8ff9a1f63a6744f6eec89818ab (diff)
move completion items to conv
Diffstat (limited to 'crates/ra_lsp_server/src/conv.rs')
-rw-r--r--crates/ra_lsp_server/src/conv.rs28
1 files changed, 26 insertions, 2 deletions
diff --git a/crates/ra_lsp_server/src/conv.rs b/crates/ra_lsp_server/src/conv.rs
index 218ded4ee..973e0915e 100644
--- a/crates/ra_lsp_server/src/conv.rs
+++ b/crates/ra_lsp_server/src/conv.rs
@@ -1,8 +1,8 @@
1use languageserver_types::{ 1use languageserver_types::{
2 self, Location, Position, Range, SymbolKind, TextDocumentEdit, TextDocumentIdentifier, 2 self, Location, Position, Range, SymbolKind, TextDocumentEdit, TextDocumentIdentifier,
3 TextDocumentItem, TextDocumentPositionParams, Url, VersionedTextDocumentIdentifier, 3 TextDocumentItem, TextDocumentPositionParams, Url, VersionedTextDocumentIdentifier, InsertTextFormat,
4}; 4};
5use ra_analysis::{FileId, FileSystemEdit, SourceChange, SourceFileEdit, FilePosition}; 5use ra_analysis::{FileId, FileSystemEdit, SourceChange, SourceFileEdit, FilePosition, CompletionItem, InsertText};
6use ra_editor::{LineCol, LineIndex}; 6use ra_editor::{LineCol, LineIndex};
7use ra_text_edit::{AtomTextEdit, TextEdit}; 7use ra_text_edit::{AtomTextEdit, TextEdit};
8use ra_syntax::{SyntaxKind, TextRange, TextUnit}; 8use ra_syntax::{SyntaxKind, TextRange, TextUnit};
@@ -45,6 +45,30 @@ impl Conv for SyntaxKind {
45 } 45 }
46} 46}
47 47
48impl Conv for CompletionItem {
49 type Output = ::languageserver_types::CompletionItem;
50
51 fn conv(self) -> <Self as Conv>::Output {
52 let mut res = ::languageserver_types::CompletionItem {
53 label: self.label().to_string(),
54 filter_text: Some(self.lookup().to_string()),
55 ..Default::default()
56 };
57 match self.insert_text() {
58 InsertText::PlainText { text } => {
59 res.insert_text = Some(text);
60 res.insert_text_format = Some(InsertTextFormat::PlainText);
61 }
62 InsertText::Snippet { text } => {
63 res.insert_text = Some(text);
64 res.insert_text_format = Some(InsertTextFormat::Snippet);
65 res.kind = Some(languageserver_types::CompletionItemKind::Keyword);
66 }
67 }
68 res
69 }
70}
71
48impl ConvWith for Position { 72impl ConvWith for Position {
49 type Ctx = LineIndex; 73 type Ctx = LineIndex;
50 type Output = TextUnit; 74 type Output = TextUnit;