about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAleksey Kladov <aleksey.kladov@gmail.com>2020-03-06 17:51:10 +0100
committerAleksey Kladov <aleksey.kladov@gmail.com>2020-03-06 17:51:10 +0100
commit4e7f6c235489eb40c85bb73e75beead3ea7f08c7 (patch)
tree87623cdec8b374953f69cb3e46a73aa2c6bd7006
parent21f40f2b8f2d2ce19c2bc69201e99503a8d15e04 (diff)
downloadrust-4e7f6c235489eb40c85bb73e75beead3ea7f08c7.tar.gz
rust-4e7f6c235489eb40c85bb73e75beead3ea7f08c7.zip
Feature flag for arg snippets
-rw-r--r--crates/ra_ide/src/completion/presentation.rs17
-rw-r--r--crates/ra_ide_db/src/feature_flags.rs1
-rw-r--r--editors/code/package.json4
3 files changed, 18 insertions, 4 deletions
diff --git a/crates/ra_ide/src/completion/presentation.rs b/crates/ra_ide/src/completion/presentation.rs
index e623c47ecd4..841d36c8f87 100644
--- a/crates/ra_ide/src/completion/presentation.rs
+++ b/crates/ra_ide/src/completion/presentation.rs
@@ -221,16 +221,25 @@ impl Completions {
             let (snippet, label) = if params.is_empty() || has_self_param && params.len() == 1 {
                 (format!("{}()$0", name), format!("{}()", name))
             } else {
-                let to_skip = if has_self_param { 1 } else { 0 };
-                let function_params_snippet =
-                    join(
+                let snippet = if ctx
+                    .db
+                    .feature_flags
+                    .get("completion.insertion.add-argument-sippets")
+                {
+                    let to_skip = if has_self_param { 1 } else { 0 };
+                    let function_params_snippet = join(
                         function_signature.parameter_names.iter().skip(to_skip).enumerate().map(
                             |(index, param_name)| format!("${{{}:{}}}", index + 1, param_name),
                         ),
                     )
                     .separator(", ")
                     .to_string();
-                (format!("{}({})$0", name, function_params_snippet), format!("{}(…)", name))
+                    format!("{}({})$0", name, function_params_snippet)
+                } else {
+                    format!("{}($0)", name)
+                };
+
+                (snippet, format!("{}(…)", name))
             };
             builder = builder.lookup_by(name).label(label).insert_snippet(snippet);
         }
diff --git a/crates/ra_ide_db/src/feature_flags.rs b/crates/ra_ide_db/src/feature_flags.rs
index 76655f572c5..d9c9d6cd2b7 100644
--- a/crates/ra_ide_db/src/feature_flags.rs
+++ b/crates/ra_ide_db/src/feature_flags.rs
@@ -54,6 +54,7 @@ impl Default for FeatureFlags {
         FeatureFlags::new(&[
             ("lsp.diagnostics", true),
             ("completion.insertion.add-call-parenthesis", true),
+            ("completion.insertion.add-argument-sippets", true),
             ("completion.enable-postfix", true),
             ("notifications.workspace-loaded", true),
             ("notifications.cargo-toml-not-found", true),
diff --git a/editors/code/package.json b/editors/code/package.json
index 8303586059f..2f442aae822 100644
--- a/editors/code/package.json
+++ b/editors/code/package.json
@@ -197,6 +197,10 @@
                             "type": "boolean",
                             "description": "Whether to add parenthesis when completing functions"
                         },
+                        "completion.insertion.add-argument-sippets": {
+                            "type": "boolean",
+                            "description": "Whether to add argument snippets when completing functions"
+                        },
                         "completion.enable-postfix": {
                             "type": "boolean",
                             "description": "Whether to show postfix snippets like `dbg`, `if`, `not`, etc."