JACKCHAN000 / Rime-Lua-GoogleTranslate

GoogleTranslate Lua Plug-in in Rime輸入法
MIT License
32 stars 4 forks source link

避免建立临时文件的方法 #3

Open Oyami-Srk opened 2 years ago

Oyami-Srk commented 2 years ago
local function make(trig_key, trig_translator)
    local flag = false
    local focus_text = nil

    local function processor(key, env)
        local kAccepted = 1
        local kNoop = 2
        local engine = env.engine
        local context = engine.context

        if key:repr() == trig_key then
            if context:is_composing() then
                focus_text = context:get_commit_text()
                flag = true
                context:refresh_non_confirmed_composition()
                return kAccepted
            end
        end

        return kNoop
    end

    local function translator(input, seg, env)
        if flag then
            flag = false
            env.focus_text = focus_text
            trig_translator(input, seg, env)
        end
    end

    return {
        processor = processor,
        translator = translator
    }
end

return make

修改trigger文件如上,之后就可以在translator里面访问env.focus_text获得当前选中的文本。 如:

local function translator(input, seg, env)
    print(env.focus_text)
end

可以避免硬编码路径产生的兼容性问题和性能问题。

JACKCHAN000 commented 2 years ago

太感謝了🙏🏻 當時不知道為甚麼一直都無法實現,只能用建立臨時文件的方法來解決。