From 032455ebd41b1513636c8473851d5633ba83164d Mon Sep 17 00:00:00 2001 From: luozhiya Date: Tue, 21 May 2024 10:36:23 +0800 Subject: [PATCH 1/2] Adding support for `TranslateText` --- lua/fittencode/api.lua | 14 ++++++++++++ lua/fittencode/bindings.lua | 24 +++++++++++++++++++++ lua/fittencode/engines/actions.lua | 18 ++++++++++++++++ lua/fittencode/prompt_providers/actions.lua | 7 +++++- 4 files changed, 62 insertions(+), 1 deletion(-) diff --git a/lua/fittencode/api.lua b/lua/fittencode/api.lua index 6ab96639..229ee53a 100644 --- a/lua/fittencode/api.lua +++ b/lua/fittencode/api.lua @@ -90,6 +90,20 @@ M.api = { analyze_data = function(opts) return ActionsEngine.analyze_data(opts) end, + ---@param opts? TranslateTextOptions + translate_text = function(opts) + return ActionsEngine.translate_text(opts) + end, + ---@param opts? TranslateTextOptions + translate_text_to_chinese = function(opts) + opts.target_language = 'Chinese' + return ActionsEngine.translate_text(opts) + end, + ---@param opts? TranslateTextOptions + translate_text_to_english = function(opts) + opts.target_language = 'English' + return ActionsEngine.translate_text(opts) + end, ---@param opts? ActionOptions start_chat = function(opts) return ActionsEngine.start_chat(opts) diff --git a/lua/fittencode/bindings.lua b/lua/fittencode/bindings.lua index 361888a4..62001786 100644 --- a/lua/fittencode/bindings.lua +++ b/lua/fittencode/bindings.lua @@ -168,6 +168,24 @@ local function _analyze_data(...) return _action_apis_wrap_content(API.analyze_data, ...) end +local function _translate_text(...) + local args = { ... } + ---@type TranslateTextOptions + local opts = { + target_language = args[1], + content = args[2], + } + return API.translate_text(opts) +end + +local function _translate_text_to_chinese(...) + return _action_apis_wrap_content(API.translate_text_to_chinese, ...) +end + +local function _translate_text_to_english(...) + return _action_apis_wrap_content(API.translate_text_to_english, ...) +end + function M.setup_commands() ---@type FittenCommands local commands = { @@ -201,6 +219,12 @@ function M.setup_commands() guess_programming_language = _guess_programming_language, -- Arguments: data analyze_data = _analyze_data, + -- Arguments: traget_language, text + translate_text = _translate_text, + -- Arguments: text + translate_text_to_chinese = _translate_text_to_chinese, + -- Arguments: text + translate_text_to_english = _translate_text_to_english, -- Arguments: language start_chat = _start_chat, -- Arguments: Nop diff --git a/lua/fittencode/engines/actions.lua b/lua/fittencode/engines/actions.lua index ce979425..d8e76c06 100644 --- a/lua/fittencode/engines/actions.lua +++ b/lua/fittencode/engines/actions.lua @@ -34,6 +34,9 @@ local SC = Status.C ---@field implement_features function ---@field improve_code function ---@field refactor_code function +---@field guess_programming_language function +---@field analyze_data function +---@field translate_text function local ActionsEngine = {} local ACTIONS = { @@ -48,6 +51,7 @@ local ACTIONS = { RefactorCode = 8, GuessProgrammingLanguage = 9, AnalyzeData = 10, + TranslateText = 11, } local current_eval = 1 @@ -81,6 +85,9 @@ local status = nil ---@class ImplementFeaturesOptions : ActionOptions ---@field feature_type string +---@class TranslateTextOptions : ActionOptions +---@field target_language string + ---@param action integer local function get_action_name(action) return Base.tbl_key_by_value(ACTIONS, action) @@ -485,6 +492,17 @@ function ActionsEngine.analyze_data(opts) ActionsEngine.start_action(ACTIONS.AnalyzeData, merged) end +---@param opts? TranslateTextOptions +function ActionsEngine.translate_text(opts) + local defaults = {} + local merged = vim.tbl_deep_extend('force', defaults, opts or {}) + if merged.target_language == nil or #merged.target_language == 0 then + return + end + assert(merged.target_language) + ActionsEngine.start_action(ACTIONS.TranslateText, merged) +end + -- API: ActionOptions.content ---@param opts? ActionOptions function ActionsEngine.start_chat(opts) diff --git a/lua/fittencode/prompt_providers/actions.lua b/lua/fittencode/prompt_providers/actions.lua index 83ddd4df..4299fa8e 100644 --- a/lua/fittencode/prompt_providers/actions.lua +++ b/lua/fittencode/prompt_providers/actions.lua @@ -56,7 +56,7 @@ local function make_range_content(buffer, range) return table.concat(lines, '\n') end -local NO_LANG_ACTIONS = { 'StartChat', 'GuessProgrammingLanguage', 'AnalyzeData' } +local NO_LANG_ACTIONS = { 'StartChat', 'GuessProgrammingLanguage', 'AnalyzeData', 'TranslateText' } local MAP_ACTION_PROMPTS = { StartChat = 'Answer the question above', @@ -82,6 +82,11 @@ local MAP_ACTION_PROMPTS = { RefactorCode = 'Refactor the code above', GuessProgrammingLanguage = 'Guess the programming language of the code above', AnalyzeData = 'Analyze the data above', + TranslateText = function(ctx) + assert(ctx.action_opts) + assert(ctx.action_opts.target_language) + return 'TranslateText the text above' .. ' to ' .. ctx.action_opts.target_language + end } local function make_language(ctx) From 699eda28bab23cc9e73dcc218a3204d66f191df7 Mon Sep 17 00:00:00 2001 From: luozhiya Date: Tue, 21 May 2024 10:36:46 +0800 Subject: [PATCH 2/2] Update `translate_text` document --- README.md | 57 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index efe2875b..ada44c78 100644 --- a/README.md +++ b/README.md @@ -185,6 +185,9 @@ require('cmp').setup({ | `Fitten refactor_code` | Refactor code | | `Fitten guess_programming_language` | Guess programming language | | `Fitten analyze_data` | Analyze data | +| `Fitten translate_text` | Translate text | +| `Fitten translate_text_to_chinese` | Translate text to Chinese | +| `Fitten translate_text_to_english` | Translate text to English | | `Fitten start_chat` | Start chat | ### Default Mappings @@ -227,34 +230,40 @@ vim.log = { ---@class ImplementFeaturesOptions : ActionOptions ---@field feature_type string + +---@class TranslateTextOptions : ActionOptions +---@field target_language string ``` ### List of APIs -| API Prototype | Description | -|------------------------------------------------|-----------------------------------------------------------------| -| `login(username, password)` | Login to Fitten Code AI | -| `logout()` | Logout from Fitten Code AI | -| `register()` | Register to Fitten Code AI | -| `set_log_level(level)` | Set the log level | -| `get_current_status()` | Get the current status of the `InlineEngine` and `ActionEngine` | -| `triggering_completion()` | Manually triggering completion | -| `has_suggestion()` | Check if there is a suggestion | -| `accept_all_suggestions()` | Accept all suggestions | -| `accept_line()` | Accept line | -| `accept_word()` | Accept word | -| `document_code(ActionOptions)` | Document code | -| `edit_code(ActionOptions)` | Edit code | -| `explain_code(ActionOptions)` | Explain code | -| `find_bugs(ActionOptions)` | Find bugs | -| `generate_unit_test(GenerateUnitTestOptions)` | Generate unit test | -| `implement_features(ImplementFeaturesOptions)` | Implement features | -| `improve_code(ActionOptions)` | Improve code | -| `refactor_code(ActionOptions)` | Refactor code | -| `guess_programming_language(ActionOptions)` | Guess programming language | -| `analyze_data(ActionOptions)` | Analyze data | -| `start_chat(ActionOptions)` | Start chat | -| `stop_eval()` | Stop the evaluation | +| API Prototype | Description | +|---------------------------------------------------|-----------------------------------------------------------------| +| `login(username, password)` | Login to Fitten Code AI | +| `logout()` | Logout from Fitten Code AI | +| `register()` | Register to Fitten Code AI | +| `set_log_level(level)` | Set the log level | +| `get_current_status()` | Get the current status of the `InlineEngine` and `ActionEngine` | +| `triggering_completion()` | Manually triggering completion | +| `has_suggestion()` | Check if there is a suggestion | +| `accept_all_suggestions()` | Accept all suggestions | +| `accept_line()` | Accept line | +| `accept_word()` | Accept word | +| `document_code(ActionOptions)` | Document code | +| `edit_code(ActionOptions)` | Edit code | +| `explain_code(ActionOptions)` | Explain code | +| `find_bugs(ActionOptions)` | Find bugs | +| `generate_unit_test(GenerateUnitTestOptions)` | Generate unit test | +| `implement_features(ImplementFeaturesOptions)` | Implement features | +| `improve_code(ActionOptions)` | Improve code | +| `refactor_code(ActionOptions)` | Refactor code | +| `guess_programming_language(ActionOptions)` | Guess programming language | +| `analyze_data(ActionOptions)` | Analyze data | +| `translate_text(TranslateTextOptions)` | Translate text | +| `translate_text_to_chinese(TranslateTextOptions)` | Translate text to Chinese | +| `translate_text_to_english(TranslateTextOptions)` | Translate text to English | +| `start_chat(ActionOptions)` | Start chat | +| `stop_eval()` | Stop the evaluation | ## 🎉 Special Thanks