正在努力理解这个功能,现在可能已经习惯了现有的逻辑了,后续多注意一下关于标点的问题
我想可能是我们的出发点不同。你是站在输入法设计者的角度看问题,你的考虑没错。我是在使用者的角度看问题,我的需求应该要在输入法的范畴之外寻求解决方案。不过就目前情况看来,已经很好用了。先继续用吧。我自己在rime–inline-ascii后面加advice做点定制就好了。多谢你的工作。
有了这个,可以在中文下使用中文标点了。也不影响 inline ascii 的进入。
请教下,在这种模式下,因为(defun rime--display-preedit ())
已经清空了函数,如果输入的是大写字母开头的话,就没法显示了。
我目前的配置如下,可以解决一半这个问题。但是输入完一个大写的英文单词后必须加空格才能恢复中文。
(setq rime-show-preedit t)
(defun rime--display-preedit ())
(setq rime-disable-predicates '(rime-predicate-prog-in-code-p
rime-predicate-current-uppercase-letter-p
rime-predicate-after-alphabet-char-p
))
@DogLooksGood 报个小问题。readme里面predicate没列全。下面这三两个没列出来:
rime-predicate-auto-english-p- rime-predicate-org-latex-mode-p
- rime-predicate-org-in-src-block-p
容我研究研究正经的解决办法,简单的来说就是能让这个rime–display-preedit实现相同效果,但不需要用 overlay 的办法。
@DogLooksGood 能不能帮我看下我哪里弄错了,不生效啊。
(advice-add 'rime--inline-ascii :before
'(lambda ()
"Delete a blank before entering inline-ascii state"
(when (rime-predicate-space-after-cc-p)
(delete-char -1))))
显示临时文本一般用overlay
(let ((ov (make-overlay (point-max) (point-max))))
(overlay-put ov 'after-string "Fake News!")
ov)
我就是用的这个方式,但是这个 overlay 放置的 point 在屏幕上实际的位置是 overlay 中最后一个字符的位置。所以就没有办法指定一个 point 把 posframe 放在那个位置。
对于这个问题,有什么解决的思路吗?
我打算研究一下emacs-rime,
看看如何让smart-input-source把emacs-rime当作一个input-source.
看有没有冲突
空格这类的脏活,让smart-input-source来做
这个思路太好了。
请教一个关于颜色设置的问题。
我想修改一下候选框的颜色,但是测试下来发现目前最新版本emcs-rime是自动适应主题颜色的,不知道有什么设置还可以定义颜色吗?还是只能通过主题入手修改?
这是我目前的颜色设置,但显示的还是主题的效果:
(setq rime-posframe-properties
(list :background-color "#333333"
:foreground-color "#dcdccc"
:font "Microsoft Yahei"
:internal-border-width 15))
所有的 face 都可以设置,不需要改 posframe 的参数。
这个感觉不难实现,我有时间试试…
多谢指教,通过custom -set-faces 可以生效了。
我用这个方式的话,如果在 insert 一些字符之后停留很久的话,会产生 undo 的 boundary ,有什么处理来避免这个吗?
没有仔细研究过,这种方式是从eim继承过来的