summaryrefslogtreecommitdiffstats
path: root/vendor/clap_complete/src/shells/fish.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/clap_complete/src/shells/fish.rs')
-rw-r--r--vendor/clap_complete/src/shells/fish.rs29
1 files changed, 18 insertions, 11 deletions
diff --git a/vendor/clap_complete/src/shells/fish.rs b/vendor/clap_complete/src/shells/fish.rs
index 9b516084b..fd2f3a4f8 100644
--- a/vendor/clap_complete/src/shells/fish.rs
+++ b/vendor/clap_complete/src/shells/fish.rs
@@ -27,8 +27,13 @@ impl Generator for Fish {
}
// Escape string inside single quotes
-fn escape_string(string: &str) -> String {
- string.replace('\\', "\\\\").replace('\'', "\\'")
+fn escape_string(string: &str, escape_comma: bool) -> String {
+ let string = string.replace('\\', "\\\\").replace('\'', "\\'");
+ if escape_comma {
+ string.replace(',', "\\,")
+ } else {
+ string
+ }
}
fn gen_fish_inner(
@@ -88,12 +93,13 @@ fn gen_fish_inner(
if let Some(longs) = option.get_long_and_visible_aliases() {
for long in longs {
- template.push_str(format!(" -l {}", escape_string(long)).as_str());
+ template.push_str(format!(" -l {}", escape_string(long, false)).as_str());
}
}
if let Some(data) = option.get_help() {
- template.push_str(format!(" -d '{}'", escape_string(data)).as_str());
+ template
+ .push_str(format!(" -d '{}'", escape_string(&data.to_string(), false)).as_str());
}
template.push_str(value_completion(option).as_str());
@@ -113,12 +119,13 @@ fn gen_fish_inner(
if let Some(longs) = flag.get_long_and_visible_aliases() {
for long in longs {
- template.push_str(format!(" -l {}", escape_string(long)).as_str());
+ template.push_str(format!(" -l {}", escape_string(long, false)).as_str());
}
}
if let Some(data) = flag.get_help() {
- template.push_str(format!(" -d '{}'", escape_string(data)).as_str());
+ template
+ .push_str(format!(" -d '{}'", escape_string(&data.to_string(), false)).as_str());
}
buffer.push_str(template.as_str());
@@ -132,7 +139,7 @@ fn gen_fish_inner(
template.push_str(format!(" -a \"{}\"", &subcommand.get_name()).as_str());
if let Some(data) = subcommand.get_about() {
- template.push_str(format!(" -d '{}'", escape_string(data)).as_str())
+ template.push_str(format!(" -d '{}'", escape_string(&data.to_string(), false)).as_str())
}
buffer.push_str(template.as_str());
@@ -148,11 +155,11 @@ fn gen_fish_inner(
}
fn value_completion(option: &Arg) -> String {
- if !option.is_takes_value_set() {
+ if !option.get_num_args().expect("built").takes_values() {
return "".to_string();
}
- if let Some(data) = option.get_possible_values() {
+ if let Some(data) = crate::generator::utils::possible_values(option) {
// We return the possible values with their own empty description e.g. {a\t,b\t}
// this makes sure that a and b don't get the description of the option or argument
format!(
@@ -163,8 +170,8 @@ fn value_completion(option: &Arg) -> String {
} else {
Some(format!(
"{}\t{}",
- escape_string(value.get_name()).as_str(),
- escape_string(value.get_help().unwrap_or_default()).as_str()
+ escape_string(value.get_name(), true).as_str(),
+ escape_string(&value.get_help().unwrap_or_default().to_string(), true)
))
})
.collect::<Vec<_>>()