可以实现的,我觉得这个东西的实现应该在 UI 上而不是在内容上。
实现的方式就是在中英文的中间加一个 overlay 来显示一个的空格字符,不影响文本的内容,只影响看上去的样子。
一个样例就是 emacs-rime 的嵌入文本,那个就是用 overlay 实现的。
可以实现的,我觉得这个东西的实现应该在 UI 上而不是在内容上。
实现的方式就是在中英文的中间加一个 overlay 来显示一个的空格字符,不影响文本的内容,只影响看上去的样子。
一个样例就是 emacs-rime 的嵌入文本,那个就是用 overlay 实现的。
我感觉这个比较好解决,一个简单的方式是: advice 拷贝命令,把中文和英文之间的空格删除
大佬们讨论的是自动删空格么?
确实很简单,
我在smart-input-source
里实现了。
另外,
很多人说偏好emacs内置输入法
而不使用外部输入法的原因是:
emacs不能记住不同文件使用的是不同外部输入法
这个,我也在smart-input-source
里实现了
我想继续问下emacs-rime
用户,
还有什么原因阻止了你们使用外置的OS输入法?
因为外部的输入会采集用户的输入信息,然后进行大数据分析,泄漏用户隐私。而Rime完全是自己养的输入法,客制化比较自由,词库也是自己定义。这是我喜欢Rime的主要原因。
这个是输入法本身的问题
不是emacs内置输入法和操作系统输入法的差别啊。
我记得Rime也有独立版本啊,
可以脱离emacs运行,成为系统输入法。
这样的话,
可以保持在所有软件中用户体验的一致性。
对啊,Rime的优势就是跨平台,可以保持一致性。Emacs-rime 就是直接使用系统的Rime,eamcs-rime相当于系统Rime的前端,所以体验是很好。
emacs-rime 使用 posframe显示的话,体验和系统rime是一样的了,甚至更好,可以搭配其他工具实现一些互动,比如和翻译软件实现互动
在使用上,我觉得Emacs-rime 没法实现Shift切换中/英文是一个遗憾,这个是Emacs本身的问题,不过可以通过按键模拟器曲线救国。
是的,输入法和翻译软件配合简直是变量函数命名完美的组合。
其实Shift单按键用x11技术完全可以实现,然后监控Emacs的窗口进行进程间通讯就可以做到告诉Emacs什么时候是单按键事件。
内部输入法,翻译软件会启动自动输入中文,完成翻译后自动返回英文状态。
外部输入法,Emacs没法控制输入法状态,你就会手动在翻译时来回切换输入法。
插件可以实现的,我在 smart-input-source
里面就这样做了。
当然非GUI EMP的话,需要调用外部工具来控制。
还没用过,孤陋寡闻了。
我觉得出发点不同吧,首先 emacs-rime 就是 rime 在 emacs 中的一个前端,简单来说就是
这是我做 emacs-rime 的初衷,因为 fcitx-rime 在 emacs 中的UI不协调,也没有嵌入预览。(当然 Mac 下也是)。emacs 输入法的框架本身可以提供状态管理的能力,非常实用。但是 emacs-rime 并不是单独为了这点而开发的。
这个个人因素很多,我喜欢全屏输词,所以[quote=“goumao, post:484, topic:12048”] 还有什么原因阻止了你们使用外置的OS输入法? [/quote]
我觉得不必过分纠结,毕竟每一个人的输入法使用习惯不同,比如我,我习惯全拼词组输入,不习惯长句输入,所以用 pyim 和 外部输入法效果差不多,但用 pyim 的同时,还附带拼音搜索中文的功能,这个功能对我相当重要
暂时不能,或许可以实现
多谢,那就先这么用着了。主要我输入时是一直盯着第一个候选位置,前面一直动的话,视觉焦点也要跟着跳。
如果使用了overlay来显示待上屏幕词条,就可以实现,pyim以前也遇到类似问题,后来也通过设置偏移解决了
你说的是嵌入的文本吗?emacs-rime 是用的 overlay
overlay-start 就可以获取到 overlay 的开头
(pyim-page-tooltip-show
(let ((func (intern (format "pyim-page-style:%S" pyim-page-style))))
(if (functionp func)
(funcall func page-info)
(pyim-page-style:two-lines page-info)))
(overlay-start pyim-preview-overlay))
我这个 overlay 用的是 after-string,overlay-start 返回了嵌入文本末尾的位置。