]> git.lizzy.rs Git - rust.git/commitdiff
Merge #854
authorbors[bot] <bors[bot]@users.noreply.github.com>
Mon, 18 Feb 2019 09:26:24 +0000 (09:26 +0000)
committerbors[bot] <bors[bot]@users.noreply.github.com>
Mon, 18 Feb 2019 09:26:24 +0000 (09:26 +0000)
854: more compact edits in insta r=matklad a=matklad

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
59 files changed:
crates/ra_ide_api/src/completion/complete_keyword.rs
crates/ra_ide_api/src/completion/complete_postfix.rs
crates/ra_ide_api/src/completion/complete_snippet.rs
crates/ra_ide_api/src/completion/completion_item.rs
crates/ra_ide_api/src/completion/snapshots/completion_item__bindings_from_for.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__bindings_from_if_let.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__bindings_from_let.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__completes_break_and_continue_in_loops1.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__completes_break_and_continue_in_loops2.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__completes_prelude.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__completes_use_paths_across_crates.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__deeply_nested_use_tree.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__dont_add_semi_after_return_if_not_a_statement.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__dont_render_function_parens_if_already_call.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__dont_render_function_parens_if_already_call_assoc_fn.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__dont_render_function_parens_in_use_item.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__dont_show_both_completions_for_shadowing.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__enum_variant.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__enum_variant_with_details.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__extern_prelude.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__generic_params.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__generic_params_in_struct.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__inserts_parens_for_function_calls1.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__inserts_parens_for_function_calls2.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__inserts_parens_for_function_calls3.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__keywords_in_function1.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__keywords_in_function2.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__keywords_in_function3.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__keywords_in_function4.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__keywords_in_use_stmt1.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__keywords_in_use_stmt2.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__keywords_in_use_stmt3.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__last_return_in_block_has_semi1.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__last_return_in_block_has_semi2.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__method_attr_filtering.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__method_completion.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__mod_with_docs.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__module_items.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__module_items_in_nested_modules.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__nested_use_tree.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__no_semi_after_break_continue_in_expr.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__param_completion_last_param.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__param_completion_nth_param.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__param_completion_trait_param.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__postfix_completion_works_for_trivial_path_expression.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__return_type.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__self_in_methods.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__snippets_in_expressions.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__snippets_in_items.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__struct_associated_const.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__struct_associated_method.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__struct_associated_type.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__struct_field_completion.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__struct_field_completion_autoderef.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__struct_field_completion_self.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__tuple_field_completion.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__use_item_starting_with_crate.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__use_item_starting_with_self.snap
crates/ra_lsp_server/src/conv.rs

index 10ae01bc598441e52fe5798c4a5c53fd198191a8..b667381a7d17f77f40ceffd87421848b7004713e 100644 (file)
@@ -40,7 +40,7 @@ pub(super) fn complete_use_tree_keyword(acc: &mut Completions, ctx: &CompletionC
 fn keyword(ctx: &CompletionContext, kw: &str, snippet: &str) -> CompletionItem {
     CompletionItem::new(CompletionKind::Keyword, ctx.source_range(), kw)
         .kind(CompletionItemKind::Keyword)
-        .snippet(snippet)
+        .insert_snippet(snippet)
         .build()
 }
 
index cf8c632693154f7d25aa3ccfc552c29db3ccc024..ce3d6ed3cb6c26944e49ddb68ef98c3afa7b2963 100644 (file)
 use ra_text_edit::TextEditBuilder;
 
 fn postfix_snippet(ctx: &CompletionContext, label: &str, detail: &str, snippet: &str) -> Builder {
-    let replace_range = ctx.source_range();
-    let receiver_range = ctx.dot_receiver.expect("no receiver available").syntax().range();
-    let delete_range = TextRange::from_to(receiver_range.start(), replace_range.start());
-    let mut builder = TextEditBuilder::default();
-    builder.delete(delete_range);
-    CompletionItem::new(CompletionKind::Postfix, replace_range, label)
-        .snippet(snippet)
+    let edit = {
+        let receiver_range = ctx.dot_receiver.expect("no receiver available").syntax().range();
+        let delete_range = TextRange::from_to(receiver_range.start(), ctx.source_range().end());
+        let mut builder = TextEditBuilder::default();
+        builder.replace(delete_range, snippet.to_string());
+        builder.finish()
+    };
+    CompletionItem::new(CompletionKind::Postfix, ctx.source_range(), label)
         .detail(detail)
-        .text_edit(builder.finish())
+        .snippet_edit(edit)
 }
 
 pub(super) fn complete_postfix(acc: &mut Completions, ctx: &CompletionContext) {
index d1cea7375fa32e78ac454f67cefd5596202cc8ee..aa3a16fa267cab7137bf9a1380254df01ada2c0c 100644 (file)
@@ -2,7 +2,7 @@
 
 fn snippet(ctx: &CompletionContext, label: &str, snippet: &str) -> Builder {
     CompletionItem::new(CompletionKind::Snippet, ctx.source_range(), label)
-        .snippet(snippet)
+        .insert_snippet(snippet)
         .kind(CompletionItemKind::Snippet)
 }
 
index 7b93b5df8d43be1d861ee79ccd49585865f72e22..95bdd59b4e41f14cecd36672a08becd28314e0df 100644 (file)
@@ -2,7 +2,7 @@
 
 use hir::{Docs, Documentation, PerNs, Resolution};
 use ra_syntax::TextRange;
-use ra_text_edit::TextEdit;
+use ra_text_edit::{ TextEditBuilder, TextEdit};
 use test_utils::tested_by;
 
 use crate::completion::{
 /// `CompletionItem`, use `new` method and the `Builder` struct.
 pub struct CompletionItem {
     /// Used only internally in tests, to check only specific kind of
-    /// completion.
+    /// completion (postfix, keyword, reference, etc).
     #[allow(unused)]
     completion_kind: CompletionKind,
+    /// Label in the completion pop up which identifies completion.
     label: String,
+    /// Range of identifier that is being completed.
+    ///
+    /// It should be used primarily for UI, but we also use this to convert
+    /// genetic TextEdit into LSP's completion edit (see conv.rs).
+    ///
+    /// `source_range` must contain the completion offset. `insert_text` should
+    /// start with what `source_range` points to, or VSCode will filter out the
+    /// completion silently.
+    source_range: TextRange,
+    /// What happens when user selects this item.
+    ///
+    /// Typically, replaces `source_range` with new identifier.
+    text_edit: TextEdit,
+    insert_text_format: InsertTextFormat,
+
+    /// What item (struct, function, etc) are we completing.
     kind: Option<CompletionItemKind>,
+
+    /// Lookup is used to check if completion item indeed can complete current
+    /// ident.
+    ///
+    /// That is, in `foo.bar<|>` lookup of `abracadabra` will be accepted (it
+    /// contains `bar` sub sequence), and `quux` will rejected.
     lookup: Option<String>,
+
+    /// Additional info to show in the UI pop up.
     detail: Option<String>,
     documentation: Option<Documentation>,
-    insert_text: Option<String>,
-    insert_text_format: InsertTextFormat,
-    /// Where completion occurs. `source_range` must contain the completion offset.
-    /// `insert_text` should start with what `source_range` points to, or VSCode
-    /// will filter out the completion silently.
-    source_range: TextRange,
-    /// Additional text edit, ranges in `text_edit` must never intersect with `source_range`.
-    /// Or VSCode will drop it silently.
-    text_edit: Option<TextEdit>,
 }
 
+// We use custom debug for CompletionItem to make `insta`'s diffs more readable.
 impl fmt::Debug for CompletionItem {
     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
         let mut s = f.debug_struct("CompletionItem");
         s.field("label", &self.label()).field("source_range", &self.source_range());
+        if self.text_edit().as_atoms().len() == 1 {
+            let atom = &self.text_edit().as_atoms()[0];
+            s.field("delete", &atom.delete);
+            s.field("insert", &atom.insert);
+        } else {
+            s.field("text_edit", &self.text_edit);
+        }
         if let Some(kind) = self.kind().as_ref() {
             s.field("kind", kind);
         }
@@ -52,13 +76,6 @@ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
         if let Some(documentation) = self.documentation() {
             s.field("documentation", &documentation);
         }
-        if self.insert_text() != self.label() {
-            s.field("insert_text", &self.insert_text())
-                .field("insert_text_format", &self.insert_text_format());
-        }
-        if let Some(edit) = self.text_edit.as_ref() {
-            s.field("text_edit", edit);
-        }
         s.finish()
     }
 }
@@ -103,12 +120,12 @@ pub enum InsertTextFormat {
 impl CompletionItem {
     pub(crate) fn new(
         completion_kind: CompletionKind,
-        replace_range: TextRange,
+        source_range: TextRange,
         label: impl Into<String>,
     ) -> Builder {
         let label = label.into();
         Builder {
-            source_range: replace_range,
+            source_range,
             completion_kind,
             label,
             insert_text: None,
@@ -124,6 +141,18 @@ pub(crate) fn new(
     pub fn label(&self) -> &str {
         &self.label
     }
+    pub fn source_range(&self) -> TextRange {
+        self.source_range
+    }
+
+    pub fn insert_text_format(&self) -> InsertTextFormat {
+        self.insert_text_format
+    }
+
+    pub fn text_edit(&self) -> &TextEdit {
+        &self.text_edit
+    }
+
     /// Short one-line additional information, like a type
     pub fn detail(&self) -> Option<&str> {
         self.detail.as_ref().map(|it| it.as_str())
@@ -137,24 +166,9 @@ pub fn lookup(&self) -> &str {
         self.lookup.as_ref().map(|it| it.as_str()).unwrap_or_else(|| self.label())
     }
 
-    pub fn insert_text_format(&self) -> InsertTextFormat {
-        self.insert_text_format
-    }
-    pub fn insert_text(&self) -> String {
-        match &self.insert_text {
-            Some(t) => t.clone(),
-            None => self.label.clone(),
-        }
-    }
     pub fn kind(&self) -> Option<CompletionItemKind> {
         self.kind
     }
-    pub fn take_text_edit(&mut self) -> Option<TextEdit> {
-        self.text_edit.take()
-    }
-    pub fn source_range(&self) -> TextRange {
-        self.source_range
-    }
 }
 
 /// A helper to make `CompletionItem`s.
@@ -178,17 +192,27 @@ pub(crate) fn add_to(self, acc: &mut Completions) {
     }
 
     pub(crate) fn build(self) -> CompletionItem {
+        let label = self.label;
+        let text_edit = match self.text_edit {
+            Some(it) => it,
+            None => {
+                let mut builder = TextEditBuilder::default();
+                builder
+                    .replace(self.source_range, self.insert_text.unwrap_or_else(|| label.clone()));
+                builder.finish()
+            }
+        };
+
         CompletionItem {
             source_range: self.source_range,
-            label: self.label,
+            label,
+            insert_text_format: self.insert_text_format,
+            text_edit,
             detail: self.detail,
             documentation: self.documentation,
-            insert_text_format: self.insert_text_format,
             lookup: self.lookup,
             kind: self.kind,
             completion_kind: self.completion_kind,
-            text_edit: self.text_edit,
-            insert_text: self.insert_text,
         }
     }
     pub(crate) fn lookup_by(mut self, lookup: impl Into<String>) -> Builder {
@@ -199,12 +223,7 @@ pub(crate) fn insert_text(mut self, insert_text: impl Into<String>) -> Builder {
         self.insert_text = Some(insert_text.into());
         self
     }
-    #[allow(unused)]
-    pub(crate) fn insert_text_format(mut self, insert_text_format: InsertTextFormat) -> Builder {
-        self.insert_text_format = insert_text_format;
-        self
-    }
-    pub(crate) fn snippet(mut self, snippet: impl Into<String>) -> Builder {
+    pub(crate) fn insert_snippet(mut self, snippet: impl Into<String>) -> Builder {
         self.insert_text_format = InsertTextFormat::Snippet;
         self.insert_text(snippet)
     }
@@ -212,11 +231,14 @@ pub(crate) fn kind(mut self, kind: CompletionItemKind) -> Builder {
         self.kind = Some(kind);
         self
     }
-    #[allow(unused)]
     pub(crate) fn text_edit(mut self, edit: TextEdit) -> Builder {
         self.text_edit = Some(edit);
         self
     }
+    pub(crate) fn snippet_edit(mut self, edit: TextEdit) -> Builder {
+        self.insert_text_format = InsertTextFormat::Snippet;
+        self.text_edit(edit)
+    }
     #[allow(unused)]
     pub(crate) fn detail(self, detail: impl Into<String>) -> Builder {
         self.set_detail(Some(detail))
index 799daa72420b27f0bc4d48c419e0f320c4b9d77b..bd7f99f7123f1eac03602337c8d65481833c571b 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.736783986Z"
+created: "2019-02-18T09:22:24.132341107Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,14 +8,16 @@ expression: kind_completions
     CompletionItem {
         label: "quux",
         source_range: [83; 83),
+        delete: [83; 83),
+        insert: "quux()$0",
         kind: Function,
-        detail: "fn quux()",
-        insert_text: "quux()$0",
-        insert_text_format: Snippet
+        detail: "fn quux()"
     },
     CompletionItem {
         label: "x",
         source_range: [83; 83),
+        delete: [83; 83),
+        insert: "x",
         kind: Binding
     }
 ]
index e6c1a936ae276a2e5267fb820aa6d06a3bb6d6a0..3b374c4defbfab815464a1e93b6eea6861c9515a 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.739513594Z"
+created: "2019-02-18T09:22:24.126809445Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,19 +8,23 @@ expression: kind_completions
     CompletionItem {
         label: "a",
         source_range: [214; 214),
+        delete: [214; 214),
+        insert: "a",
         kind: Binding
     },
     CompletionItem {
         label: "b",
         source_range: [214; 214),
+        delete: [214; 214),
+        insert: "b",
         kind: Binding
     },
     CompletionItem {
         label: "quux",
         source_range: [214; 214),
+        delete: [214; 214),
+        insert: "quux()$0",
         kind: Function,
-        detail: "fn quux()",
-        insert_text: "quux()$0",
-        insert_text_format: Snippet
+        detail: "fn quux()"
     }
 ]
index 2b0da7d7398865d5168e043875259d71e794804a..173f5319ade6385e01ddae66701018276373c0a1 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.739513592Z"
+created: "2019-02-18T09:22:24.126696322Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,19 +8,23 @@ expression: kind_completions
     CompletionItem {
         label: "quux",
         source_range: [79; 79),
+        delete: [79; 79),
+        insert: "quux($0)",
         kind: Function,
-        detail: "fn quux(x: i32)",
-        insert_text: "quux($0)",
-        insert_text_format: Snippet
+        detail: "fn quux(x: i32)"
     },
     CompletionItem {
         label: "x",
         source_range: [79; 79),
+        delete: [79; 79),
+        insert: "x",
         kind: Binding
     },
     CompletionItem {
         label: "y",
         source_range: [79; 79),
+        delete: [79; 79),
+        insert: "y",
         kind: Binding
     }
 ]
index 5d62a6cb0461b3458b078a5014e1b2e79f05d4cd..42ff024691eef52ef125911709810ce736c96b3c 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.630948152Z"
+created: "2019-02-18T09:22:23.976673150Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,50 +8,50 @@ expression: kind_completions
     CompletionItem {
         label: "break",
         source_range: [55; 55),
-        kind: Keyword,
-        insert_text: "break;",
-        insert_text_format: Snippet
+        delete: [55; 55),
+        insert: "break;",
+        kind: Keyword
     },
     CompletionItem {
         label: "continue",
         source_range: [55; 55),
-        kind: Keyword,
-        insert_text: "continue;",
-        insert_text_format: Snippet
+        delete: [55; 55),
+        insert: "continue;",
+        kind: Keyword
     },
     CompletionItem {
         label: "if",
         source_range: [55; 55),
-        kind: Keyword,
-        insert_text: "if $0 {}",
-        insert_text_format: Snippet
+        delete: [55; 55),
+        insert: "if $0 {}",
+        kind: Keyword
     },
     CompletionItem {
         label: "loop",
         source_range: [55; 55),
-        kind: Keyword,
-        insert_text: "loop {$0}",
-        insert_text_format: Snippet
+        delete: [55; 55),
+        insert: "loop {$0}",
+        kind: Keyword
     },
     CompletionItem {
         label: "match",
         source_range: [55; 55),
-        kind: Keyword,
-        insert_text: "match $0 {}",
-        insert_text_format: Snippet
+        delete: [55; 55),
+        insert: "match $0 {}",
+        kind: Keyword
     },
     CompletionItem {
         label: "return",
         source_range: [55; 55),
-        kind: Keyword,
-        insert_text: "return $0;",
-        insert_text_format: Snippet
+        delete: [55; 55),
+        insert: "return $0;",
+        kind: Keyword
     },
     CompletionItem {
         label: "while",
         source_range: [55; 55),
-        kind: Keyword,
-        insert_text: "while $0 {}",
-        insert_text_format: Snippet
+        delete: [55; 55),
+        insert: "while $0 {}",
+        kind: Keyword
     }
 ]
index aeedd0e80e0ae239b994fb761596c51371c03ea4..057ff8a7ace2a3bc6db96a50e0f83003f5d9bb4c 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.662074625Z"
+created: "2019-02-18T09:22:24.068967569Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,36 +8,36 @@ expression: kind_completions
     CompletionItem {
         label: "if",
         source_range: [60; 60),
-        kind: Keyword,
-        insert_text: "if $0 {}",
-        insert_text_format: Snippet
+        delete: [60; 60),
+        insert: "if $0 {}",
+        kind: Keyword
     },
     CompletionItem {
         label: "loop",
         source_range: [60; 60),
-        kind: Keyword,
-        insert_text: "loop {$0}",
-        insert_text_format: Snippet
+        delete: [60; 60),
+        insert: "loop {$0}",
+        kind: Keyword
     },
     CompletionItem {
         label: "match",
         source_range: [60; 60),
-        kind: Keyword,
-        insert_text: "match $0 {}",
-        insert_text_format: Snippet
+        delete: [60; 60),
+        insert: "match $0 {}",
+        kind: Keyword
     },
     CompletionItem {
         label: "return",
         source_range: [60; 60),
-        kind: Keyword,
-        insert_text: "return $0;",
-        insert_text_format: Snippet
+        delete: [60; 60),
+        insert: "return $0;",
+        kind: Keyword
     },
     CompletionItem {
         label: "while",
         source_range: [60; 60),
-        kind: Keyword,
-        insert_text: "while $0 {}",
-        insert_text_format: Snippet
+        delete: [60; 60),
+        insert: "while $0 {}",
+        kind: Keyword
     }
 ]
index a22205dad50d63488faaa811140b9e4a705f3129..16126ee7772d10b462dd1a997cff2a749d308d03 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.774580359Z"
+created: "2019-02-18T09:22:24.180517434Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,19 +8,23 @@ expression: kind_completions
     CompletionItem {
         label: "Option",
         source_range: [18; 18),
+        delete: [18; 18),
+        insert: "Option",
         kind: Struct
     },
     CompletionItem {
         label: "foo",
         source_range: [18; 18),
+        delete: [18; 18),
+        insert: "foo()$0",
         kind: Function,
-        detail: "fn foo()",
-        insert_text: "foo()$0",
-        insert_text_format: Snippet
+        detail: "fn foo()"
     },
     CompletionItem {
         label: "std",
         source_range: [18; 18),
+        delete: [18; 18),
+        insert: "std",
         kind: Module
     }
 ]
index fcbb592e17d6dc2cfa34624f473f784d2efd2187..2420e7744549d758a797cf238bbd86c60b5ae260 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.729954589Z"
+created: "2019-02-18T09:22:24.118807216Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,6 +8,8 @@ expression: kind_completions
     CompletionItem {
         label: "bar",
         source_range: [9; 9),
+        delete: [9; 9),
+        insert: "bar",
         kind: Module
     }
 ]
index 3c5460319b7ef09215f2a1bdea67a79dfb14bc60..c472f796593e3e614e439b6018ff5e464d977495 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.663233766Z"
+created: "2019-02-18T09:22:24.044567777Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,6 +8,8 @@ expression: kind_completions
     CompletionItem {
         label: "Spam",
         source_range: [23; 25),
+        delete: [23; 25),
+        insert: "Spam",
         kind: Struct
     }
 ]
index 493684e5b6cc2e3aa22b1cad72d2db6f126c3bf1..97bd76c494c5c07fd136c11aed96fa55c5338fb1 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.637726929Z"
+created: "2019-02-18T09:22:23.987788705Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,36 +8,36 @@ expression: kind_completions
     CompletionItem {
         label: "if",
         source_range: [85; 85),
-        kind: Keyword,
-        insert_text: "if $0 {}",
-        insert_text_format: Snippet
+        delete: [85; 85),
+        insert: "if $0 {}",
+        kind: Keyword
     },
     CompletionItem {
         label: "loop",
         source_range: [85; 85),
-        kind: Keyword,
-        insert_text: "loop {$0}",
-        insert_text_format: Snippet
+        delete: [85; 85),
+        insert: "loop {$0}",
+        kind: Keyword
     },
     CompletionItem {
         label: "match",
         source_range: [85; 85),
-        kind: Keyword,
-        insert_text: "match $0 {}",
-        insert_text_format: Snippet
+        delete: [85; 85),
+        insert: "match $0 {}",
+        kind: Keyword
     },
     CompletionItem {
         label: "return",
         source_range: [85; 85),
-        kind: Keyword,
-        insert_text: "return $0",
-        insert_text_format: Snippet
+        delete: [85; 85),
+        insert: "return $0",
+        kind: Keyword
     },
     CompletionItem {
         label: "while",
         source_range: [85; 85),
-        kind: Keyword,
-        insert_text: "while $0 {}",
-        insert_text_format: Snippet
+        delete: [85; 85),
+        insert: "while $0 {}",
+        kind: Keyword
     }
 ]
index 4e37dbef1e775c697508c15a4601ffdbb5c855e6..1de0efb5b36ba61703cf316fe123d0e64bb7ac51 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.812347626Z"
+created: "2019-02-18T09:22:24.211680376Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,12 +8,16 @@ expression: kind_completions
     CompletionItem {
         label: "frobnicate",
         source_range: [35; 39),
+        delete: [35; 39),
+        insert: "frobnicate",
         kind: Function,
         detail: "fn frobnicate()"
     },
     CompletionItem {
         label: "main",
         source_range: [35; 39),
+        delete: [35; 39),
+        insert: "main",
         kind: Function,
         detail: "fn main()"
     }
index 2ba9c82b04ae60a939c0efe45bc395c69229e402..39fff2cb7666c48049f71e67b5aecd6b9ab99f4c 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.843178841Z"
+created: "2019-02-18T09:22:24.268227065Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,6 +8,8 @@ expression: kind_completions
     CompletionItem {
         label: "new",
         source_range: [67; 69),
+        delete: [67; 69),
+        insert: "new",
         kind: Method,
         detail: "fn new() -> Foo"
     }
index c071ff198d345e6eb339287475567ebf7ae081c7..ef77816ec1f35d8e7ed18dd0ecdaee98125b19a8 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.808400485Z"
+created: "2019-02-18T09:22:24.213677341Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,6 +8,8 @@ expression: kind_completions
     CompletionItem {
         label: "foo",
         source_range: [40; 41),
+        delete: [40; 41),
+        insert: "foo",
         kind: Function,
         detail: "pub fn foo()"
     }
index 68bfbcdcdb887839c3ea1512f9a09867c5bf4f6e..87691b3040249936a5d9ff260a8edde022ebd3f9 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.810202671Z"
+created: "2019-02-18T09:22:24.188564584Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,14 +8,16 @@ expression: kind_completions
     CompletionItem {
         label: "bar",
         source_range: [129; 129),
+        delete: [129; 129),
+        insert: "bar",
         kind: Binding
     },
     CompletionItem {
         label: "foo",
         source_range: [129; 129),
+        delete: [129; 129),
+        insert: "foo()$0",
         kind: Function,
-        detail: "fn foo() ->",
-        insert_text: "foo()$0",
-        insert_text_format: Snippet
+        detail: "fn foo() ->"
     }
 ]
index b4a8443a07d7bff58a73a9a7c62eed044886dd25..1df121523b670322d01d127312c0618fa014c160 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.672144115Z"
+created: "2019-02-18T09:22:24.045355450Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,6 +8,8 @@ expression: kind_completions
     CompletionItem {
         label: "Bar",
         source_range: [116; 116),
+        delete: [116; 116),
+        insert: "Bar",
         kind: EnumVariant,
         detail: "(i32)",
         documentation: Documentation(
@@ -17,6 +19,8 @@ expression: kind_completions
     CompletionItem {
         label: "Foo",
         source_range: [116; 116),
+        delete: [116; 116),
+        insert: "Foo",
         kind: EnumVariant,
         detail: "()",
         documentation: Documentation(
index 8f6defc4f93c6a51089701dcfcf646137177627f..70ea96e1bd76d4e95f9bacd4b485dd6a29f6f864 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.686329490Z"
+created: "2019-02-18T09:22:24.062138085Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,6 +8,8 @@ expression: kind_completions
     CompletionItem {
         label: "Bar",
         source_range: [180; 180),
+        delete: [180; 180),
+        insert: "Bar",
         kind: EnumVariant,
         detail: "(i32, u32)",
         documentation: Documentation(
@@ -17,6 +19,8 @@ expression: kind_completions
     CompletionItem {
         label: "Foo",
         source_range: [180; 180),
+        delete: [180; 180),
+        insert: "Foo",
         kind: EnumVariant,
         detail: "()",
         documentation: Documentation(
@@ -26,6 +30,8 @@ expression: kind_completions
     CompletionItem {
         label: "S",
         source_range: [180; 180),
+        delete: [180; 180),
+        insert: "S",
         kind: EnumVariant,
         detail: "(S)"
     }
index 2a2959fd26ca644dfd97acef5ac1434b2a5536d3..0d36fd6035d4a7d6dd824236acb4ea28d0a3b74c 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.763042807Z"
+created: "2019-02-18T09:22:24.137183638Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,6 +8,8 @@ expression: kind_completions
     CompletionItem {
         label: "other_crate",
         source_range: [4; 4),
+        delete: [4; 4),
+        insert: "other_crate",
         kind: Module
     }
 ]
index 5e1a876daa19ba27ffba82572893e2bbf2dce695..210e5a02d28c78712f7c0fb18db227fd72d40e56 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.765665697Z"
+created: "2019-02-18T09:22:24.143253235Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,14 +8,16 @@ expression: kind_completions
     CompletionItem {
         label: "T",
         source_range: [44; 44),
+        delete: [44; 44),
+        insert: "T",
         kind: TypeParam
     },
     CompletionItem {
         label: "quux",
         source_range: [44; 44),
+        delete: [44; 44),
+        insert: "quux()$0",
         kind: Function,
-        detail: "fn quux<T>()",
-        insert_text: "quux()$0",
-        insert_text_format: Snippet
+        detail: "fn quux<T>()"
     }
 ]
index b0c9bff03d38057eb0760f646cbb0329dfb5a3da..ab8c3044674327d50aea702e7ffddf8dcc6d2ee9 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.768275744Z"
+created: "2019-02-18T09:22:24.149424158Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,11 +8,15 @@ expression: kind_completions
     CompletionItem {
         label: "T",
         source_range: [46; 46),
+        delete: [46; 46),
+        insert: "T",
         kind: TypeParam
     },
     CompletionItem {
         label: "X",
         source_range: [46; 46),
+        delete: [46; 46),
+        insert: "X",
         kind: Struct
     }
 ]
index 8ef0a4b7a6cf1ce14e1643cc427cdf8b807bf362..a4fc447b27795dee34f9f2c96a25c7d54fcf26db 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.808403924Z"
+created: "2019-02-18T09:22:24.224510370Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,17 +8,17 @@ expression: kind_completions
     CompletionItem {
         label: "main",
         source_range: [53; 56),
+        delete: [53; 56),
+        insert: "main()$0",
         kind: Function,
-        detail: "fn main()",
-        insert_text: "main()$0",
-        insert_text_format: Snippet
+        detail: "fn main()"
     },
     CompletionItem {
         label: "no_args",
         source_range: [53; 56),
+        delete: [53; 56),
+        insert: "no_args()$0",
         kind: Function,
-        detail: "fn no_args()",
-        insert_text: "no_args()$0",
-        insert_text_format: Snippet
+        detail: "fn no_args()"
     }
 ]
index 32730639e19c91a9c7e253b876c137e8f0f3d755..b124355d5e18e1cc4ddde1df0716cbfe7bc38a20 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.843178843Z"
+created: "2019-02-18T09:22:24.267013140Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,17 +8,17 @@ expression: kind_completions
     CompletionItem {
         label: "main",
         source_range: [72; 77),
+        delete: [72; 77),
+        insert: "main()$0",
         kind: Function,
-        detail: "fn main()",
-        insert_text: "main()$0",
-        insert_text_format: Snippet
+        detail: "fn main()"
     },
     CompletionItem {
         label: "with_args",
         source_range: [72; 77),
+        delete: [72; 77),
+        insert: "with_args($0)",
         kind: Function,
-        detail: "fn with_args(x: i32, y: String)",
-        insert_text: "with_args($0)",
-        insert_text_format: Snippet
+        detail: "fn with_args(x: i32, y: String)"
     }
 ]
index 99f21b258d62475770fa6004b7dcc3ea2c86035f..fec729d4873510f643ab44fb8c3a901400a8127e 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.877573951Z"
+created: "2019-02-18T09:22:24.303360770Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,9 +8,9 @@ expression: kind_completions
     CompletionItem {
         label: "foo",
         source_range: [139; 140),
+        delete: [139; 140),
+        insert: "foo()$0",
         kind: Method,
-        detail: "fn foo(&self)",
-        insert_text: "foo()$0",
-        insert_text_format: Snippet
+        detail: "fn foo(&self)"
     }
 ]
index 022e3f6e9f38ee33229487835b4103852dcc1024..045e2a4e6f58301af51c8c7d858ef8deb9e084da 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.639066512Z"
+created: "2019-02-18T09:22:23.987788720Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,36 +8,36 @@ expression: kind_completions
     CompletionItem {
         label: "if",
         source_range: [41; 41),
-        kind: Keyword,
-        insert_text: "if $0 {}",
-        insert_text_format: Snippet
+        delete: [41; 41),
+        insert: "if $0 {}",
+        kind: Keyword
     },
     CompletionItem {
         label: "loop",
         source_range: [41; 41),
-        kind: Keyword,
-        insert_text: "loop {$0}",
-        insert_text_format: Snippet
+        delete: [41; 41),
+        insert: "loop {$0}",
+        kind: Keyword
     },
     CompletionItem {
         label: "match",
         source_range: [41; 41),
-        kind: Keyword,
-        insert_text: "match $0 {}",
-        insert_text_format: Snippet
+        delete: [41; 41),
+        insert: "match $0 {}",
+        kind: Keyword
     },
     CompletionItem {
         label: "return",
         source_range: [41; 41),
-        kind: Keyword,
-        insert_text: "return;",
-        insert_text_format: Snippet
+        delete: [41; 41),
+        insert: "return;",
+        kind: Keyword
     },
     CompletionItem {
         label: "while",
         source_range: [41; 41),
-        kind: Keyword,
-        insert_text: "while $0 {}",
-        insert_text_format: Snippet
+        delete: [41; 41),
+        insert: "while $0 {}",
+        kind: Keyword
     }
 ]
index fd63c1678922be17ae4df8a3f2859fb60b232d7a..b08efa522eae0289729e361ab43fb5b19f9304a1 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.630760038Z"
+created: "2019-02-18T09:22:23.984740354Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,50 +8,50 @@ expression: kind_completions
     CompletionItem {
         label: "else",
         source_range: [92; 92),
-        kind: Keyword,
-        insert_text: "else {$0}",
-        insert_text_format: Snippet
+        delete: [92; 92),
+        insert: "else {$0}",
+        kind: Keyword
     },
     CompletionItem {
         label: "else if",
         source_range: [92; 92),
-        kind: Keyword,
-        insert_text: "else if $0 {}",
-        insert_text_format: Snippet
+        delete: [92; 92),
+        insert: "else if $0 {}",
+        kind: Keyword
     },
     CompletionItem {
         label: "if",
         source_range: [92; 92),
-        kind: Keyword,
-        insert_text: "if $0 {}",
-        insert_text_format: Snippet
+        delete: [92; 92),
+        insert: "if $0 {}",
+        kind: Keyword
     },
     CompletionItem {
         label: "loop",
         source_range: [92; 92),
-        kind: Keyword,
-        insert_text: "loop {$0}",
-        insert_text_format: Snippet
+        delete: [92; 92),
+        insert: "loop {$0}",
+        kind: Keyword
     },
     CompletionItem {
         label: "match",
         source_range: [92; 92),
-        kind: Keyword,
-        insert_text: "match $0 {}",
-        insert_text_format: Snippet
+        delete: [92; 92),
+        insert: "match $0 {}",
+        kind: Keyword
     },
     CompletionItem {
         label: "return",
         source_range: [92; 92),
-        kind: Keyword,
-        insert_text: "return;",
-        insert_text_format: Snippet
+        delete: [92; 92),
+        insert: "return;",
+        kind: Keyword
     },
     CompletionItem {
         label: "while",
         source_range: [92; 92),
-        kind: Keyword,
-        insert_text: "while $0 {}",
-        insert_text_format: Snippet
+        delete: [92; 92),
+        insert: "while $0 {}",
+        kind: Keyword
     }
 ]
index 90f769078339127b39375f3a504f04e039ef15ac..e2b9214fbc1c0a703af4bc4877767926118f46ae 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.659527166Z"
+created: "2019-02-18T09:22:24.049699338Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,36 +8,36 @@ expression: kind_completions
     CompletionItem {
         label: "if",
         source_range: [48; 48),
-        kind: Keyword,
-        insert_text: "if $0 {}",
-        insert_text_format: Snippet
+        delete: [48; 48),
+        insert: "if $0 {}",
+        kind: Keyword
     },
     CompletionItem {
         label: "loop",
         source_range: [48; 48),
-        kind: Keyword,
-        insert_text: "loop {$0}",
-        insert_text_format: Snippet
+        delete: [48; 48),
+        insert: "loop {$0}",
+        kind: Keyword
     },
     CompletionItem {
         label: "match",
         source_range: [48; 48),
-        kind: Keyword,
-        insert_text: "match $0 {}",
-        insert_text_format: Snippet
+        delete: [48; 48),
+        insert: "match $0 {}",
+        kind: Keyword
     },
     CompletionItem {
         label: "return",
         source_range: [48; 48),
-        kind: Keyword,
-        insert_text: "return $0;",
-        insert_text_format: Snippet
+        delete: [48; 48),
+        insert: "return $0;",
+        kind: Keyword
     },
     CompletionItem {
         label: "while",
         source_range: [48; 48),
-        kind: Keyword,
-        insert_text: "while $0 {}",
-        insert_text_format: Snippet
+        delete: [48; 48),
+        insert: "while $0 {}",
+        kind: Keyword
     }
 ]
index 5e7ec108c935b20f18602d3bb756004ff7c57505..1ea7eb5ceabab9c29b62e05e36565b35fef16df5 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.696757543Z"
+created: "2019-02-18T09:22:24.090949782Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,36 +8,36 @@ expression: kind_completions
     CompletionItem {
         label: "if",
         source_range: [41; 41),
-        kind: Keyword,
-        insert_text: "if $0 {}",
-        insert_text_format: Snippet
+        delete: [41; 41),
+        insert: "if $0 {}",
+        kind: Keyword
     },
     CompletionItem {
         label: "loop",
         source_range: [41; 41),
-        kind: Keyword,
-        insert_text: "loop {$0}",
-        insert_text_format: Snippet
+        delete: [41; 41),
+        insert: "loop {$0}",
+        kind: Keyword
     },
     CompletionItem {
         label: "match",
         source_range: [41; 41),
-        kind: Keyword,
-        insert_text: "match $0 {}",
-        insert_text_format: Snippet
+        delete: [41; 41),
+        insert: "match $0 {}",
+        kind: Keyword
     },
     CompletionItem {
         label: "return",
         source_range: [41; 41),
-        kind: Keyword,
-        insert_text: "return;",
-        insert_text_format: Snippet
+        delete: [41; 41),
+        insert: "return;",
+        kind: Keyword
     },
     CompletionItem {
         label: "while",
         source_range: [41; 41),
-        kind: Keyword,
-        insert_text: "while $0 {}",
-        insert_text_format: Snippet
+        delete: [41; 41),
+        insert: "while $0 {}",
+        kind: Keyword
     }
 ]
index f969a843b042b96eb02823c06ab39197d6b7d917..76d5daf556b79ad6409d161a66471506ed311d2f 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.633925638Z"
+created: "2019-02-18T09:22:23.988755424Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,20 +8,22 @@ expression: kind_completions
     CompletionItem {
         label: "crate",
         source_range: [17; 17),
-        kind: Keyword,
-        insert_text: "crate::",
-        insert_text_format: PlainText
+        delete: [17; 17),
+        insert: "crate::",
+        kind: Keyword
     },
     CompletionItem {
         label: "self",
         source_range: [17; 17),
+        delete: [17; 17),
+        insert: "self",
         kind: Keyword
     },
     CompletionItem {
         label: "super",
         source_range: [17; 17),
-        kind: Keyword,
-        insert_text: "super::",
-        insert_text_format: PlainText
+        delete: [17; 17),
+        insert: "super::",
+        kind: Keyword
     }
 ]
index bbbdeae8fc385c66e1d1c9efc547de6500ac704a..ee8bf4ca12b3e9e6d40c5aa847309198d7f24422 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.658885169Z"
+created: "2019-02-18T09:22:24.030382527Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,13 +8,15 @@ expression: kind_completions
     CompletionItem {
         label: "self",
         source_range: [20; 20),
+        delete: [20; 20),
+        insert: "self",
         kind: Keyword
     },
     CompletionItem {
         label: "super",
         source_range: [20; 20),
-        kind: Keyword,
-        insert_text: "super::",
-        insert_text_format: PlainText
+        delete: [20; 20),
+        insert: "super::",
+        kind: Keyword
     }
 ]
index 84475e0d80ebff8605a2013367e1ef116de98231..b44db276e176b9ee62f3016e08d8c3324fac060d 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.688856977Z"
+created: "2019-02-18T09:22:24.073607133Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,13 +8,15 @@ expression: kind_completions
     CompletionItem {
         label: "self",
         source_range: [24; 24),
+        delete: [24; 24),
+        insert: "self",
         kind: Keyword
     },
     CompletionItem {
         label: "super",
         source_range: [24; 24),
-        kind: Keyword,
-        insert_text: "super::",
-        insert_text_format: PlainText
+        delete: [24; 24),
+        insert: "super::",
+        kind: Keyword
     }
 ]
index 5d12dd41bbebd92419c5dd1e6efd3a906e22812c..f220d35c265dccd743ecc1cfe29ad934e1eff16c 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.638715790Z"
+created: "2019-02-18T09:22:23.989188654Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,36 +8,36 @@ expression: kind_completions
     CompletionItem {
         label: "if",
         source_range: [83; 83),
-        kind: Keyword,
-        insert_text: "if $0 {}",
-        insert_text_format: Snippet
+        delete: [83; 83),
+        insert: "if $0 {}",
+        kind: Keyword
     },
     CompletionItem {
         label: "loop",
         source_range: [83; 83),
-        kind: Keyword,
-        insert_text: "loop {$0}",
-        insert_text_format: Snippet
+        delete: [83; 83),
+        insert: "loop {$0}",
+        kind: Keyword
     },
     CompletionItem {
         label: "match",
         source_range: [83; 83),
-        kind: Keyword,
-        insert_text: "match $0 {}",
-        insert_text_format: Snippet
+        delete: [83; 83),
+        insert: "match $0 {}",
+        kind: Keyword
     },
     CompletionItem {
         label: "return",
         source_range: [83; 83),
-        kind: Keyword,
-        insert_text: "return $0;",
-        insert_text_format: Snippet
+        delete: [83; 83),
+        insert: "return $0;",
+        kind: Keyword
     },
     CompletionItem {
         label: "while",
         source_range: [83; 83),
-        kind: Keyword,
-        insert_text: "while $0 {}",
-        insert_text_format: Snippet
+        delete: [83; 83),
+        insert: "while $0 {}",
+        kind: Keyword
     }
 ]
index 5866369b65768395f76667a486d58af9578a2a79..d2093acdfd8e9c3c0562041395ea3b0e5c8f7cde 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.661936290Z"
+created: "2019-02-18T09:22:24.036383875Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,36 +8,36 @@ expression: kind_completions
     CompletionItem {
         label: "if",
         source_range: [83; 83),
-        kind: Keyword,
-        insert_text: "if $0 {}",
-        insert_text_format: Snippet
+        delete: [83; 83),
+        insert: "if $0 {}",
+        kind: Keyword
     },
     CompletionItem {
         label: "loop",
         source_range: [83; 83),
-        kind: Keyword,
-        insert_text: "loop {$0}",
-        insert_text_format: Snippet
+        delete: [83; 83),
+        insert: "loop {$0}",
+        kind: Keyword
     },
     CompletionItem {
         label: "match",
         source_range: [83; 83),
-        kind: Keyword,
-        insert_text: "match $0 {}",
-        insert_text_format: Snippet
+        delete: [83; 83),
+        insert: "match $0 {}",
+        kind: Keyword
     },
     CompletionItem {
         label: "return",
         source_range: [83; 83),
-        kind: Keyword,
-        insert_text: "return $0;",
-        insert_text_format: Snippet
+        delete: [83; 83),
+        insert: "return $0;",
+        kind: Keyword
     },
     CompletionItem {
         label: "while",
         source_range: [83; 83),
-        kind: Keyword,
-        insert_text: "while $0 {}",
-        insert_text_format: Snippet
+        delete: [83; 83),
+        insert: "while $0 {}",
+        kind: Keyword
     }
 ]
index 4753eece7944763879731266ebe1e822ab8c670f..ce8af2159ee6ee1b443310aff21abd58adb89f2c 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.598946710Z"
+created: "2019-02-18T09:22:23.941335305Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,9 +8,9 @@ expression: kind_completions
     CompletionItem {
         label: "the_method",
         source_range: [249; 249),
+        delete: [249; 249),
+        insert: "the_method()$0",
         kind: Method,
-        detail: "fn the_method(&self)",
-        insert_text: "the_method()$0",
-        insert_text_format: Snippet
+        detail: "fn the_method(&self)"
     }
 ]
index 6cc8ab26c1ade0e1f66caea65e158583ee561446..41a10de14d9e604443e3c1be948982386760e272 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.598948318Z"
+created: "2019-02-18T09:22:23.939676100Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,9 +8,9 @@ expression: kind_completions
     CompletionItem {
         label: "the_method",
         source_range: [144; 144),
+        delete: [144; 144),
+        insert: "the_method()$0",
         kind: Method,
-        detail: "fn the_method(&self)",
-        insert_text: "the_method()$0",
-        insert_text_format: Snippet
+        detail: "fn the_method(&self)"
     }
 ]
index 47579bde1fae0c23d72a5bb129922353d7708323..1da3c3ba204a2ea093a04d3c8a0803067ed7dab0 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.682030298Z"
+created: "2019-02-18T09:22:24.066918191Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,6 +8,8 @@ expression: kind_completions
     CompletionItem {
         label: "my",
         source_range: [23; 25),
+        delete: [23; 25),
+        insert: "my",
         kind: Module,
         documentation: Documentation(
             "Some simple\ndocs describing `mod my`."
index 28efac43fcc44af3dffe9895e1a63ca317b5e23b..86bc8679ded0821a3ef048496cc3b47f2adb3e7f 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.770568686Z"
+created: "2019-02-18T09:22:24.161888678Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,19 +8,23 @@ expression: kind_completions
     CompletionItem {
         label: "Baz",
         source_range: [89; 89),
+        delete: [89; 89),
+        insert: "Baz",
         kind: Enum
     },
     CompletionItem {
         label: "Foo",
         source_range: [89; 89),
+        delete: [89; 89),
+        insert: "Foo",
         kind: Struct
     },
     CompletionItem {
         label: "quux",
         source_range: [89; 89),
+        delete: [89; 89),
+        insert: "quux()$0",
         kind: Function,
-        detail: "fn quux()",
-        insert_text: "quux()$0",
-        insert_text_format: Snippet
+        detail: "fn quux()"
     }
 ]
index 01b6b968cedb8bd27c1c4ae731b7fa5b5f6ade9d..9f796b7caecec79f5b12aa4b7ef637f4d5a20cb8 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.770992040Z"
+created: "2019-02-18T09:22:24.180517419Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,14 +8,16 @@ expression: kind_completions
     CompletionItem {
         label: "Bar",
         source_range: [101; 101),
+        delete: [101; 101),
+        insert: "Bar",
         kind: Struct
     },
     CompletionItem {
         label: "quux",
         source_range: [101; 101),
+        delete: [101; 101),
+        insert: "quux()$0",
         kind: Function,
-        detail: "fn quux()",
-        insert_text: "quux()$0",
-        insert_text_format: Snippet
+        detail: "fn quux()"
     }
 ]
index e95763580b6b4634cdae5877f42059d88c1e9e79..4920e500eb6833aced0b404ca2ffa780b949fb8a 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.689653720Z"
+created: "2019-02-18T09:22:24.085605313Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,11 +8,15 @@ expression: kind_completions
     CompletionItem {
         label: "Spam",
         source_range: [12; 14),
+        delete: [12; 14),
+        insert: "Spam",
         kind: Struct
     },
     CompletionItem {
         label: "foo",
         source_range: [12; 14),
+        delete: [12; 14),
+        insert: "foo",
         kind: Module
     }
 ]
index 1295355a2c2a4b4ec54c5951dd61dcbbd2395692..038e7f4025b77425e92965f406aea98a3fe6b14a 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.641375216Z"
+created: "2019-02-18T09:22:23.999953358Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,44 +8,50 @@ expression: kind_completions
     CompletionItem {
         label: "break",
         source_range: [106; 108),
+        delete: [106; 108),
+        insert: "break",
         kind: Keyword
     },
     CompletionItem {
         label: "continue",
         source_range: [106; 108),
+        delete: [106; 108),
+        insert: "continue",
         kind: Keyword
     },
     CompletionItem {
         label: "if",
         source_range: [106; 108),
-        kind: Keyword,
-        insert_text: "if $0 {}",
-        insert_text_format: Snippet
+        delete: [106; 108),
+        insert: "if $0 {}",
+        kind: Keyword
     },
     CompletionItem {
         label: "loop",
         source_range: [106; 108),
-        kind: Keyword,
-        insert_text: "loop {$0}",
-        insert_text_format: Snippet
+        delete: [106; 108),
+        insert: "loop {$0}",
+        kind: Keyword
     },
     CompletionItem {
         label: "match",
         source_range: [106; 108),
-        kind: Keyword,
-        insert_text: "match $0 {}",
-        insert_text_format: Snippet
+        delete: [106; 108),
+        insert: "match $0 {}",
+        kind: Keyword
     },
     CompletionItem {
         label: "return",
         source_range: [106; 108),
+        delete: [106; 108),
+        insert: "return",
         kind: Keyword
     },
     CompletionItem {
         label: "while",
         source_range: [106; 108),
-        kind: Keyword,
-        insert_text: "while $0 {}",
-        insert_text_format: Snippet
+        delete: [106; 108),
+        insert: "while $0 {}",
+        kind: Keyword
     }
 ]
index dba925f7cd9652a5567ac172ddaf7aaaaeea3c24..cab77f5a257ac6b969234a6ddecafa362610295f 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.606265507Z"
+created: "2019-02-18T09:22:23.949634602Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,6 +8,8 @@ expression: kind_completions
     CompletionItem {
         label: "file_id: FileId",
         source_range: [98; 102),
+        delete: [98; 102),
+        insert: "file_id: FileId",
         lookup: "file_id"
     }
 ]
index c5873becbd33e0f3752254f9876b4b48edc43a06..8fbee160c303abb000e8a8a270af811403cba029 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.606265538Z"
+created: "2019-02-18T09:22:23.949634355Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,6 +8,8 @@ expression: kind_completions
     CompletionItem {
         label: "file_id: FileId",
         source_range: [98; 102),
+        delete: [98; 102),
+        insert: "file_id: FileId",
         lookup: "file_id"
     }
 ]
index 5231db54c10974a452c18a153c9a55f13622d9b2..76eeadb6db9e2d0f3c44362df9c4fcdd88fd934c 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.628419014Z"
+created: "2019-02-18T09:22:23.974417169Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,6 +8,8 @@ expression: kind_completions
     CompletionItem {
         label: "file_id: FileId",
         source_range: [269; 273),
+        delete: [269; 273),
+        insert: "file_id: FileId",
         lookup: "file_id"
     }
 ]
index bd22d546acd504352b2343c2cb8c1312dda9246b..2b5435f0ce9e46934501c3cd65bb4b7e5b00019e 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.734401559Z"
+created: "2019-02-18T09:22:24.127119709Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,106 +8,50 @@ expression: kind_completions
     CompletionItem {
         label: "dbg",
         source_range: [76; 76),
-        detail: "dbg!(expr)",
-        insert_text: "dbg!(bar)",
-        insert_text_format: Snippet,
-        text_edit: TextEdit {
-            atoms: [
-                AtomTextEdit {
-                    delete: [72; 76),
-                    insert: ""
-                }
-            ]
-        }
+        delete: [72; 76),
+        insert: "dbg!(bar)",
+        detail: "dbg!(expr)"
     },
     CompletionItem {
         label: "if",
         source_range: [76; 76),
-        detail: "if expr {}",
-        insert_text: "if bar {$0}",
-        insert_text_format: Snippet,
-        text_edit: TextEdit {
-            atoms: [
-                AtomTextEdit {
-                    delete: [72; 76),
-                    insert: ""
-                }
-            ]
-        }
+        delete: [72; 76),
+        insert: "if bar {$0}",
+        detail: "if expr {}"
     },
     CompletionItem {
         label: "match",
         source_range: [76; 76),
-        detail: "match expr {}",
-        insert_text: "match bar {\n${1:_} => {$0\\},\n}",
-        insert_text_format: Snippet,
-        text_edit: TextEdit {
-            atoms: [
-                AtomTextEdit {
-                    delete: [72; 76),
-                    insert: ""
-                }
-            ]
-        }
+        delete: [72; 76),
+        insert: "match bar {\n${1:_} => {$0\\},\n}",
+        detail: "match expr {}"
     },
     CompletionItem {
         label: "not",
         source_range: [76; 76),
-        detail: "!expr",
-        insert_text: "!bar",
-        insert_text_format: Snippet,
-        text_edit: TextEdit {
-            atoms: [
-                AtomTextEdit {
-                    delete: [72; 76),
-                    insert: ""
-                }
-            ]
-        }
+        delete: [72; 76),
+        insert: "!bar",
+        detail: "!expr"
     },
     CompletionItem {
         label: "ref",
         source_range: [76; 76),
-        detail: "&expr",
-        insert_text: "&bar",
-        insert_text_format: Snippet,
-        text_edit: TextEdit {
-            atoms: [
-                AtomTextEdit {
-                    delete: [72; 76),
-                    insert: ""
-                }
-            ]
-        }
+        delete: [72; 76),
+        insert: "&bar",
+        detail: "&expr"
     },
     CompletionItem {
         label: "refm",
         source_range: [76; 76),
-        detail: "&mut expr",
-        insert_text: "&mut bar",
-        insert_text_format: Snippet,
-        text_edit: TextEdit {
-            atoms: [
-                AtomTextEdit {
-                    delete: [72; 76),
-                    insert: ""
-                }
-            ]
-        }
+        delete: [72; 76),
+        insert: "&mut bar",
+        detail: "&mut expr"
     },
     CompletionItem {
         label: "while",
         source_range: [76; 76),
-        detail: "while expr {}",
-        insert_text: "while bar {\n$0\n}",
-        insert_text_format: Snippet,
-        text_edit: TextEdit {
-            atoms: [
-                AtomTextEdit {
-                    delete: [72; 76),
-                    insert: ""
-                }
-            ]
-        }
+        delete: [72; 76),
+        insert: "while bar {\n$0\n}",
+        detail: "while expr {}"
     }
 ]
index 25c5007e4936bd6efc9ffc929e82743d62e44beb..0738cf466ca079c6c4fe67b9e153f64d533eef8a 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.780512486Z"
+created: "2019-02-18T09:22:24.182964414Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,14 +8,16 @@ expression: kind_completions
     CompletionItem {
         label: "Foo",
         source_range: [47; 47),
+        delete: [47; 47),
+        insert: "Foo",
         kind: Struct
     },
     CompletionItem {
         label: "x",
         source_range: [47; 47),
+        delete: [47; 47),
+        insert: "x()$0",
         kind: Function,
-        detail: "fn x() ->",
-        insert_text: "x()$0",
-        insert_text_format: Snippet
+        detail: "fn x() ->"
     }
 ]
index d390be2dc8c6f0aba3414b9aab501c7354559377..baf12cae130344ebc9d15a79175219f302382f55 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.774705610Z"
+created: "2019-02-18T09:22:24.174038680Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,11 +8,15 @@ expression: kind_completions
     CompletionItem {
         label: "Self",
         source_range: [25; 25),
+        delete: [25; 25),
+        insert: "Self",
         kind: TypeParam
     },
     CompletionItem {
         label: "self",
         source_range: [25; 25),
+        delete: [25; 25),
+        insert: "self",
         kind: Binding
     }
 ]
index 6ad919849fbf5574fd9b52a6309259932616f342..fce2d64799990a76e83e99bf11083bb1f4bf6b0f 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.799497268Z"
+created: "2019-02-18T09:22:24.191576723Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,15 +8,15 @@ expression: kind_completions
     CompletionItem {
         label: "pd",
         source_range: [17; 17),
-        kind: Snippet,
-        insert_text: "eprintln!(\"$0 = {:?}\", $0);",
-        insert_text_format: Snippet
+        delete: [17; 17),
+        insert: "eprintln!(\"$0 = {:?}\", $0);",
+        kind: Snippet
     },
     CompletionItem {
         label: "ppd",
         source_range: [17; 17),
-        kind: Snippet,
-        insert_text: "eprintln!(\"$0 = {:#?}\", $0);",
-        insert_text_format: Snippet
+        delete: [17; 17),
+        insert: "eprintln!(\"$0 = {:#?}\", $0);",
+        kind: Snippet
     }
 ]
index 43367010bccbaacb67cf449fcff9d1738e2de3c2..d2b1a5f0ef3acb10084d2381ad5d1421475dc8d5 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.800831987Z"
+created: "2019-02-18T09:22:24.187670733Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,16 +8,16 @@ expression: kind_completions
     CompletionItem {
         label: "Test function",
         source_range: [66; 66),
+        delete: [66; 66),
+        insert: "#[test]\nfn ${1:feature}() {\n    $0\n}",
         kind: Snippet,
-        lookup: "tfn",
-        insert_text: "#[test]\nfn ${1:feature}() {\n    $0\n}",
-        insert_text_format: Snippet
+        lookup: "tfn"
     },
     CompletionItem {
         label: "pub(crate)",
         source_range: [66; 66),
-        kind: Snippet,
-        insert_text: "pub(crate) $0",
-        insert_text_format: Snippet
+        delete: [66; 66),
+        insert: "pub(crate) $0",
+        kind: Snippet
     }
 ]
index c78b06d3c9a60a1c7c5341e86c5fcaf7a2856b6e..6ad4c5acc525f6203f5f5aa4a46ce6abfa29b0d8 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.704544613Z"
+created: "2019-02-18T09:22:24.093406123Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,6 +8,8 @@ expression: kind_completions
     CompletionItem {
         label: "C",
         source_range: [107; 107),
+        delete: [107; 107),
+        insert: "C",
         kind: Const,
         detail: "const C: i32 = 42;",
         documentation: Documentation(
index 67638b4d149b634ccef28c7b74c325f4d64e08b8..163b325c3923659c8c320c3c2e4cf17d558ec705 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.704544615Z"
+created: "2019-02-18T09:22:24.093082839Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,12 +8,12 @@ expression: kind_completions
     CompletionItem {
         label: "m",
         source_range: [100; 100),
+        delete: [100; 100),
+        insert: "m()$0",
         kind: Method,
         detail: "fn m()",
         documentation: Documentation(
             "An associated method"
-        ),
-        insert_text: "m()$0",
-        insert_text_format: Snippet
+        )
     }
 ]
index c5f5b9f10c2622b992d7c8ad313f9c357f113392..583bda2257d07f9c06daabb0e9a25132a4b2471e 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.725668999Z"
+created: "2019-02-18T09:22:24.090876030Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,6 +8,8 @@ expression: kind_completions
     CompletionItem {
         label: "T",
         source_range: [101; 101),
+        delete: [101; 101),
+        insert: "T",
         kind: TypeAlias,
         detail: "type T = i32;",
         documentation: Documentation(
index ffad98f7d44f7bfbaa61b6cd83eb17ce5cc146b3..58271b873fac410381113679580291c0c2e8047c 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.599230647Z"
+created: "2019-02-18T09:22:23.939645902Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,6 +8,8 @@ expression: kind_completions
     CompletionItem {
         label: "the_field",
         source_range: [85; 85),
+        delete: [85; 85),
+        insert: "the_field",
         kind: Field,
         detail: "u32"
     }
index 99aef933aabde6952a38c769892004255c4e0812..b38867b81dafcc45b87562018283ad1cacbb0889 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.598966298Z"
+created: "2019-02-18T09:22:23.940872916Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,14 +8,16 @@ expression: kind_completions
     CompletionItem {
         label: "foo",
         source_range: [126; 126),
+        delete: [126; 126),
+        insert: "foo()$0",
         kind: Method,
-        detail: "fn foo(&self)",
-        insert_text: "foo()$0",
-        insert_text_format: Snippet
+        detail: "fn foo(&self)"
     },
     CompletionItem {
         label: "the_field",
         source_range: [126; 126),
+        delete: [126; 126),
+        insert: "the_field",
         kind: Field,
         detail: "(u32, i32)"
     }
index 52991b9fb22433d81a37e9cb0b7e32064322a20d..8e5cab43e9bca4401a1e9b43563a05d08b0d7131 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.598965593Z"
+created: "2019-02-18T09:22:23.940872918Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,14 +8,16 @@ expression: kind_completions
     CompletionItem {
         label: "foo",
         source_range: [187; 187),
+        delete: [187; 187),
+        insert: "foo()$0",
         kind: Method,
-        detail: "fn foo(self)",
-        insert_text: "foo()$0",
-        insert_text_format: Snippet
+        detail: "fn foo(self)"
     },
     CompletionItem {
         label: "the_field",
         source_range: [187; 187),
+        delete: [187; 187),
+        insert: "the_field",
         kind: Field,
         detail: "(u32,)",
         documentation: Documentation(
index 5b6ed9d7776d1dcbd213097a386a290cd9a80fde..3f27806211d0db309e05553829b83cd896c90c5a 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.598973382Z"
+created: "2019-02-18T09:22:23.939710971Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,12 +8,16 @@ expression: kind_completions
     CompletionItem {
         label: "0",
         source_range: [75; 75),
+        delete: [75; 75),
+        insert: "0",
         kind: Field,
         detail: "i32"
     },
     CompletionItem {
         label: "1",
         source_range: [75; 75),
+        delete: [75; 75),
+        insert: "1",
         kind: Field,
         detail: "f64"
     }
index 3c670ad5b1d8ea21925947e448ab48dcf8260d19..34e70c35dd9c350394cbd9d1a263e27c9a7ab7cf 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.726365989Z"
+created: "2019-02-18T09:22:24.098574884Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,11 +8,15 @@ expression: kind_completions
     CompletionItem {
         label: "Spam",
         source_range: [11; 13),
+        delete: [11; 13),
+        insert: "Spam",
         kind: Struct
     },
     CompletionItem {
         label: "foo",
         source_range: [11; 13),
+        delete: [11; 13),
+        insert: "foo",
         kind: Module
     }
 ]
index bf314de8437dc4b167e0c5dba1a2bd3a4f91dbfd..d15f1905bae2625f61676363342dc565cf789dc2 100644 (file)
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-18T07:29:59.731789946Z"
+created: "2019-02-18T09:22:24.102063333Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -8,6 +8,8 @@ expression: kind_completions
     CompletionItem {
         label: "Bar",
         source_range: [26; 26),
+        delete: [26; 26),
+        insert: "Bar",
         kind: Struct
     }
 ]
index c3192a1e5182f23e2d651523138d0a41f00b5d9a..f0f67b6636137f7303a62f207f5af57058ec1ed2 100644 (file)
@@ -79,11 +79,31 @@ impl ConvWith for CompletionItem {
     type Ctx = LineIndex;
     type Output = ::lsp_types::CompletionItem;
 
-    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(edit) = self.take_text_edit() { Some(edit.conv_with(ctx)) } else { None };
+    fn conv_with(self, ctx: &LineIndex) -> ::lsp_types::CompletionItem {
+        let mut additional_text_edits = Vec::new();
+        let mut text_edit = None;
+        // LSP does not allow arbitrary edits in completion, so we have to do a
+        // non-trivial mapping here.
+        for atom_edit in self.text_edit().as_atoms() {
+            if self.source_range().is_subrange(&atom_edit.delete) {
+                text_edit = Some(if atom_edit.delete == self.source_range() {
+                    atom_edit.conv_with(ctx)
+                } else {
+                    assert!(self.source_range().end() == atom_edit.delete.end());
+                    let range1 =
+                        TextRange::from_to(atom_edit.delete.start(), self.source_range().start());
+                    let range2 = self.source_range();
+                    let edit1 = AtomTextEdit::replace(range1, String::new());
+                    let edit2 = AtomTextEdit::replace(range2, atom_edit.insert.clone());
+                    additional_text_edits.push(edit1.conv_with(ctx));
+                    edit2.conv_with(ctx)
+                })
+            } else {
+                assert!(self.source_range().intersection(&atom_edit.delete).is_none());
+                additional_text_edits.push(atom_edit.conv_with(ctx));
+            }
+        }
+        let text_edit = text_edit.unwrap();
 
         let mut res = lsp_types::CompletionItem {
             label: self.label().to_string(),
@@ -91,7 +111,7 @@ fn conv_with(mut self, ctx: &LineIndex) -> ::lsp_types::CompletionItem {
             filter_text: Some(self.lookup().to_string()),
             kind: self.kind().map(|it| it.conv()),
             text_edit: Some(text_edit),
-            additional_text_edits,
+            additional_text_edits: Some(additional_text_edits),
             documentation: self.documentation().map(|it| it.conv()),
             ..Default::default()
         };