hchunhui
hchunhui
我觉得这些修改必要性不大。一方面是因为 SetReg 的功能已经完备了;另一方面 SetReg 原意只是一个最小的实现,方便 包装 C++ 接口,并不追求使用上的便利。
我认为必要性不大。`shared_ptr` 是方便 C++ 传递或存储任意 lua 对象的类型,本身只应该从 `LuaObj::todata()` 得到。满足这个约定的情况下不可能得到空的 pointer。
`LuaObj` 已经通过 private 的方式禁止私自构造了,但是的确没有防止 `{}` 这种方式得到一个空指针。如果做得更好的话,可以用类似 https://stackoverflow.com/questions/41955232/shared-ptr-that-cannot-be-null 弄一个 `shared_reference` ,这样 `{}` 就会不能通过编译。
暂时不会开发双拼和本地词库。但理论上 lua 脚本已经具备实现的条件,所以欢迎贡献代码。
小写的 `next()` 是为了实现 `iter()` 而做的内部函数,不应该再暴露来。 另外原意是 lua 中只提供 `iter()` 就够用了。有点好奇 `exhausted()` `Peek()` `Next()` 这三者在什么情形下需要使用。
可能可以新建一个 contrib 目录,用于收集类似的辅助开发配置和纯 lua 层面的开发框架?
指望通过 librime 发送按键是做不到的。按照架构分工 librime 只负责把按键翻译为一个字符串。至于翻译为 "\b",应用程序是否会理解为退格,这是无法保证的事。现有框架下只有看输入法前端部分或者什么外部工具是否提供接口让你发送退格。
限于 librime 的能力,这样的异步操作很难只在输入法后端实现。目前的架构下,至少需要输入法前端配合发送一些完成事件才有可能。
重新link也算是一种方法。 另一种是需要在载入 librrime-lua 时,采用 `RTLD_GLOBAL` 模式,见: https://github.com/hchunhui/ibus-rime.AppImage/blob/ae63bda26fc238ca0a0d6b8372c2a3f0e2b806ac/patches/librime/relocatable-plugins.patch#L10
sample 主要目的是作为范例帮助理解编程接口,以简明为优,如果实现的功能不是特别常用就不合入了。可以考虑另开项目来收集各种功能完备的脚本。