|
|
@ -1,9 +1,9 @@
|
|
|
|
use crate::helpers;
|
|
|
|
use crate::helpers;
|
|
|
|
use crate::path;
|
|
|
|
use crate::path;
|
|
|
|
use crate::DynError;
|
|
|
|
use crate::DynError;
|
|
|
|
|
|
|
|
|
|
|
|
use helix_term::commands::TYPABLE_COMMAND_LIST;
|
|
|
|
use helix_term::commands::TYPABLE_COMMAND_LIST;
|
|
|
|
use helix_term::health::TsFeature;
|
|
|
|
use helix_term::health::TsFeature;
|
|
|
|
|
|
|
|
use std::collections::HashSet;
|
|
|
|
use std::fs;
|
|
|
|
use std::fs;
|
|
|
|
|
|
|
|
|
|
|
|
pub const TYPABLE_COMMANDS_MD_OUTPUT: &str = "typable-cmd.md";
|
|
|
|
pub const TYPABLE_COMMANDS_MD_OUTPUT: &str = "typable-cmd.md";
|
|
|
@ -95,14 +95,25 @@ pub fn lang_features() -> Result<String, DynError> {
|
|
|
|
.to_owned(),
|
|
|
|
.to_owned(),
|
|
|
|
);
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
row.push(
|
|
|
|
let mut seen_commands = HashSet::new();
|
|
|
|
lc.language_servers
|
|
|
|
let mut commands = String::new();
|
|
|
|
|
|
|
|
for ls_config in lc
|
|
|
|
|
|
|
|
.language_servers
|
|
|
|
.iter()
|
|
|
|
.iter()
|
|
|
|
.filter_map(|ls| config.language_server.get(&ls.name))
|
|
|
|
.filter_map(|ls| config.language_server.get(&ls.name))
|
|
|
|
.map(|s| md_mono(&s.command.clone()))
|
|
|
|
{
|
|
|
|
.collect::<Vec<_>>()
|
|
|
|
let command = &ls_config.command;
|
|
|
|
.join(", "),
|
|
|
|
if !seen_commands.insert(command) {
|
|
|
|
);
|
|
|
|
continue;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if !commands.is_empty() {
|
|
|
|
|
|
|
|
commands.push_str(", ");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
commands.push_str(&md_mono(command));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
row.push(commands);
|
|
|
|
|
|
|
|
|
|
|
|
md.push_str(&md_table_row(&row));
|
|
|
|
md.push_str(&md_table_row(&row));
|
|
|
|
row.clear();
|
|
|
|
row.clear();
|
|
|
|