tumashu / pyim

一个 emacs 中文输入法,支持全拼,双拼,五笔,仓颉和Rime,pyim 是 GNU elpa 包。
891 stars 93 forks source link

主要是用orgmode M-i按多了大拇指疼 #417

Closed lld2001 closed 2 years ago

lld2001 commented 2 years ago

在orgmode中一般都输入中文,输入时经常需要使用M-i来转换,大拇指这两天有点疼,希望帮助改进下org-mode下的探针。现有探针是这样的,:

(setq-default pyim-english-input-switch-functions
                '(pyim-probe-dynamic-english
                  pyim-probe-org-speed-commands
                  pyim-probe-program-mode
                  pyim-probe-isearch-mode
                  pyim-probe-org-structure-template))

  (setq-default pyim-punctuation-half-width-functions
                '(pyim-probe-punctuation-line-beginning
                  pyim-probe-punctuation-after-punctuation))

希望:

  1. 单独的一行,只有空白符:中文
  2. 在orgmode的 Heading, Plain Lists后面:中文
  3. 其它情况,像 pyim-probe-dynamic-english 就很好用

请教能不能帮忙看下如何写探针

lld2001 commented 2 years ago

另外,怎么默认在org-mode中开户pyim。toggle-input-method文档看了下不太明白,一直会弹出选择框

tumashu commented 2 years ago

pyim-probe-auto-english 这个效果可能按键少

lld2001 commented 2 years ago

谢谢,我是看你也用得 pyim-probe-dynamic-english 就设成这个,不是太理解这两个的区别。等我用两天再来反馈。另外,我看最近多了个pyim-force-input-chinese-functions,以为要用这个来实现。

tumashu commented 2 years ago

探针是特别个性化的东西,我用的探针可能未必适合你,pyim-force-input-chinese-functions 也可以用,关键是探针探测环境的的逻辑

lld2001 commented 2 years ago

试用了一天pyim-probe-auto-english,英文少的时间打得很爽,很流畅。但在minibuf中也会一直输入中文就干扰大。能不能解释下要如何写探针,结合这两种的优点。

tumashu commented 2 years ago

pyim-english-input-switch-functions 顾名思义,只要这个列表中的任意一个函数返回t, 就切换到英文输入模式

tumashu commented 2 years ago

pyim-force-input-chinese-functions 的意思是,只要列表中的函数任意一个返回为t, 就强制让pyim-english-input-switch-functions 失效,强制输入中文

tumashu commented 2 years ago

因为我们编写代码,英文输入多,中文输入少,所以pyim-english-input-switch-functions比较常用

lld2001 commented 2 years ago

谢谢耐心解释。pyim-probe-dynamic-english输入英文多的时候比较好用,pyim-probe-auto-english输入中文多的时候比较好用。听了你的解释,大概有两个方向想法:

  1. 设置成pyim-probe-dynamic-english,然后在pyim-force-input-chinese-functions中加个针对 org-mode过滤掉些特殊情况。
  2. 设成个开关,输入英文多的时候用pyim-probe-dynamic-english,否则用pyim-probe-auto-english
lld2001 commented 2 years ago

最后弄了个变通的做法,写了个函数包装下这两个探针,org-mode下使用 auto-english,其他用dynamic-english。谢谢帮助

(defun probe-mixture-english ()
    (if (eq major-mode 'org-mode)
        (pyim-probe-auto-english)
      (pyim-probe-dynamic-english)))
tumashu commented 2 years ago

这不是变通,这是一种合理的做法