use a combination of source_change and text_edit for CompleteItem

This commit is contained in:
gfreezy 2019-01-20 12:02:00 +08:00
parent 94d96b60f3
commit 2a43638052
48 changed files with 305 additions and 295 deletions

View file

@ -13,7 +13,6 @@ use ra_syntax::{SyntaxKind, TextRange, TextUnit};
use ra_text_edit::{AtomTextEdit, TextEdit};
use crate::{req, server_world::ServerWorld, Result};
use ra_text_edit::TextEditBuilder;
pub trait Conv {
type Output;
@ -79,13 +78,11 @@ impl ConvWith for CompletionItem {
type Ctx = LineIndex;
type Output = ::lsp_types::CompletionItem;
fn conv_with(self, ctx: &LineIndex) -> ::lsp_types::CompletionItem {
let atom_text_edit = AtomTextEdit::replace(self.replace_range(), self.insert_text());
fn conv_with(mut self, ctx: &LineIndex) -> ::lsp_types::CompletionItem {
let atom_text_edit = AtomTextEdit::replace(self.source_range(), self.insert_text());
let text_edit = (&atom_text_edit).conv_with(ctx);
let additional_text_edits = if let Some(delete_range) = self.delete_range() {
let mut builder = TextEditBuilder::default();
builder.delete(delete_range);
Some(builder.finish().conv_with(ctx))
let additional_text_edits = if let Some(edit) = self.take_text_edit() {
Some(edit.conv_with(ctx))
} else {
None
};