diff options
Diffstat (limited to 'src/cmds/comp')
| -rw-r--r-- | src/cmds/comp/helpdoc.rs | 22 | ||||
| -rw-r--r-- | src/cmds/comp/sheetdump.rs | 15 | ||||
| -rw-r--r-- | src/cmds/comp/sheetedit.rs | 20 | ||||
| -rw-r--r-- | src/cmds/comp/version.rs | 16 | ||||
| -rw-r--r-- | src/cmds/comp/workspace_alias.rs | 32 | ||||
| -rw-r--r-- | src/cmds/comp/workspace_sheet.rs | 55 |
6 files changed, 109 insertions, 51 deletions
diff --git a/src/cmds/comp/helpdoc.rs b/src/cmds/comp/helpdoc.rs index 7f07cad..423e2bf 100644 --- a/src/cmds/comp/helpdoc.rs +++ b/src/cmds/comp/helpdoc.rs @@ -1,13 +1,17 @@ -use crate::systems::{comp::context::CompletionContext, helpdoc}; +use comp_system_macros::file_suggest; -pub fn comp(ctx: CompletionContext) -> Option<Vec<String>> { +use crate::systems::{ + comp::{context::CompletionContext, result::CompletionResult}, + helpdoc, +}; + +pub fn comp(ctx: CompletionContext) -> CompletionResult { if ctx.previous_word == "helpdoc" { - return Some( - helpdoc::get_helpdoc_list() - .iter() - .map(|s| s.to_string()) - .collect(), - ); + return helpdoc::get_helpdoc_list() + .iter() + .map(|s| s.to_string()) + .collect::<Vec<String>>() + .into(); } - None + file_suggest!() } diff --git a/src/cmds/comp/sheetdump.rs b/src/cmds/comp/sheetdump.rs new file mode 100644 index 0000000..e3105c0 --- /dev/null +++ b/src/cmds/comp/sheetdump.rs @@ -0,0 +1,15 @@ +use comp_system_macros::{file_suggest, suggest}; +use rust_i18n::t; + +use crate::systems::comp::{context::CompletionContext, result::CompletionResult}; + +pub fn comp(ctx: CompletionContext) -> CompletionResult { + if ctx.current_word.starts_with('-') { + return suggest!( + "--no-sort" = t!("sheetdump.comp.no_sort").trim(), + "--no-pretty" = t!("sheetdump.comp.no_pretty").trim() + ) + .into(); + } + file_suggest!() +} diff --git a/src/cmds/comp/sheetedit.rs b/src/cmds/comp/sheetedit.rs new file mode 100644 index 0000000..1ebf63d --- /dev/null +++ b/src/cmds/comp/sheetedit.rs @@ -0,0 +1,20 @@ +use comp_system_macros::{file_suggest, suggest}; +use rust_i18n::t; + +use crate::systems::comp::{context::CompletionContext, result::CompletionResult}; + +pub fn comp(ctx: CompletionContext) -> CompletionResult { + if ctx.current_word.starts_with('-') { + return suggest!( + "-e" = t!("sheetedit.comp.editor").trim(), + "--editor" = t!("sheetedit.comp.editor").trim(), + ) + .into(); + } + + if ctx.previous_word == "-e" || ctx.previous_word == "--editor" { + return suggest!().into(); + } + + file_suggest!() +} diff --git a/src/cmds/comp/version.rs b/src/cmds/comp/version.rs new file mode 100644 index 0000000..2c6b674 --- /dev/null +++ b/src/cmds/comp/version.rs @@ -0,0 +1,16 @@ +use comp_system_macros::{file_suggest, suggest}; +use rust_i18n::t; + +use crate::systems::comp::{context::CompletionContext, result::CompletionResult}; + +pub fn comp(ctx: CompletionContext) -> CompletionResult { + if ctx.current_word.starts_with('-') { + return suggest!( + "-c" = t!("version.comp.with_compile_info").trim(), + "--with-compile-info" = t!("version.comp.with_compile_info").trim(), + "--no-banner" = t!("version.comp.no_banner").trim() + ) + .into(); + } + file_suggest!() +} diff --git a/src/cmds/comp/workspace_alias.rs b/src/cmds/comp/workspace_alias.rs index 5efabfa..cd39c9d 100644 --- a/src/cmds/comp/workspace_alias.rs +++ b/src/cmds/comp/workspace_alias.rs @@ -1,25 +1,25 @@ -use cli_utils::string_vec; +use comp_system_macros::{file_suggest, suggest}; +use rust_i18n::t; -use crate::systems::comp::context::CompletionContext; - -pub fn comp(ctx: CompletionContext) -> Option<Vec<String>> { - if ctx.all_words.contains(&"--insert".to_string()) { - if ctx.all_words.len() > 7 { - return None; - } - } else if ctx.all_words.len() > 5 { - return None; - } +use crate::systems::comp::{context::CompletionContext, result::CompletionResult}; +pub fn comp(ctx: CompletionContext) -> CompletionResult { if ctx.current_word.starts_with('-') { - return Some(string_vec![ - "-i", "--insert", "-Q", "--query", "-e", "--erase", "--to", - ]); + return suggest!( + "-i" = t!("workspace_alias.comp.insert").trim(), + "--insert" = t!("workspace_alias.comp.insert").trim(), + "-Q" = t!("workspace_alias.comp.query").trim(), + "--query" = t!("workspace_alias.comp.query").trim(), + "-e" = t!("workspace_alias.comp.erase").trim(), + "--erase" = t!("workspace_alias.comp.erase").trim(), + "--to" = t!("workspace_alias.comp.to").trim() + ) + .into(); } if ctx.previous_word == "--to" { - return Some(vec![]); + return suggest!().into(); } - None + file_suggest!() } diff --git a/src/cmds/comp/workspace_sheet.rs b/src/cmds/comp/workspace_sheet.rs index 89cd259..d74f3c8 100644 --- a/src/cmds/comp/workspace_sheet.rs +++ b/src/cmds/comp/workspace_sheet.rs @@ -1,36 +1,39 @@ -use crate::systems::comp::context::CompletionContext; -use cli_utils::string_vec; +use comp_system_macros::{file_suggest, suggest}; use just_enough_vcs::system::workspace::workspace::manager::WorkspaceManager; +use rust_i18n::t; -pub fn comp(ctx: CompletionContext) -> Option<Vec<String>> { - if ctx.all_words.len() > 5 { - return None; - } - - if (ctx.all_words.contains(&"--list-all".to_string()) - || ctx.all_words.contains(&"-A".to_string())) - && ctx.all_words.len() > 4 - { - return None; - } +use crate::systems::comp::{context::CompletionContext, result::CompletionResult}; +pub fn comp(ctx: CompletionContext) -> CompletionResult { if ctx.current_word.starts_with('-') { - return Some(string_vec![ - "-A", - "--list-all", - "-p", - "--print-path", - "-n", - "--new", - "-d", - "--delete", - ]); + return suggest!( + "-A" = t!("workspace_sheet.comp.list_all").trim(), + "--list-all" = t!("workspace_sheet.comp.list_all").trim(), + "-p" = t!("workspace_sheet.comp.print_path").trim(), + "--print-path" = t!("workspace_sheet.comp.print_path").trim(), + "-n" = t!("workspace_sheet.comp.new").trim(), + "--new" = t!("workspace_sheet.comp.new").trim(), + "-d" = t!("workspace_sheet.comp.delete").trim(), + "--delete" = t!("workspace_sheet.comp.delete").trim() + ) + .into(); } if ctx.previous_word == "--new" || ctx.previous_word == "-n" { - return Some(vec![]); + return suggest!().into(); + } + + if ctx.previous_word == "--list-all" + || ctx.previous_word == "-A" + || ctx.previous_word == "--print-path" + || ctx.previous_word == "-p" + || ctx.previous_word == "--delete" + || ctx.previous_word == "-d" + { + let rt = tokio::runtime::Runtime::new().unwrap(); + let names = rt.block_on(WorkspaceManager::new().list_sheet_names()); + return names.into(); } - let rt = tokio::runtime::Runtime::new().unwrap(); - Some(rt.block_on(WorkspaceManager::new().list_sheet_names())) + file_suggest!() } |
