我安装emacs-rime后,不设置rime-show-candidate变量时,可以在minibuffer中显示候选词。但我想让候选词跟随显示,设置为posframe
后没有候选词,经测试发现设置为其他任何值也不会显示候选。请问如何解决这问题呢?
我使用AUR上的emacs-git, 版本28,doom emacs配置
你需要的是 posframe
, 如果不能正常显示的话,可能需要看一下 posframe 在你的 emacs 配置下是否工作正常。
doom emacs会安装posframe
的,而且使用了posframe
的ivy-posframe
可以正常工作,使用pyim
时也可以显示候选词。
请问该如何查看posframe
是否正常工作呢,我按下M-x posframe
可以查看到posframe
的函数,也是可以执行的,应该算是没问题吧?
那在 rime-show-candidates 用 posframe
中如果不成功,我觉得应该是发生了一些错误,如果 pyim 能用,那么 posframe 是没有问题的。
可以看看 Messages Buffer 里面有没有信息之类的。
上面的坛友,可以尝试一下重新设计的 smart-input-source
,
- 支持紧凑中英文输入。
中文^
后面输入<space>english<return>
会得到中文english
。 - 支持中文和英文之间加空格。
中文^
后面输入<space><space>english<return>
会得到中文 english
@aqua0210 谢谢你。正是你的设想给了我启发。
你手脚真快。这么快就实现了。赞一个。
有个疑问,为什么最后要来个回车?只用空格切换其实更顺手一些。中文后面加一个空格就切换为英文,英文后面连续输入两个空格就切换为中文。如果以中英文之间没有空格为前提的话,这样的逻辑更方便。如果加个回车,其实是用空格加回车来切换。
加个选项不删空格?
已完成,等melpa更新。
还没仔细评估好:是否一直启用这个特性
现在加了个选项,可以关闭这个特性
这个就不加了。
想前后有空格,直接前后都有两个空格就可以了,
前后各删掉一个都还剩一个,
连续输入两个空格不费事。
关于 smart-input-source
的,
请移步那边讨论。
打乱主贴就不好了。
另外,smart-input-source
的inline english
本身就是受到了emacs-rime
的启发而开发的
不过现在应该走在了前面。
Message没有跟posframe相关的报错啊。。。
不过,在minibuffer里查看候选框也不错。不想折腾了。因为设置了比较大的词库,大部分时间不需要候选框,需要时再去看 minibuffer 也不错,可以降低干扰。
感谢开发了这么好用的工具。
我不太认同使用两个空格,一个空格来达到什么样的效果在 emacs-rime 中会是一个正确的选择。
对于 emacs-rime 这个输入法的方案来说,特别是在集成 rime 的目的下,项目应该有一个明确的边界,以支持输入法的功能为核心,弥补 emacs 自身输入法框架的缺陷为辅助。
让空格不再是空格,显然超出了这个边界。
赞同,我觉得中文后面加一个空格并不好看,太宽,不加空格也不好看,太紧凑了。像Word,Apple手机都是自动加半个空格。这个实现确实不应该是输入法端来做的。
不知道Emacs本身通过elisp能否实现中文后面如果有英文自动加半个空格?
用pangu-spacing?
一个方法是:忍耐
只能忍耐了!
楼上说的pangu-spacing也只是自动加空格,加空格这种方式如果后面需要放到Word或者其他排版软件,要去除空格反而麻烦了。
这个看来是需要Emacs 底层实现了,按目前Emacs对中文的支持程度来说,看来是遥遥无期。
补充:这个问题是是不是可以另外开帖讨论一下,在这里歪楼了
可以实现的,我觉得这个东西的实现应该在 UI 上而不是在内容上。
实现的方式就是在中英文的中间加一个 overlay 来显示一个的空格字符,不影响文本的内容,只影响看上去的样子。
一个样例就是 emacs-rime 的嵌入文本,那个就是用 overlay 实现的。
我感觉这个比较好解决,一个简单的方式是: advice 拷贝命令,把中文和英文之间的空格删除
大佬们讨论的是自动删空格么?
确实很简单,
我在smart-input-source
里实现了。
另外,
很多人说偏好emacs内置输入法
而不使用外部输入法的原因是:
emacs不能记住不同文件使用的是不同外部输入法
这个,我也在smart-input-source
里实现了
我想继续问下emacs-rime
用户,
还有什么原因阻止了你们使用外置的OS输入法?
因为外部的输入会采集用户的输入信息,然后进行大数据分析,泄漏用户隐私。而Rime完全是自己养的输入法,客制化比较自由,词库也是自己定义。这是我喜欢Rime的主要原因。