Code Monkey home page Code Monkey logo

librime-lua's Introduction

librime-lua: Extending RIME with Lua scripts

Features

  • Supports extending RIME processors, segmentors, translators and filters
  • Provides high-level programming model for translators and filters
  • Loaded dynamically as a librime plugin

For more info, see wiki pages.

librime-lua's People

Contributors

amorphobia avatar ayaka14732 avatar fxliang avatar groverlynn avatar hchunhui avatar knnut avatar ksqsf avatar lotem avatar shewer avatar tshu-w avatar tsinamleung avatar whiredplanck avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

librime-lua's Issues

上屏输入码中一个段落的候选

例如输入了 abc,要上屏或获取 ab 对应的任意候选。不知道这和 contextpop_input() reopen_previous_segment() 等方法有没有关系?尝试通过修改 caret_pos 来改变光标位置,没有起作用。

请问 lua 插件需要的依赖文件是哪些?

Librime 升了一个版本,添加了对 librime-lua 插件的支持。
现在,无插件的新 librime 1.5 版本,可以成功编译,编译 librime 所需环境,是没问题了。
但是发现不能支持 lua,看了一下,原来是主代码的树目录里,plugins 下面并没有对咱们这款插件代码的引用,所以 git clone 时,没有一并拉下来。

现在,已经在「plugins」下使用 git bash 拉入了「librime-lua」的代码。

但是在编译时,提示缺少文件。

按照 cmakelist 中写的指引,我建了符合要求的依赖路径

  • librime/plugins/librime-lua/thirdparty/lua5.3

但是,现在往里面补了以下内容后,出现大量报错:

  • lauxlib.h
  • llimits.h
  • lua.h
  • lua.hpp
  • luaconf.h
  • lualib.h

报错信息如下:

请问, lua 插件的具体依赖,是 lua 的源代码,还是已编译好的 lua 库?

求指点。

  user_dict_manager.cc
  正在生成代码...
    正在创建库 D:/librime/build/lib/Release/rime.lib 和对象 D:/librime/build/lib/Release/rime.exp
lua_gears.obj : error LNK2019: 无法解析的外部符号 _lua_settop,该符号在函数 "public: struct Result<int,struct LuaErr> __thiscall Lua::c
all<int,class std::shared_ptr<class LuaObj>,class rime::KeyEvent const &,class std::shared_ptr<class LuaObj> >(class st
d::shared_ptr<class LuaObj>,class rime::KeyEvent const &,class std::shared_ptr<class LuaObj>)" (??$call@HV?$shared_ptr@
VLuaObj@@@std@@ABVKeyEvent@rime@@V12@@Lua@@QAE?AU?$Result@HULuaErr@@@@V?$shared_ptr@VLuaObj@@@std@@ABVKeyEvent@rime@@0@
Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
modules.obj : error LNK2001: 无法解析的外部符号 _lua_settop [D:\librime\build\src\rime.vcxproj]
types.obj : error LNK2001: 无法解析的外部符号 _lua_settop [D:\librime\build\src\rime.vcxproj]
lua.obj : error LNK2001: 无法解析的外部符号 _lua_settop [D:\librime\build\src\rime.vcxproj]
lua_gears.obj : error LNK2019: 无法解析的外部符号 _lua_pushvalue,该符号在函数 "struct Result<int,struct LuaErr> __cdecl todata_safe<in
t>(struct lua_State *,int)" (??$todata_safe@H@@YA?AU?$Result@HULuaErr@@@@PAUlua_State@@H@Z) 中被引用 [D:\librime\build\src\
rime.vcxproj]
types.obj : error LNK2001: 无法解析的外部符号 _lua_pushvalue [D:\librime\build\src\rime.vcxproj]
lua.obj : error LNK2001: 无法解析的外部符号 _lua_pushvalue [D:\librime\build\src\rime.vcxproj]
lua_gears.obj : error LNK2019: 无法解析的外部符号 _lua_rotate,该符号在函数 "struct Result<int,struct LuaErr> __cdecl todata_safe<int>(
struct lua_State *,int)" (??$todata_safe@H@@YA?AU?$Result@HULuaErr@@@@PAUlua_State@@H@Z) 中被引用 [D:\librime\build\src\rim
e.vcxproj]
lua.obj : error LNK2001: 无法解析的外部符号 _lua_rotate [D:\librime\build\src\rime.vcxproj]
lua_gears.obj : error LNK2019: 无法解析的外部符号 _lua_type,该符号在函数 "void __cdecl pushdataX<class std::shared_ptr<class LuaObj>,c
lass std::shared_ptr<class rime::Translation>,class std::shared_ptr<class LuaObj> >(struct lua_State *,class std::share
d_ptr<class LuaObj> &,class std::shared_ptr<class rime::Translation>,class std::shared_ptr<class LuaObj>)" (??$pushdata
X@V?$shared_ptr@VLuaObj@@@std@@V?$shared_ptr@VTranslation@rime@@@2@V12@@@YAXPAUlua_State@@AAV?$shared_ptr@VLuaObj@@@std
@@V?$shared_ptr@VTranslation@rime@@@2@V12@@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
types.obj : error LNK2001: 无法解析的外部符号 _lua_type [D:\librime\build\src\rime.vcxproj]
lua.obj : error LNK2001: 无法解析的外部符号 _lua_type [D:\librime\build\src\rime.vcxproj]
lua_gears.obj : error LNK2019: 无法解析的外部符号 _lua_toboolean,该符号在函数 "public: static int __cdecl `struct Result<bool,struct L
uaErr> __cdecl todata_safe<bool>(struct lua_State *,int)'::`2'::X::runner(struct lua_State *)" (?runner@X@?1???$todata_
safe@_N@@YA?AU?$Result@_NULuaErr@@@@PAUlua_State@@H@Z@SAH0@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
types.obj : error LNK2001: 无法解析的外部符号 _lua_toboolean [D:\librime\build\src\rime.vcxproj]
lua_gears.obj : error LNK2019: 无法解析的外部符号 _lua_tolstring,该符号在函数 "public: struct Result<int,struct LuaErr> __thiscall Lua
::call<int,class std::shared_ptr<class LuaObj>,class rime::KeyEvent const &,class std::shared_ptr<class LuaObj> >(class
 std::shared_ptr<class LuaObj>,class rime::KeyEvent const &,class std::shared_ptr<class LuaObj>)" (??$call@HV?$shared_p
tr@VLuaObj@@@std@@ABVKeyEvent@rime@@V12@@Lua@@QAE?AU?$Result@HULuaErr@@@@V?$shared_ptr@VLuaObj@@@std@@ABVKeyEvent@rime@
@0@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
modules.obj : error LNK2001: 无法解析的外部符号 _lua_tolstring [D:\librime\build\src\rime.vcxproj]
lua_gears.obj : error LNK2019: 无法解析的外部符号 _lua_touserdata,该符号在函数 "public: static int __cdecl `struct Result<int,struct L
uaErr> __cdecl todata_safe<int>(struct lua_State *,int)'::`2'::X::runner(struct lua_State *)" (?runner@X@?1???$todata_s
afe@H@@YA?AU?$Result@HULuaErr@@@@PAUlua_State@@H@Z@SAH0@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
lua.obj : error LNK2001: 无法解析的外部符号 _lua_touserdata [D:\librime\build\src\rime.vcxproj]
lua_gears.obj : error LNK2019: 无法解析的外部符号 _lua_tothread,该符号在函数 "public: struct Result<class std::shared_ptr<class rime::
Candidate>,struct LuaErr> __thiscall Lua::resume<class std::shared_ptr<class rime::Candidate> >(class std::shared_ptr<c
lass LuaObj>)" (??$resume@V?$shared_ptr@VCandidate@rime@@@std@@@Lua@@QAE?AU?$Result@V?$shared_ptr@VCandidate@rime@@@std
@@ULuaErr@@@@V?$shared_ptr@VLuaObj@@@std@@@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
lua_gears.obj : error LNK2019: 无法解析的外部符号 _lua_pushnil,该符号在函数 "void __cdecl pushdataX<class std::shared_ptr<class LuaObj
>,class std::shared_ptr<class rime::Translation>,class std::shared_ptr<class LuaObj> >(struct lua_State *,class std::sh
ared_ptr<class LuaObj> &,class std::shared_ptr<class rime::Translation>,class std::shared_ptr<class LuaObj>)" (??$pushd
ataX@V?$shared_ptr@VLuaObj@@@std@@V?$shared_ptr@VTranslation@rime@@@2@V12@@@YAXPAUlua_State@@AAV?$shared_ptr@VLuaObj@@@
std@@V?$shared_ptr@VTranslation@rime@@@2@V12@@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
types.obj : error LNK2001: 无法解析的外部符号 _lua_pushnil [D:\librime\build\src\rime.vcxproj]
lua.obj : error LNK2001: 无法解析的外部符号 _lua_pushnil [D:\librime\build\src\rime.vcxproj]
lua_gears.obj : error LNK2019: 无法解析的外部符号 _lua_pushstring,该符号在函数 "void __cdecl pushdataX<class std::shared_ptr<class Lua
Obj>,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,struct rime::Segme
nt const &,class std::shared_ptr<class LuaObj> >(struct lua_State *,class std::shared_ptr<class LuaObj> &,class std::ba
sic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,struct rime::Segment const &,class s
td::shared_ptr<class LuaObj>)" (??$pushdataX@V?$shared_ptr@VLuaObj@@@std@@ABV?$basic_string@DU?$char_traits@D@std@@V?$a
llocator@D@2@@2@ABUSegment@rime@@V12@@@YAXPAUlua_State@@AAV?$shared_ptr@VLuaObj@@@std@@ABV?$basic_string@DU?$char_trait
s@D@std@@V?$allocator@D@2@@2@ABUSegment@rime@@V12@@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
types.obj : error LNK2001: 无法解析的外部符号 _lua_pushstring [D:\librime\build\src\rime.vcxproj]
lua_gears.obj : error LNK2019: 无法解析的外部符号 _lua_pushfstring,该符号在函数 "public: static int __cdecl `struct Result<class std::
shared_ptr<class rime::Candidate>,struct LuaErr> __cdecl todata_safe<class std::shared_ptr<class rime::Candidate> >(str
uct lua_State *,int)'::`2'::X::runner(struct lua_State *)" (?runner@X@?1???$todata_safe@V?$shared_ptr@VCandidate@rime@@
@std@@@@YA?AU?$Result@V?$shared_ptr@VCandidate@rime@@@std@@ULuaErr@@@@PAUlua_State@@H@Z@SAH0@Z) 中被引用 [D:\librime\build\
src\rime.vcxproj]
modules.obj : error LNK2001: 无法解析的外部符号 _lua_pushfstring [D:\librime\build\src\rime.vcxproj]
types.obj : error LNK2001: 无法解析的外部符号 _lua_pushfstring [D:\librime\build\src\rime.vcxproj]
lua_gears.obj : error LNK2019: 无法解析的外部符号 _lua_pushcclosure,该符号在函数 "void __cdecl pushdataX<class std::shared_ptr<class L
uaObj>,class std::shared_ptr<class rime::Translation>,class std::shared_ptr<class LuaObj> >(struct lua_State *,class st
d::shared_ptr<class LuaObj> &,class std::shared_ptr<class rime::Translation>,class std::shared_ptr<class LuaObj>)" (??$
pushdataX@V?$shared_ptr@VLuaObj@@@std@@V?$shared_ptr@VTranslation@rime@@@2@V12@@@YAXPAUlua_State@@AAV?$shared_ptr@VLuaO
bj@@@std@@V?$shared_ptr@VTranslation@rime@@@2@V12@@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
types.obj : error LNK2001: 无法解析的外部符号 _lua_pushcclosure [D:\librime\build\src\rime.vcxproj]
lua.obj : error LNK2001: 无法解析的外部符号 _lua_pushcclosure [D:\librime\build\src\rime.vcxproj]
lua_gears.obj : error LNK2019: 无法解析的外部符号 _lua_pushlightuserdata,该符号在函数 "struct Result<int,struct LuaErr> __cdecl todata
_safe<int>(struct lua_State *,int)" (??$todata_safe@H@@YA?AU?$Result@HULuaErr@@@@PAUlua_State@@H@Z) 中被引用 [D:\librime\bu
ild\src\rime.vcxproj]
lua.obj : error LNK2001: 无法解析的外部符号 _lua_pushlightuserdata [D:\librime\build\src\rime.vcxproj]
lua_gears.obj : error LNK2019: 无法解析的外部符号 _lua_getglobal,该符号在函数 "void __cdecl rime::raw_init(struct lua_State *,struct r
ime::Ticket const &,class std::shared_ptr<class LuaObj> *,class std::shared_ptr<class LuaObj> *)" (?raw_init@rime@@YAXP
AUlua_State@@ABUTicket@1@PAV?$shared_ptr@VLuaObj@@@std@@2@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
modules.obj : error LNK2001: 无法解析的外部符号 _lua_getglobal [D:\librime\build\src\rime.vcxproj]
lua.obj : error LNK2001: 无法解析的外部符号 _lua_getglobal [D:\librime\build\src\rime.vcxproj]
lua_gears.obj : error LNK2019: 无法解析的外部符号 _lua_getfield,该符号在函数 "void __cdecl pushdataX<class std::shared_ptr<class LuaOb
j>,class std::shared_ptr<class rime::Translation>,class std::shared_ptr<class LuaObj> >(struct lua_State *,class std::s
hared_ptr<class LuaObj> &,class std::shared_ptr<class rime::Translation>,class std::shared_ptr<class LuaObj>)" (??$push
dataX@V?$shared_ptr@VLuaObj@@@std@@V?$shared_ptr@VTranslation@rime@@@2@V12@@@YAXPAUlua_State@@AAV?$shared_ptr@VLuaObj@@
@std@@V?$shared_ptr@VTranslation@rime@@@2@V12@@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
modules.obj : error LNK2001: 无法解析的外部符号 _lua_getfield [D:\librime\build\src\rime.vcxproj]
types.obj : error LNK2001: 无法解析的外部符号 _lua_getfield [D:\librime\build\src\rime.vcxproj]
lua_gears.obj : error LNK2019: 无法解析的外部符号 _lua_createtable,该符号在函数 "void __cdecl rime::raw_init(struct lua_State *,struct
 rime::Ticket const &,class std::shared_ptr<class LuaObj> *,class std::shared_ptr<class LuaObj> *)" (?raw_init@rime@@YA
XPAUlua_State@@ABUTicket@1@PAV?$shared_ptr@VLuaObj@@@std@@2@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
types.obj : error LNK2001: 无法解析的外部符号 _lua_createtable [D:\librime\build\src\rime.vcxproj]
lua.obj : error LNK2001: 无法解析的外部符号 _lua_createtable [D:\librime\build\src\rime.vcxproj]
lua_gears.obj : error LNK2019: 无法解析的外部符号 _lua_newuserdata,该符号在函数 "public: struct Result<int,struct LuaErr> __thiscall L
ua::call<int,class std::shared_ptr<class LuaObj>,class rime::KeyEvent const &,class std::shared_ptr<class LuaObj> >(cla
ss std::shared_ptr<class LuaObj>,class rime::KeyEvent const &,class std::shared_ptr<class LuaObj>)" (??$call@HV?$shared
_ptr@VLuaObj@@@std@@ABVKeyEvent@rime@@V12@@Lua@@QAE?AU?$Result@HULuaErr@@@@V?$shared_ptr@VLuaObj@@@std@@ABVKeyEvent@rim
e@@0@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
types.obj : error LNK2001: 无法解析的外部符号 _lua_newuserdata [D:\librime\build\src\rime.vcxproj]
lua_gears.obj : error LNK2019: 无法解析的外部符号 _lua_settable,该符号在函数 "void __cdecl pushdataX<class std::shared_ptr<class LuaOb
j>,class std::shared_ptr<class rime::Translation>,class std::shared_ptr<class LuaObj> >(struct lua_State *,class std::s
hared_ptr<class LuaObj> &,class std::shared_ptr<class rime::Translation>,class std::shared_ptr<class LuaObj>)" (??$push
dataX@V?$shared_ptr@VLuaObj@@@std@@V?$shared_ptr@VTranslation@rime@@@2@V12@@@YAXPAUlua_State@@AAV?$shared_ptr@VLuaObj@@
@std@@V?$shared_ptr@VTranslation@rime@@@2@V12@@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
types.obj : error LNK2001: 无法解析的外部符号 _lua_settable [D:\librime\build\src\rime.vcxproj]
lua.obj : error LNK2001: 无法解析的外部符号 _lua_settable [D:\librime\build\src\rime.vcxproj]
lua_gears.obj : error LNK2019: 无法解析的外部符号 _lua_setfield,该符号在函数 "void __cdecl rime::raw_init(struct lua_State *,struct ri
me::Ticket const &,class std::shared_ptr<class LuaObj> *,class std::shared_ptr<class LuaObj> *)" (?raw_init@rime@@YAXPA
Ulua_State@@ABUTicket@1@PAV?$shared_ptr@VLuaObj@@@std@@2@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
modules.obj : error LNK2001: 无法解析的外部符号 _lua_setfield [D:\librime\build\src\rime.vcxproj]
lua.obj : error LNK2001: 无法解析的外部符号 _lua_setfield [D:\librime\build\src\rime.vcxproj]
lua_gears.obj : error LNK2019: 无法解析的外部符号 _lua_setmetatable,该符号在函数 "void __cdecl pushdataX<class std::shared_ptr<class L
uaObj>,class std::shared_ptr<class rime::Translation>,class std::shared_ptr<class LuaObj> >(struct lua_State *,class st
d::shared_ptr<class LuaObj> &,class std::shared_ptr<class rime::Translation>,class std::shared_ptr<class LuaObj>)" (??$
pushdataX@V?$shared_ptr@VLuaObj@@@std@@V?$shared_ptr@VTranslation@rime@@@2@V12@@@YAXPAUlua_State@@AAV?$shared_ptr@VLuaO
bj@@@std@@V?$shared_ptr@VTranslation@rime@@@2@V12@@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
types.obj : error LNK2001: 无法解析的外部符号 _lua_setmetatable [D:\librime\build\src\rime.vcxproj]
lua_gears.obj : error LNK2019: 无法解析的外部符号 _lua_pcallk,该符号在函数 "public: struct Result<int,struct LuaErr> __thiscall Lua::c
all<int,class std::shared_ptr<class LuaObj>,class rime::KeyEvent const &,class std::shared_ptr<class LuaObj> >(class st
d::shared_ptr<class LuaObj>,class rime::KeyEvent const &,class std::shared_ptr<class LuaObj>)" (??$call@HV?$shared_ptr@
VLuaObj@@@std@@ABVKeyEvent@rime@@V12@@Lua@@QAE?AU?$Result@HULuaErr@@@@V?$shared_ptr@VLuaObj@@@std@@ABVKeyEvent@rime@@0@
Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
modules.obj : error LNK2001: 无法解析的外部符号 _lua_pcallk [D:\librime\build\src\rime.vcxproj]
lua.obj : error LNK2001: 无法解析的外部符号 _lua_pcallk [D:\librime\build\src\rime.vcxproj]
lua_gears.obj : error LNK2019: 无法解析的外部符号 _lua_resume,该符号在函数 "public: struct Result<class std::shared_ptr<class rime::Ca
ndidate>,struct LuaErr> __thiscall Lua::resume<class std::shared_ptr<class rime::Candidate> >(class std::shared_ptr<cla
ss LuaObj>)" (??$resume@V?$shared_ptr@VCandidate@rime@@@std@@@Lua@@QAE?AU?$Result@V?$shared_ptr@VCandidate@rime@@@std@@
ULuaErr@@@@V?$shared_ptr@VLuaObj@@@std@@@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
lua_gears.obj : error LNK2019: 无法解析的外部符号 _luaL_argerror,该符号在函数 "public: static int __cdecl `struct Result<class std::sh
ared_ptr<class rime::Candidate>,struct LuaErr> __cdecl todata_safe<class std::shared_ptr<class rime::Candidate> >(struc
t lua_State *,int)'::`2'::X::runner(struct lua_State *)" (?runner@X@?1???$todata_safe@V?$shared_ptr@VCandidate@rime@@@s
td@@@@YA?AU?$Result@V?$shared_ptr@VCandidate@rime@@@std@@ULuaErr@@@@PAUlua_State@@H@Z@SAH0@Z) 中被引用 [D:\librime\build\sr
c\rime.vcxproj]
types.obj : error LNK2001: 无法解析的外部符号 _luaL_argerror [D:\librime\build\src\rime.vcxproj]
lua_gears.obj : error LNK2019: 无法解析的外部符号 _luaL_checkinteger,该符号在函数 "public: static int __cdecl `struct Result<int,struc
t LuaErr> __cdecl todata_safe<int>(struct lua_State *,int)'::`2'::X::runner(struct lua_State *)" (?runner@X@?1???$todat
a_safe@H@@YA?AU?$Result@HULuaErr@@@@PAUlua_State@@H@Z@SAH0@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
types.obj : error LNK2001: 无法解析的外部符号 _luaL_checkinteger [D:\librime\build\src\rime.vcxproj]
lua_gears.obj : error LNK2019: 无法解析的外部符号 _luaL_newmetatable,该符号在函数 "void __cdecl pushdataX<class std::shared_ptr<class
LuaObj>,class std::shared_ptr<class rime::Translation>,class std::shared_ptr<class LuaObj> >(struct lua_State *,class s
td::shared_ptr<class LuaObj> &,class std::shared_ptr<class rime::Translation>,class std::shared_ptr<class LuaObj>)" (??
$pushdataX@V?$shared_ptr@VLuaObj@@@std@@V?$shared_ptr@VTranslation@rime@@@2@V12@@@YAXPAUlua_State@@AAV?$shared_ptr@VLua
Obj@@@std@@V?$shared_ptr@VTranslation@rime@@@2@V12@@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
types.obj : error LNK2001: 无法解析的外部符号 _luaL_newmetatable [D:\librime\build\src\rime.vcxproj]
lua.obj : error LNK2001: 无法解析的外部符号 _luaL_newmetatable [D:\librime\build\src\rime.vcxproj]
lua_gears.obj : error LNK2019: 无法解析的外部符号 _luaL_setmetatable,该符号在函数 "public: struct Result<int,struct LuaErr> __thiscall
 Lua::call<int,class std::shared_ptr<class LuaObj>,class rime::KeyEvent const &,class std::shared_ptr<class LuaObj> >(c
lass std::shared_ptr<class LuaObj>,class rime::KeyEvent const &,class std::shared_ptr<class LuaObj>)" (??$call@HV?$shar
ed_ptr@VLuaObj@@@std@@ABVKeyEvent@rime@@V12@@Lua@@QAE?AU?$Result@HULuaErr@@@@V?$shared_ptr@VLuaObj@@@std@@ABVKeyEvent@r
ime@@0@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
types.obj : error LNK2001: 无法解析的外部符号 _luaL_setmetatable [D:\librime\build\src\rime.vcxproj]
lua.obj : error LNK2001: 无法解析的外部符号 _luaL_setmetatable [D:\librime\build\src\rime.vcxproj]
lua_gears.obj : error LNK2019: 无法解析的外部符号 _luaL_testudata,该符号在函数 "public: static int __cdecl `struct Result<class std::s
hared_ptr<class rime::Candidate>,struct LuaErr> __cdecl todata_safe<class std::shared_ptr<class rime::Candidate> >(stru
ct lua_State *,int)'::`2'::X::runner(struct lua_State *)" (?runner@X@?1???$todata_safe@V?$shared_ptr@VCandidate@rime@@@
std@@@@YA?AU?$Result@V?$shared_ptr@VCandidate@rime@@@std@@ULuaErr@@@@PAUlua_State@@H@Z@SAH0@Z) 中被引用 [D:\librime\build\s
rc\rime.vcxproj]
types.obj : error LNK2001: 无法解析的外部符号 _luaL_testudata [D:\librime\build\src\rime.vcxproj]
lua_gears.obj : error LNK2019: 无法解析的外部符号 _luaL_checkudata,该符号在函数 "public: static int __cdecl LuaType<class rime::Engine
 *>::gc(struct lua_State *)" (?gc@?$LuaType@PAVEngine@rime@@@@SAHPAUlua_State@@@Z) 中被引用 [D:\librime\build\src\rime.vcxp
roj]
types.obj : error LNK2001: 无法解析的外部符号 _luaL_checkudata [D:\librime\build\src\rime.vcxproj]
modules.obj : error LNK2019: 无法解析的外部符号 _lua_concat,该符号在函数 "void __cdecl lua_init(struct lua_State *)" (?lua_init@@YAXPA
Ulua_State@@@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
modules.obj : error LNK2019: 无法解析的外部符号 _luaL_loadfilex,该符号在函数 "void __cdecl lua_init(struct lua_State *)" (?lua_init@@Y
AXPAUlua_State@@@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
types.obj : error LNK2019: 无法解析的外部符号 _lua_gettop,该符号在函数 "int __cdecl TranslationReg::raw_make(struct lua_State *)" (?ra
w_make@TranslationReg@@YAHPAUlua_State@@@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
lua.obj : error LNK2001: 无法解析的外部符号 _lua_gettop [D:\librime\build\src\rime.vcxproj]
types.obj : error LNK2019: 无法解析的外部符号 _lua_rawlen,该符号在函数 "public: static class std::vector<struct rime::Segment,class st
d::allocator<struct rime::Segment> > __cdecl LuaType<class std::vector<struct rime::Segment,class std::allocator<struct
 rime::Segment> > >::todata(struct lua_State *,int)" (?todata@?$LuaType@V?$vector@USegment@rime@@V?$allocator@USegment@
rime@@@std@@@std@@@@SA?AV?$vector@USegment@rime@@V?$allocator@USegment@rime@@@std@@@std@@PAUlua_State@@H@Z) 中被引用 [D:\li
brime\build\src\rime.vcxproj]
lua.obj : error LNK2001: 无法解析的外部符号 _lua_rawlen [D:\librime\build\src\rime.vcxproj]
types.obj : error LNK2019: 无法解析的外部符号 _lua_pushnumber,该符号在函数 "public: static int __cdecl LuaWrapper<class boost::optiona
l<double> (__cdecl*)(class rime::Config &,class std::basic_string<char,struct std::char_traits<char>,class std::allocat
or<char> > const &),&class boost::optional<double> __cdecl ConfigReg::get_double(class rime::Config &,class std::basic_
string<char,struct std::char_traits<char>,class std::allocator<char> > const &)>::wrap(struct lua_State *)" (?wrap@?$Lu
aWrapper@P6A?AV?$optional@N@boost@@AAVConfig@rime@@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z$1
?get_double@ConfigReg@@YA?AV12@01@Z@@SAHPAUlua_State@@@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
types.obj : error LNK2019: 无法解析的外部符号 _lua_pushinteger,该符号在函数 "public: static int __cdecl LuaWrapper<unsigned int (__cde
cl*)(class rime::Context const &),&public: static unsigned int __cdecl MemberWrapper<unsigned int (__thiscall rime::Con
text::*)(void)const ,&public: unsigned int __thiscall rime::Context::caret_pos(void)const >::wrap(class rime::Context c
onst &)>::wrap(struct lua_State *)" (?wrap@?$LuaWrapper@P6AIABVContext@rime@@@Z$1?wrap@?$MemberWrapper@P8Context@rime@@
BEIXZ$1?caret_pos@12@QBEIXZ@@SAI0@Z@@SAHPAUlua_State@@@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
types.obj : error LNK2019: 无法解析的外部符号 _lua_pushboolean,该符号在函数 "public: static int __cdecl LuaWrapper<bool (__cdecl*)(cla
ss rime::Context &),&public: static bool __cdecl MemberWrapper<bool (__thiscall rime::Context::*)(void),&public: bool _
_thiscall rime::Context::Commit(void)>::wrap(class rime::Context &)>::wrap(struct lua_State *)" (?wrap@?$LuaWrapper@P6A
_NAAVContext@rime@@@Z$1?wrap@?$MemberWrapper@P8Context@rime@@AE_NXZ$1?Commit@12@QAE_NXZ@@SA_N0@Z@@SAHPAUlua_State@@@Z)
中被引用 [D:\librime\build\src\rime.vcxproj]
lua.obj : error LNK2001: 无法解析的外部符号 _lua_pushboolean [D:\librime\build\src\rime.vcxproj]
types.obj : error LNK2019: 无法解析的外部符号 _lua_rawgeti,该符号在函数 "public: static class std::vector<struct rime::Segment,class s
td::allocator<struct rime::Segment> > __cdecl LuaType<class std::vector<struct rime::Segment,class std::allocator<struc
t rime::Segment> > >::todata(struct lua_State *,int)" (?todata@?$LuaType@V?$vector@USegment@rime@@V?$allocator@USegment
@rime@@@std@@@std@@@@SA?AV?$vector@USegment@rime@@V?$allocator@USegment@rime@@@std@@@std@@PAUlua_State@@H@Z) 中被引用 [D:\l
ibrime\build\src\rime.vcxproj]
lua.obj : error LNK2001: 无法解析的外部符号 _lua_rawgeti [D:\librime\build\src\rime.vcxproj]
types.obj : error LNK2019: 无法解析的外部符号 _lua_rawset,该符号在函数 "public: static int __cdecl LuaWrapper<class std::set<class std
::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct std::less<class std::basic_string
<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<class std::basic_string<char,st
ruct std::char_traits<char>,class std::allocator<char> > > > (__cdecl*)(struct rime::Segment const &),&public: static c
lass std::set<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct std::less<
class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<class st
d::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > __cdecl MemberWrapper<class std::se
t<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct std::less<class std::b
asic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<class std::basic_str
ing<char,struct std::char_traits<char>,class std::allocator<char> > > > rime::Segment::*,16>::wrap_get(struct rime::Seg
ment const &)>::wrap(struct lua_State *)" (?wrap@?$LuaWrapper@P6A?AV?$set@V?$basic_string@DU?$char_traits@D@std@@V?$all
ocator@D@2@@std@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@V?$basic_string@
DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@ABUSegment@rime@@@Z$1?wrap_get@?$MemberWrapper@PQSegment@rime@@V
?$set@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$a
llocator@D@2@@std@@@2@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@$0BA@@@SA?AV1
2@0@Z@@SAHPAUlua_State@@@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
lua.obj : error LNK2001: 无法解析的外部符号 _lua_rawset [D:\librime\build\src\rime.vcxproj]
types.obj : error LNK2019: 无法解析的外部符号 _lua_rawseti,该符号在函数 "public: static int __cdecl LuaWrapper<class std::vector<class
 std::shared_ptr<class rime::Candidate>,class std::allocator<class std::shared_ptr<class rime::Candidate> > > (__cdecl*
)(class std::shared_ptr<class rime::Candidate> const &),&public: static class std::vector<class std::shared_ptr<class r
ime::Candidate>,class std::allocator<class std::shared_ptr<class rime::Candidate> > > __cdecl rime::Candidate::GetGenui
neCandidates(class std::shared_ptr<class rime::Candidate> const &)>::args<class std::vector<class std::shared_ptr<class
 rime::Candidate>,class std::allocator<class std::shared_ptr<class rime::Candidate> > >,class std::shared_ptr<class rim
e::Candidate> const &>::aux<>::wrap<1>(struct lua_State *)" (??$wrap@$00@?$aux@$$V@?$args@V?$vector@V?$shared_ptr@VCand
idate@rime@@@std@@V?$allocator@V?$shared_ptr@VCandidate@rime@@@std@@@2@@std@@ABV?$shared_ptr@VCandidate@rime@@@2@@?$Lua
Wrapper@P6A?AV?$vector@V?$shared_ptr@VCandidate@rime@@@std@@V?$allocator@V?$shared_ptr@VCandidate@rime@@@std@@@2@@std@@
ABV?$shared_ptr@VCandidate@rime@@@2@@Z$1?GetGenuineCandidates@Candidate@rime@@SA?AV12@0@Z@@SAHPAUlua_State@@@Z) 中被引用 [D
:\librime\build\src\rime.vcxproj]
types.obj : error LNK2019: 无法解析的外部符号 _lua_next,该符号在函数 "public: static class std::set<class std::basic_string<char,struc
t std::char_traits<char>,class std::allocator<char> >,struct std::less<class std::basic_string<char,struct std::char_tr
aits<char>,class std::allocator<char> > >,class std::allocator<class std::basic_string<char,struct std::char_traits<cha
r>,class std::allocator<char> > > > __cdecl LuaType<class std::set<class std::basic_string<char,struct std::char_traits
<char>,class std::allocator<char> >,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class s
td::allocator<char> > >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allo
cator<char> > > > >::todata(struct lua_State *,int)" (?todata@?$LuaType@V?$set@V?$basic_string@DU?$char_traits@D@std@@V
?$allocator@D@2@@std@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@V?$basic_st
ring@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@@@SA?AV?$set@V?$basic_string@DU?$char_traits@D@std@@V?$allo
cator@D@2@@std@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@V?$basic_string@D
U?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@PAUlua_State@@H@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
lua.obj : error LNK2001: 无法解析的外部符号 _lua_next [D:\librime\build\src\rime.vcxproj]
types.obj : error LNK2019: 无法解析的外部符号 _luaL_checklstring,该符号在函数 "public: static int __cdecl LuaWrapper<bool (__cdecl*)(c
lass rime::Context &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &),&
bool __cdecl ContextReg::push_input(class rime::Context &,class std::basic_string<char,struct std::char_traits<char>,cl
ass std::allocator<char> > const &)>::wrap(struct lua_State *)" (?wrap@?$LuaWrapper@P6A_NAAVContext@rime@@ABV?$basic_st
ring@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z$1?push_input@ContextReg@@YA_N01@Z@@SAHPAUlua_State@@@Z) 中被引用 [D:\
librime\build\src\rime.vcxproj]
types.obj : error LNK2019: 无法解析的外部符号 _luaL_checknumber,该符号在函数 "public: static int __cdecl LuaWrapper<bool (__cdecl*)(cl
ass rime::Config &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,doub
le),&public: static bool __cdecl MemberWrapper<bool (__thiscall rime::Config::*)(class std::basic_string<char,struct st
d::char_traits<char>,class std::allocator<char> > const &,double),{public: bool __thiscall rime::Config::SetDouble(clas
s std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,double),0}>::wrap(class rim
e::Config &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,double)>::w
rap(struct lua_State *)" (?wrap@?$LuaWrapper@P6A_NAAVConfig@rime@@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator
@D@2@@std@@N@Z$1?wrap@?$MemberWrapper@P8Config@rime@@AE_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std
@@N@Z$H?SetDouble@12@QAE_N0N@ZA@@@SA_N01N@Z@@SAHPAUlua_State@@@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
lua.obj : error LNK2019: 无法解析的外部符号 _lua_close,该符号在函数 "public: __thiscall Lua::~Lua(void)" (??1Lua@@QAE@XZ) 中被引用 [D:\lib
rime\build\src\rime.vcxproj]
lua.obj : error LNK2019: 无法解析的外部符号 _lua_newthread,该符号在函数 "public: class std::shared_ptr<class LuaObj> __thiscall Lua::n
ewthreadx(struct lua_State *,int)" (?newthreadx@Lua@@QAE?AV?$shared_ptr@VLuaObj@@@std@@PAUlua_State@@H@Z) 中被引用 [D:\libr
ime\build\src\rime.vcxproj]
lua.obj : error LNK2019: 无法解析的外部符号 _lua_xmove,该符号在函数 "public: class std::shared_ptr<class LuaObj> __thiscall Lua::newth
readx(struct lua_State *,int)" (?newthreadx@Lua@@QAE?AV?$shared_ptr@VLuaObj@@@std@@PAUlua_State@@H@Z) 中被引用 [D:\librime\
build\src\rime.vcxproj]
lua.obj : error LNK2019: 无法解析的外部符号 _lua_tocfunction,该符号在函数 "int __cdecl LuaImpl::index(struct lua_State *)" (?index@Lua
Impl@@YAHPAUlua_State@@@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
lua.obj : error LNK2019: 无法解析的外部符号 _lua_gettable,该符号在函数 "public: static class Lua * __cdecl Lua::from_state(struct lua_
State *)" (?from_state@Lua@@SAPAV1@PAUlua_State@@@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
lua.obj : error LNK2019: 无法解析的外部符号 _lua_rawget,该符号在函数 "int __cdecl LuaImpl::index(struct lua_State *)" (?index@LuaImpl@
@YAHPAUlua_State@@@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
lua.obj : error LNK2019: 无法解析的外部符号 _lua_setglobal,该符号在函数 "void __cdecl LuaImpl::export_set(struct lua_State *)" (?expor
t_set@LuaImpl@@YAXPAUlua_State@@@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
lua.obj : error LNK2019: 无法解析的外部符号 _lua_callk,该符号在函数 "public: __thiscall Lua::Lua(void)" (??0Lua@@QAE@XZ) 中被引用 [D:\libr
ime\build\src\rime.vcxproj]
lua.obj : error LNK2019: 无法解析的外部符号 _lua_yieldk,该符号在函数 "int __cdecl LuaImpl::yield(struct lua_State *)" (?yield@LuaImpl@
@YAHPAUlua_State@@@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
lua.obj : error LNK2019: 无法解析的外部符号 _luaL_openlibs,该符号在函数 "int __cdecl LuaImpl::pmain(struct lua_State *)" (?pmain@LuaIm
pl@@YAHPAUlua_State@@@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
lua.obj : error LNK2019: 无法解析的外部符号 _luaL_getmetafield,该符号在函数 "int __cdecl LuaImpl::index(struct lua_State *)" (?index@L
uaImpl@@YAHPAUlua_State@@@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
lua.obj : error LNK2019: 无法解析的外部符号 _luaL_ref,该符号在函数 "private: __thiscall LuaObj::LuaObj(struct lua_State *,int)" (??0Lu
aObj@@AAE@PAUlua_State@@H@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
lua.obj : error LNK2019: 无法解析的外部符号 _luaL_unref,该符号在函数 "public: __thiscall LuaObj::~LuaObj(void)" (??1LuaObj@@QAE@XZ) 中被
引用 [D:\librime\build\src\rime.vcxproj]
lua.obj : error LNK2019: 无法解析的外部符号 _luaL_loadstring,该符号在函数 "int __cdecl LuaImpl::pmain(struct lua_State *)" (?pmain@Lua
Impl@@YAHPAUlua_State@@@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
lua.obj : error LNK2019: 无法解析的外部符号 _luaL_newstate,该符号在函数 "public: __thiscall Lua::Lua(void)" (??0Lua@@QAE@XZ) 中被引用 [D:\
librime\build\src\rime.vcxproj]
lua.obj : error LNK2019: 无法解析的外部符号 _luaL_setfuncs,该符号在函数 "void __cdecl LuaImpl::export_set(struct lua_State *)" (?expor
t_set@LuaImpl@@YAXPAUlua_State@@@Z) 中被引用 [D:\librime\build\src\rime.vcxproj]
D:\librime\build\lib\Release\rime.dll : fatal error LNK1120: 57 个无法解析的外部命令 [D:\librime\build\src\rime.vcxproj]

error building la rime.

建议修改data示例以符合国标GB/T 9704-2012

7.3.5.4  成文日期中的数字
用阿拉伯数字将年、月、日标全,年份应标全称,月、日不编虚位(即1不编为01)。

另外,党、政的公文日期格式是不同的,党口的公文是小写阿拉伯如2020年2月14日,政口的是大写二〇二〇这样的

即需要1、小写不编虚位;2、增加大写

另外:

  1. 请将 #4week也加入示例吧
  2. reverse.lua没有处理轻声即5显示

reverse lua

如何在上屏之后不让输入法候选框消失

我想实现一个根据上次上屏的字去联想组词的功能,类似一些输入法中上屏 “你” 之后,候选中出现 “好”,“们” ... 等等。

大概思路是

  1. 监听上屏事件记录上屏的词(这个目前是支持的)
  2. 拿到上次上屏的字,并去查词典(这个要怎么做?)
  3. 把查到的结果放入候选(能做到)

第一步上屏之后,能否不让输入法候选框消失?
我想的是修改输入码,在输入码之后加一个空白的输入码,这样就永远输入不完,候选框就不会消失。不知道这个现在能否实现,或是有没有其它办法?

第二步查词典如果在目前的版本中,是要自己构建反查词典么?
@Ace-Who#19 中好像提到过类似的功能,具体是要怎么做呢?或者有没有其它方案?

關於輸入數字然後自動判斷千位數增加逗號的方法?

/*
** @maomao
** thousand add comma.
*/
function formatnumberthousands(sum)
	local function checknumber(value)
		return tonumber(value) or 0
	end
	local sum = checknumber(sum)
	local newNum = ""
	repeat
		print("value of sum:", sum)
		if sum <= 1000 then
			newNum = sum .. newNum
			return newNum
		end
		newNum = "," .. sum % 1000 ..newNum
		sum = math.floor((sum - sum % 1000)/1000) --为了得到的是整数没有.0
	until(false)
end	

版权声明:本文为CSDN博主「@maomao」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_38138390/article/details/83834309

請問這個模組有辦法放到rime-lua,變成輸入\\+數字,然後自動在千位數的地方增加逗號,如輸入\\150000輸出變成150,000這樣,跪求一個修改的方向,不然完全不知道怎麼下手,感激不盡……

没有可靠的方法区分 history 候选和其他候选

history 翻译器的候选好像没有什么特征,在和其他候选混在一起的时候,无法完全可靠地区分两者。顺便提一下,虽然和 lua 无关,history 的配置项也很少,比如没有 comment_format,还有退格和回车会清空历史这样的限制,各种不便。更一般性地,rime 没有让翻译器给候选打标记的机制,有些需求解决起来就比较绕。

绑定的一对按键都会送至 processor,致使无法辨别真实按键

通过在一个 lua_processor@key_counter 中将每一个按键 key:repr() 存入一个全局列表变量 keys,发现只要是被绑定的一对按键,如 {accept: "Control+g", send: Escape, when: composing},按被绑的键,则两键都会依次存入 keys,即按 Control+g,就会依次存入 Control+gEscape。方案中 processor 的顺序如下:

engine:
  processors:
    - ascii_composer
    - lua_processor@key_counter
    - recognizer
    - key_binder
    - speller
    - punctuator
    - selector
    - navigator
    - express_editor

key_counterkey_binder 之前,怎么会收到根据后者绑定而发送的按键呢?要辨别出哪个是真实按键,有什么思路吗?我唯一的思路是读取绑定配置列表,对最近两次接收到的按键作一一比对来判断它们是不是一对绑定键。

如何获取原始输入码?

我是用来做字符串操作,修改 cand.preedit。直接读 cand.preedit 应该是出错了,因为不生成候选。目前我用的是 context:get_script_text(),这个应该是变换后的输入码吧?不过我的方案看不出来,因为本身没有做变换。

安装问题

Create PATH_TO_RIME_USER_DATA_DIR这个PATH_TO_RIME_USER_DATA_DIR在linux是什么目录??

如何通过rime.lua实现用输入法调用外部程序,类似多多输入法的直通车功能?

很喜欢多多输入法的直通车功能,可以通过按键触发调用制定的程序。多多输入法是通过run函数实现的,在lua里面我尝试通过translator引擎在函数定义里面调用os.execute也可以实现,但存在一个问题,在translator里面输入的按键候选框会一直显示,不会自我关闭。我想应该在proceesors引擎里实现,但具体该如何写我试了几次都没成功。具体方法如下,在
if (input == "time" or input == "iuju" or input == "sj" or input == "dqsj") then
......
end
代码段下面添加如下代码
if (input == "otc") then
os.execute("C:\TotalCommander922\TOTALCMD.EXE")
end

fcitx-rime如何使用lua插件

按照Readme从源码编译,/usr/lib中新增librime-lua.so,试用 - lua_translator@date_translator
但出现报错E1208 00:16:36.506965 15620 engine.cc:349] error creating translator: 'lua_translator'

请问Windows要如何安装这个插件?

从releases下载了插件,无论是readme.md还是下载的压缩包中,都没有描述,如何在Windows上安装这个插件。

后知后觉地替换了rime.dll文件。

Lua 5.4 兼容问题

In file included from /build/librime/src/librime-1.5.3/plugins/librime-lua/src/lib/lua_templates.h:14,
                 from /build/librime/src/librime-1.5.3/plugins/librime-lua/src/lib/lua.cc:2:
/build/librime/src/librime-1.5.3/plugins/librime-lua/src/lib/lua_templates.h: In member function ‘LuaResult<O> Lua::resume(std::shared_ptr<LuaObj>)’:
/build/librime/src/librime-1.5.3/plugins/librime-lua/src/lib/lua-compat.h:13:48: error: too few arguments to function ‘int lua_resume(lua_State*, lua_State*, int, int*)’
   13 | #define xlua_resume(L, a) lua_resume(L, NULL, a)
      |                                                ^
/build/librime/src/librime-1.5.3/plugins/librime-lua/src/lib/lua_templates.h:372:16: note: in expansion of macro ‘xlua_resume’
  372 |   int status = xlua_resume(C, 0);
      |                ^~~~~~~~~~~
In file included from /build/librime/src/librime-1.5.3/plugins/librime-lua/src/lib/lua_templates.h:11,
                 from /build/librime/src/librime-1.5.3/plugins/librime-lua/src/lib/lua.cc:2:
/usr/include/lua.h:300:15: note: declared here
  300 | LUA_API int  (lua_resume)     (lua_State *L, lua_State *from, int narg,
      |               ^~~~~~~~~~
make[2]: *** [plugins/librime-lua/CMakeFiles/rime-lua-objs.dir/build.make:135: plugins/librime-lua/CMakeFiles/rime-lua-objs.dir/src/lib/lua.cc.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from /build/librime/src/librime-1.5.3/plugins/librime-lua/src/lib/lua_templates.h:14,
                 from /build/librime/src/librime-1.5.3/plugins/librime-lua/src/lua_gears.cc:1:
/build/librime/src/librime-1.5.3/plugins/librime-lua/src/lib/lua_templates.h: In member function ‘LuaResult<O> Lua::resume(std::shared_ptr<LuaObj>)’:
/build/librime/src/librime-1.5.3/plugins/librime-lua/src/lib/lua-compat.h:13:48: error: too few arguments to function ‘int lua_resume(lua_State*, lua_State*, int, int*)’
   13 | #define xlua_resume(L, a) lua_resume(L, NULL, a)
      |                                                ^
/build/librime/src/librime-1.5.3/plugins/librime-lua/src/lib/lua_templates.h:372:16: note: in expansion of macro ‘xlua_resume’
  372 |   int status = xlua_resume(C, 0);
      |                ^~~~~~~~~~~
In file included from /build/librime/src/librime-1.5.3/plugins/librime-lua/src/lib/lua_templates.h:11,
                 from /build/librime/src/librime-1.5.3/plugins/librime-lua/src/lua_gears.cc:1:
/usr/include/lua.h:300:15: note: declared here
  300 | LUA_API int  (lua_resume)     (lua_State *L, lua_State *from, int narg,
      |               ^~~~~~~~~~
In file included from /build/librime/src/librime-1.5.3/plugins/librime-lua/src/lib/lua_templates.h:14,
                 from /build/librime/src/librime-1.5.3/plugins/librime-lua/src/modules.cc:4:
/build/librime/src/librime-1.5.3/plugins/librime-lua/src/lib/lua_templates.h: In member function ‘LuaResult<O> Lua::resume(std::shared_ptr<LuaObj>)’:
/build/librime/src/librime-1.5.3/plugins/librime-lua/src/lib/lua-compat.h:13:48: error: too few arguments to function ‘int lua_resume(lua_State*, lua_State*, int, int*)’
   13 | #define xlua_resume(L, a) lua_resume(L, NULL, a)
      |                                                ^
/build/librime/src/librime-1.5.3/plugins/librime-lua/src/lib/lua_templates.h:372:16: note: in expansion of macro ‘xlua_resume’
  372 |   int status = xlua_resume(C, 0);
      |                ^~~~~~~~~~~
In file included from /build/librime/src/librime-1.5.3/plugins/librime-lua/src/lib/lua_templates.h:11,
                 from /build/librime/src/librime-1.5.3/plugins/librime-lua/src/modules.cc:4:
/usr/include/lua.h:300:15: note: declared here
  300 | LUA_API int  (lua_resume)     (lua_State *L, lua_State *from, int narg,
      |               ^~~~~~~~~~

怎么搞?

看不懂啊。可以直白一些吗?例如一步一步的操作说明书?😅

如何阻止 lua_processor 将触发按键发送出去?

套用 rime/librime#248 的例子来说明:

-- Control+v 转大写,加空格

local function do_capital_space(s)
  return string.upper(s .. " ")
end

local function myproc(key, env)
  local engine = env.engine
  local context = engine.context
  local page_size = engine.schema.page_size

  --- accept: Control+v
  if (key:repr() == 'Control+v') then
    --- when: composing
    if (context:is_composing()) then
      local s_orig = context:get_commit_text()
      --- do_capital_space
      local s = do_capital_space(s_orig) .. ' <' .. key:repr() .. '>'
      engine:commit_text(s)
      context:clear()
      return 0 -- kAccepted
    end
  end
  return 2 -- kNoop
end

return myproc

方案配置:

...
engine:
  processors:
    - ascii_composer
    - recognizer
    - lua_processor@myproc
    - key_binder
    - speller
    - punctuator
    - selector
    - navigator
    - express_editor
...

使用时,在选字状态下按 Ctrl + v,成功加了空格,但是也发生了粘贴操作。又如,将按键判断改为 key:repr() == '8',那么上屏时除加了空格以外,还会加个「8」。

如果debug呢?

自己写的lua如debug是否生成?函数是否执行了。能否有一个教程?

请问 comment 能放入 switches 吗?

例如像 sample/charset.lua 中的 charset_comment_filter,能放入 switches 切换,选择要不要显示字符集吗?如果可以的话,应该怎么写?

switches:
  - name: ascii_mode
    reset: 0
    states: [ 中文, 西文 ]

manjaro 编译貌似出错

➜  librime-master make merged-plugins
cmake . -Bbuild \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_MERGED_PLUGINS=ON
CMake Error at /usr/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake:164 (message):
  Could NOT find Boost (missing: Boost_INCLUDE_DIR filesystem regex system)
  (Required is at least version "1.46.0")
Call Stack (most recent call first):
  /usr/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake:445 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake-3.17/Modules/FindBoost.cmake:2162 (find_package_handle_standard_args)
  CMakeLists.txt:69 (find_package)


-- Configuring incomplete, errors occurred!
See also "/home/baloneo/Downloads/librime-master/build/CMakeFiles/CMakeOutput.log".
make: *** [Makefile:51:merged-plugins] 错误 1

依赖问题

如何在 lua_processor 刷新 filter ( 用途 熱鍵切換 reverserdb )

如題
參照 reverse.lua 己完成 熱鍵切換 反查碼 ,但是得在下次變更 input 才會變更
有沒有辦法 熱鍵 時 重新刷新 filter
試了一個辦法是可行的 在 出現候選字時 按左鍵 就可以刷新
只要在 processor 內 ctrl +t 時 is_composing() 狀態下 send 左鍵 右鍵
這樣可以實現嗎 謝謝

control+t 只是 count 內變數 +1 % reverseDBs (0 1 2 3 4 5 0 1 2 3 4 5 )
reverse_lookup_filetr
init : 將 需要的 reverseDB 及 反查字根 func 插入 env.revdb (array)

---- schema
engine/processors/lua_processor@reverse_switch
engine/filter/lua_filter@reverse_lookup_filter

------ rime.lua
local rever_lookup_tab= require("reverse_switch")("Control+t", "whaleliu.extended", "luna_pinyin" , "cangjie5liu.extended","newcjliu.extended", "cangjie6liu.extended")

reverse_lookup_filter = rever_lookup_tab.reverse

reverse_switch = rever_lookup_tab.processor

build error with luajit 2.0.5 on Linux/macOS

build against latest librime and luajit 2.0.5, repro on Linux and macOS.
perhaps due to incompatible API between latest lua and luajit.
the error can be temporarily fixed by changing dependency luajit to lua in CMakeLists.txt.

In file included from /Users/lotem/code/rime/librime/plugins/lua/src/lua_gears.cc:1:
/Users/lotem/code/rime/librime/plugins/lua/src/lib/lua_templates.h:86:18: error: use of undeclared identifier 'luaL_testudata'; did you mea
    T *o = (T *) luaL_testudata(L, i, name());
                 ^~~~~~~~~~~~~~
                 luaL_checkudata
In file included from /Users/lotem/code/rime/librime/plugins/lua/src/lua_gears.cc:1:
In file included from /Users/lotem/code/rime/librime/plugins/lua/src/lib/lua_templates.h:12:
/usr/local/Cellar/luajit/2.0.5/include/luajit-2.0/lauxlib.h:53:19: note: 'luaL_checkudata' declared here
LUALIB_API void *(luaL_checkudata) (lua_State *L, int ud, const char *tname);
                  ^
In file included from /Users/lotem/code/rime/librime/plugins/lua/src/lua_gears.cc:1:
/Users/lotem/code/rime/librime/plugins/lua/src/lib/lua_templates.h:112:5: error: use of undeclared identifier 'luaL_setmetatable'; did you
    luaL_setmetatable(L, name());
    ^~~~~~~~~~~~~~~~~
    lua_setmetatable
In file included from /Users/lotem/code/rime/librime/plugins/lua/src/lua_gears.cc:1:
In file included from /Users/lotem/code/rime/librime/plugins/lua/src/lib/lua_templates.h:10:
/usr/local/Cellar/luajit/2.0.5/include/luajit-2.0/lua.h:194:16: note: 'lua_setmetatable' declared here
LUA_API int   (lua_setmetatable) (lua_State *L, int objindex);
               ^
In file included from /Users/lotem/code/rime/librime/plugins/lua/src/lua_gears.cc:1:
/Users/lotem/code/rime/librime/plugins/lua/src/lib/lua_templates.h:112:26: error: cannot initialize a parameter of type 'int' with an rvalu
    luaL_setmetatable(L, name());
                         ^~~~~~
In file included from /Users/lotem/code/rime/librime/plugins/lua/src/lua_gears.cc:1:
In file included from /Users/lotem/code/rime/librime/plugins/lua/src/lib/lua_templates.h:10:
/usr/local/Cellar/luajit/2.0.5/include/luajit-2.0/lua.h:194:53: note: passing argument to parameter 'objindex' here
LUA_API int   (lua_setmetatable) (lua_State *L, int objindex);
                                                    ^
...
In file included from /Users/lotem/code/rime/librime/plugins/lua/src/lua_gears.cc:1:
/Users/lotem/code/rime/librime/plugins/lua/src/lib/lua_templates.h:357:17: error: use of undeclared identifier 'LUA_OK'
  if (status != LUA_OK) {
                ^

full build log:
build.log

小狼毫中使用 os.execute闪现cmd黑窗口

如题,小狼毫中使用 os.execute执行命令或程序时闪现cmd黑窗口,可以避免吗
或者有方法单独执行run命令而不依赖cmd
再一个执行lua脚本时如何确定相对路径呢,比如小狼毫的安装目录及用户目录,因为有时候会读取一些文件,而每个用户的安装目录可能会有所不同,使用相对路径方便读取文件

主动云输入

很棒的项目!请问能否实现如下需求:

  1. 设置独立热键触发云输入请求:如 olime.baidu.com
  2. 将返回结果集 prepend 到当前 candidate 集
  3. 上屏后,将该词记录到本地词典(这个可能 rime 自己就做了)

其中,云请求的字符串应能适配双拼展开

我看了之前的issue有提到librime的异步缺失问题,这种主动的云输入请求可以接受librime被阻塞,只要给定合理的timeout值。

实现这个feature的动机:

  1. 避免全局云输入带来的隐私泄露问题,也不必要
  2. 云输入是有效fallback手段,诸如新词,人名等

請問關於上字時 檢查 輸入 text 與 最簡碼 不符檢查 時 beep 一聲

目前已完成 顯示最簡碼 想再進一步 , 如果 上屏時 text 長度 大於 reverse_lookup_filter 最小長度時
發告警聲
furction beep()
print( string.char(07))
end
我想應該類似在 express_editor 這種程序且放在 processes 最後檢查上屏 keyevent 插入程序
這樣會不會與 express_editor 衝突 或是 取代

关于打补丁的问题

  我按说明,在 *.schema.yaml 文件里改,
  已经弄好了,可以了。

  就是想再问一个,如果不想在 *.schema.yaml 文件里改,想在 *.custom.yaml 文件改,应该怎样操作。
  因为 在 *.custom.yaml 文件改,成功的话,同类型的输入法,需要相同的设置,可以直接把文件复制一下,改成另一个输入法的名字,就可以用了。而在 在 *.schema.yaml 文件里改 ,每个输入法得单独弄一下。

  在网上搜到的方法,只能设置一条选项。
  比如,在 *.custom.yaml 文件里这样写:
patch:
engine/translators/@next: lua_translator@date_translator
  这样就一条的话,可以。
  但是如果这种写法,多于一条,前面的就无效了,
patch:
engine/translators/@next: lua_translator@date_translator
engine/translators/@next: lua_translator@time_translator
  像上面写了两条,就最后一条才有效。
  不怎么懂,还是在网上搜来的方法,只能单独使用其中的一条设置。
  所以来问一下,如果在 *.custom.yaml 文件里 打补丁,需要设置这样内容不只一条,应该怎样操作?

单字过滤与时间日期等输出有冲突

使用单字过滤时,时间日期等定义将无法上屏。
这个冲突的逻辑可以理解,但是想问一下作者大大,
有没有解决的预期?
当然,这只是一个小问题。

How to add librime-lua plugin support.

Error creating translator: 'lua_translator'

I have a problem when using lua script rime/librime#332 (comment)

I did not compile and install from source, but directly installed binary packages.

Environment:

  • Archlinux
  • Fcitx
  • Rime
$ whereis librime
librime: /usr/lib/librime.so

Please help me how to add librime-lua support on the existing basis.

TKS.

抱歉……請問一下這個插件怎麼在windows下使用呢?

大家好,我想要試著使用這個套件來實現自動填寫當下日期,但是我跟著教學一步一步做還是沒辦法……,下面是我實作的步驟:

  1. 在用戶資料夾創造一個rime.lua的文件(UTF-8,不帶簽名格式),並且複製程式碼
function date_translator(input, seg)
   if (input == "date") then
      --- Candidate(type, start, end, text, comment)
      yield(Candidate("date", seg.start, seg._end, os.date("%Y年%m月%d日"), " 日期"))
   end
end

function single_char_first_filter(input)
   local l = {}
   for cand in input:iter() do
      if (utf8.len(cand.text) == 1) then
         yield(cand)
      else
         table.insert(l, cand)
      end
   end
   for i, cand in ipairs(l) do
      yield(cand)
   end
end
  1. luna_pinyin_tw.custom.yaml內放入functions
patch:
  "recognizer/patterns/punct": "^/([A-Z|a-z]*|[0-9]|10)$"
  ascii_composer:
    switch_key:
      Shift_L: noop
      Shift_R: noop
  punctuator:
    import_preset: symbols
    full_shape:
      "`": "……"
    half_shape:
      "`": "……"
      "#": "#"
      "@": "@"
      "$": "$"
      "%": "%"
      "*": "*"
      "~": "~"
      "(": "("
      ")": ")"
      "_": "_"
      "/": ["、"]
    symbols:
      "/dh": ["≒","≧","≦","■","□","±","÷","×","☑"]
  translator:
    dictionary: luna_pinyin_tw.extended
  engine:
    translators:
      - lua_translator@date_translator
      - lua_translator@other_lua_function1
    filters:
      - lua_filter@single_char_first_filter
      - lua_filter@other_lua_function2
  1. 然後重新部署

做完之後輸入date還是反應@@,請問還缺什麼步驟嗎?小狼毫的版本是0.14.2。

脚本位置问题

现在的 librime 对 rime.lua 的读取,限制在「用户文件夹」下面。
如果在「程序文件夹」的「data」位置上,就不会生效。
「data」是程序的「yaml」文件目录。
win之外,mac 、linux 也都尝试过,一样限制在「用户文件夹」下面。
是否可以放宽 librime 对 rime.lua 读取位置的限制?
或者,如果我想改一改,应该做哪些事情?
求指点。

如何通过 lua_processor 发送任意按键或提交任意候选?

例如想要按 7 来发出 2,选第 2 个候选。因为可能需要动态判断,数字不固定,不能用方案配置的 key_binder 实现。

如果 lua_processor 不能发送任意按键(代码中也确实没有 send 这样的关键词),那么有没有函数来提交已生成的任意候选?

说到了候选,不知道函数 get_selected_candidate 的确切用法,随意讨论一下。

    if context:get_selected_candidate() then
      cand:get_genuine().comment = context:get_selected_candidate().text
    end

在 page_size 为 5 和 10 两种条件下测试。
结果是,除开第一页的边界情况外,每一页从第三个候选起,至下一页第二个候选,共计 page_size 个,其 comment 都是一样的,都是从上一页翻页过来之前被选中的候选的 text。
不知道这样的特性有什么应用场景?

Lua Module Crashes Upon Initialization (Darwin, MacOS 10.15.3)

I can see Squirrel (latest v14.0) crashes during initialization, and I can probably make some guesses based on the crash log below: (full log is attached at the very end)

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000008
Exception Note:        EXC_CORPSE_NOTIFY

Termination Signal:    Segmentation fault: 11
Termination Reason:    Namespace SIGNAL, Code 0xb
Terminating Process:   exc handler [47911]

VM Regions Near 0x8:
--> 
    __TEXT                 000000010551b000-000000010552d000 [   72K] r-x/r-x SM=COW  /Library/Input Methods/Squirrel.app/Contents/MacOS/Squirrel

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libluajit-5.1.2.dylib         	0x0000000105b544b3 lua_pushcclosure + 19
1   librime.1.dylib               	0x000000010565564d types_init(lua_State*) + 77
2   librime.1.dylib               	0x0000000105653f44 lua_init(lua_State*) + 36
3   librime.1.dylib               	0x0000000105660702 Lua::to_state(std::__1::function<void (lua_State*)>) + 34
4   librime.1.dylib               	0x0000000105653a9e rime_lua_initialize() + 222
5   librime.1.dylib               	0x0000000105639f55 rime::ModuleManager::LoadModule(rime_module_t*) + 709
6   librime.1.dylib               	0x0000000105642969 rime::LoadModules(char const**) + 217
7   librime.1.dylib               	0x0000000105648cb9 RimeInitialize + 57
8   im.rime.inputmethod.Squirrel  	0x000000010551e713 -[SquirrelApplicationDelegate startRimeWithFullCheck:] + 34
9   im.rime.inputmethod.Squirrel  	0x000000010551dae1 main + 750
10  im.rime.inputmethod.Squirrel  	0x000000010551caf4 start + 52

The assembly code near types_init() +77 (+0x4d) shows:

__Z10types_initP9lua_State:
  11a600:	55 	pushq	%rbp
  11a601:	48 89 e5 	movq	%rsp, %rbp
  11a604:	41 57 	pushq	%r15
  11a606:	41 56 	pushq	%r14
  11a608:	41 55 	pushq	%r13
  11a60a:	41 54 	pushq	%r12
  11a60c:	53 	pushq	%rbx
  11a60d:	50 	pushq	%rax
  11a60e:	48 89 fb 	movq	%rdi, %rbx
  11a611:	4c 8d 2d 28 6f 10 00 	leaq	1077032(%rip), %r13
  11a618:	4c 89 2c 24 	movq	%r13, (%rsp)
  11a61c:	48 8b 35 1d b3 0f 00 	movq	1028893(%rip), %rsi
  11a623:	48 8b 15 be ad 0f 00 	movq	1027518(%rip), %rdx
  11a62a:	4c 8d 35 ef 6d 10 00 	leaq	1076719(%rip), %r14
  11a631:	4c 8d 3d 08 6e 10 00 	leaq	1076744(%rip), %r15
  11a638:	4c 8d 25 71 6e 10 00 	leaq	1076849(%rip), %r12
  11a63f:	4c 89 f1 	movq	%r14, %rcx
  11a642:	4d 89 f8 	movq	%r15, %r8
  11a645:	4d 89 e1 	movq	%r12, %r9
  11a648:	e8 83 b3 00 00 	callq	45955 <__Z11export_typeP9lua_StatePKcPFiS0_EPK8luaL_RegS7_S7_S7_>
  11a64d:	4c 89 2c 24 	movq	%r13, (%rsp)

Key registers seems to be OK (at least they're not zeros) but I have a feeling that the Lua state handler (lua_State *L) is not properly allocated. However I'm not familiar with C++ enough to understand the logic of these statements:

  an<Lua> lua(new Lua);
  lua->to_state(lua_init);

Hopefully we can figure this out easier then all by myself. Thanks a lot.

Squirrel_crash.log

processKeyevent error

切換反查 DB正常 工作 一應該在 process中有小BUG

E0721 01:29:24.772047 16536 lua_gears.cc:113] LuaProcessor::ProcessKeyEvent error(2): bad argument #1 to '?' (number expected, got nil)

長的很快 每秒 8條
三個判斷式都可正常工作 , 感覺像 return KAccepted KNoop 的問題
對processor return 用義為何?? 謝謝

local function processor(key,env)   -- 攔截 trig_key  循環切換反查表  index_num  +1 % base
    local kAccepted = 1
    local kNoop=2
    local engine = env.engine
    local context = engine.context

    --  正循環
    if key:repr() ==  trig_nkey then --     循環切換反查字典 0 off  
        index_num=  (index_num +1 ) % base
        context:refresh_non_confirmed_composition()
        return kAccepted
        -- 反循環
    elseif key:repr() == trig_pkey then --
        index_num = (index_num -1 + base) % base
        context:refresh_non_confirmed_composition() -- 刷新 filter data
        return kAccepted
        -- 快碼字串比對  符合才進入修改 index_num
    elseif "number"  == type( pattern[context.input] ) then   -- context.input 可調出 比對 快碼 符合
        index_num =  pattern[context.input]  or index_num     -- 如果 無值  時 不異動 index_num
        context:clear()  -- 清除 contex data
        return kNoop
    end
end

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.