(重新设计)中英文混打:OS输入法管理包 smart-input-source

我这里按ESC,也没能正常切换到Normal了 前天还正常的,昨天更新了一把,不知道是什么原因

  • Windows emacs 27.1
  • Spacemacs develop 最新
  • dotspacemacs-editing-style: 'vim
  • sis 20200814.719

image

你把这些代码都加到 after-init-hook里面呢? 在spacemacs的配置中:

(add-hook 'after-init-hook (lambda() bla bla bla....))

应该是载入顺序的原因。

@henryt @cnstrong
@Voleking 的协助调试下,fix了一个bug
你们再试试最新版,如果是即刻,最好是git版的,
因为melpa有几个小时的延迟。

最新版可能也可以解决你们的问题。
配置里面无需自己手工加hook

1 个赞

在orgmode下面
在每个headline进行输入的时候 输入法都是英文 可能是在headline前面都有 **的符号的缘故 在这种情况下怎么配置呢
小白求教。

Snipaste_2020-10-19_11-35-10

并没有啊。

请吧你的上下文和详细操作步骤描述一下。

windows下使用emacs
配置如下:

(sis-ism-lazyman-config “1033” “2052” 'im-select)

;; enable the /cursor color/ mode

(sis-global-cursor-color-mode t)

;; enable the /respect/ mode

(sis-global-respect-mode t)

;; enable the /follow context/ mode for all buffers

(sis-global-follow-context-mode t)

;; enable the /inline english/ mode for all buffers

(sis-global-inline-mode t) )

其他的模式都操作正常
但是在headline里面初始进入insert模式的时候都是英文输入法 在org文件中用alt enter新建平行headline 或者是org capture模式下都是这样

Snipaste_2020-10-19_12-06-46

我这个截屏,
是在* 我是 之后,
alt-enter 然后进行输入

还是中文啊。

你要描述详细一点:

  • 某个按键之前,上下文是什么样子,截屏
  • 某个按键之后,是什么样的期望,但却是什么样的表现。

初始处于normal state的状态下 输入法为英文状态。

这个时候在这个光标所在的headline下 按ctrl enter
新建headline并进入insert state,期望的是输入法自动切换到中文,但实际却是英文输入法的状态

按org-capture的快捷键,新建一个capture,自动在headline进入insert state,期望的是输入法自动切换到中文,但实际却是英文输入法的状态

嗯。这回彻底明白了。

目前只能强行指定中文,但这种方式不适合你编辑英文文档。

参见

我有计划在这块增加predicate,让用户自己决定如何切换。
不过还没有做。

感谢您的快速回复 我试试看

但我在正文的输入的状态下,中英文切换是没有问题的

我刚才测试了下 在中英文混编的句子里 从normal切换到insert的状态下 会根据光标所在位置的中英文自动切换

新增:sis-follow-context-detectors

用户可以自定义上下文检测子。

!!! 不兼容更新


所有符号中的`-follow`都需要删掉。
比如 `global-folllow-context-mode` 改名为 `global-context-mode`

功能更新


支持org mode中C-RET新建item时,自动切换输入法。
底层代码写好了,但是默认的配置只支持doom。

此处需要原生emacs用户的帮助:

  1. 安装 MELPA
  2. 开启 command-log-mode,并 toggle command log mode buffer
  3. 在org mode buffer中,通过C-RET新建item,
  4. 在log mode buffer里面,看触发了什么命令。
  5. 将此命令报给我。

注意::::::::此贴已废弃,
请移步到新帖:

@jingow
新版已经支持在normal模式下,
C-RET 自适应切换输入法。
具体见我上一个回帖

我之前用emacs-mac,眼馋xwidget换成了emacs-plus@27,一样的配置可是sis不起作用了,请问可能是什么原因呢?

1 个赞

可以的。我现在就用的是emacs-plus@27

你要装一下macism(见sis的readme)。

emacs-mac原生支持输入法切换。
但是emacs-plus需要通过macism这个工具来帮你切换输入法。
相关的配置是自适应自动检测的,你不用改配置。

另外,如果你的sis更新了的话,记得看一下范例配置。
比如sis-follow-context-mode重命名成sis-context-mode了

啊谢谢,没有看到readme前半部分,谢谢!

目前的插件运行的非常的好,但是在org agenda view的状态下,还是中文法输入的状态,比较麻烦,不知道怎么处理,个人配置如下:

(sis-ism-lazyman-config “1033” “2052” 'im-select)

;;为了方便在org mode方便输入中文,尤其是在org-capture的状态下,设置成other

(setq sis-context-fixed 'other)

;; enable the /cursor color/ mode

(sis-global-cursor-color-mode t)

;; enable the /respect/ mode

(sis-global-respect-mode t)

;; enable the /follow context/ mode for all buffers

(sis-global-context-mode t)

;; enable the /inline english/ mode for all buffers

(sis-global-inline-mode t) )

定制 sis-context-detectors 即可。
实际上 sis-context-fixed 只是一个傻瓜化配置。

(defvar sis-context-detectors
  (list (lambda (&rest _) sis-context-fixed)
        (lambda (back-detect fore-detect)
          (when (sis--context-english-p back-detect fore-detect)
            'english))
        (lambda (back-detect fore-detect)
          (when (sis--context-other-p back-detect fore-detect)
            'other)))

  "Detectors to detect the context.
Each detector should:
- have two arguments:
  - back-detect: which is the result of (sis--back-detect-chars).
  - fore-detect: which is the result of (sis--fore-detect-chars).
- return one of the following values:
  - nil: left the determination to later detectors.
  - 'english: English context.
  - 'other: other language context.")
1 个赞

@jingow

oh…
你只是要在进入capture的时候,自动设置中文输入法么?
那不用定制那个变量的方法,
在sis 的配置中,加入这一句这个就行了:

  (add-hook 'org-capture-mode-hook #'sis-set-other)

好了,非常感谢!