diff --git a/lua/Trans/backend/offline.lua b/lua/Trans/backend/offline.lua index 7880ca6..2ef618e 100644 --- a/lua/Trans/backend/offline.lua +++ b/lua/Trans/backend/offline.lua @@ -99,6 +99,8 @@ local formatter = { ['p'] = '过去式 ', ['r'] = '比较级 ', ['t'] = '最高级 ', + ['b'] = '比较级 ', + ['z'] = '最高级 ', ['s'] = '复数 ', ['d'] = '过去分词 ', ['i'] = '现在分词 ', diff --git a/lua/Trans/core/util.lua b/lua/Trans/core/util.lua index 2b84603..134ff37 100644 --- a/lua/Trans/core/util.lua +++ b/lua/Trans/core/util.lua @@ -32,10 +32,30 @@ function M.get_select() local e = #lines lines[1] = lines[1]:sub(s_col) lines[e] = line:sub(1, e_col) - return table.concat(lines) + return table.concat(lines, ' ') end end +---Get selected text +---@return string +function M.get_lines() + local _start = vim.fn.getpos 'v' + local _end = vim.fn.getpos '.' + + if _start[2] > _end[2] then + _start, _end = _end, _start + end + + local s_row, e_row = _start[2], _end[2] + + if s_row == e_row then + return vim.fn.getline(s_row) + else + local lines = vim.fn.getline(s_row, e_row) + return table.concat(lines, " ") + end +end + ---Get Text which need to be translated ---@param mode string ---@return string @@ -52,8 +72,8 @@ function M.get_str(mode) return fn.input '需要翻译的字符串: ' end, V = function() - print 'TODO' - return '' + api.nvim_input '' + return M.get_lines() end, })[mode]():match '^%s*(.-)%s*$' end diff --git a/plugin/Trans.lua b/plugin/Trans.lua index 3e45f55..a4573e4 100644 --- a/plugin/Trans.lua +++ b/plugin/Trans.lua @@ -24,15 +24,12 @@ string.width = api.nvim_strwidth local system = Trans.system local f = + (vim.fn.has 'wsl' or system == 'win') and 'powershell.exe -Command "Add-Type -AssemblyName System.speech;(New-Object System.Speech.Synthesis.SpeechSynthesizer).Speak(\\\"%s\\\")"' or system == 'mac' and 'say %q' or system == 'termux' and 'termux-tts-speak %q' or - system == 'linux' and 'echo %q | festival --tts' or - 'node' .. Trans.relative_path { 'tts', 'say.js' } .. ' %q' --- 'python ' .. Trans.relative_path { 'pytts', 'say.py' } .. ' %q' --- 'powershell -Command "Add-Type –AssemblyName System.Speech; (New-Object System.Speech.Synthesis.SpeechSynthesizer).Speak([Console]::In.ReadToEnd())" | Out-File -Encoding ASCII %q' --- or 'node' .. Trans.relative_path { 'tts', 'say.js' } .. ' %q' --- system == 'win' and 'powershell -Command "Add-Type –AssemblyName System.Speech; (New-Object System.Speech.Synthesis.SpeechSynthesizer).Speak([Console]::In.ReadToEnd())" | Out-File -Encoding ASCII %q' + system == 'linux' and 'echo %q | festival --tts' string.play = function(self) - fn.jobstart(f:format(self)) + local s = string.gsub(self, "\"", " ") + fn.jobstart(f:format(s)) end diff --git a/pytts/say.py b/pytts/say.py deleted file mode 100644 index a03da38..0000000 --- a/pytts/say.py +++ /dev/null @@ -1,7 +0,0 @@ -import pyttsx3 -import sys - -a = pyttsx3.init() - -a.say(sys.argv[1]) -a.runAndWait() diff --git a/tts/package.json b/tts/package.json deleted file mode 100644 index e5abbcc..0000000 --- a/tts/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "dependencies": { - "say": "^0.16.0" - } -} diff --git a/tts/say.js b/tts/say.js deleted file mode 100644 index 1d4298b..0000000 --- a/tts/say.js +++ /dev/null @@ -1,4 +0,0 @@ -const say = require('say') - -// console.log(word) -say.speak(process.argv.slice(2))